廣西電網(wǎng)有限責(zé)任公司信息中心 林孔升 陳勇銘 鄭俊明
證書(shū)驗(yàn)證過(guò)程檢測(cè)工具研究與開(kāi)發(fā)
廣西電網(wǎng)有限責(zé)任公司信息中心 林孔升 陳勇銘 鄭俊明
為準(zhǔn)確并快速地分析數(shù)字證書(shū)登錄Windows操作系統(tǒng)過(guò)程中的故障原因,保障數(shù)字證書(shū)在終端應(yīng)用的可用性,需要設(shè)計(jì)集成化的檢測(cè)工具。本文將探討工具的設(shè)計(jì)及實(shí)現(xiàn)思路,并描述工具實(shí)現(xiàn)的效果。
數(shù)字證書(shū);Windows用戶(hù)認(rèn)證;CRL;檢測(cè)工具;IT運(yùn)維
目前廣西電網(wǎng)公司桌面計(jì)算機(jī)用戶(hù)登錄模式實(shí)現(xiàn)了數(shù)字證書(shū)[1]登錄方式。但是在實(shí)際使用過(guò)程中,遇到用戶(hù)反饋數(shù)字證書(shū)無(wú)法登錄驗(yàn)證等情況。而由于證書(shū)驗(yàn)證過(guò)程的復(fù)雜性,僅憑借Windows操作系統(tǒng)反饋的事件信息,普通桌面運(yùn)維人員難以判斷故障點(diǎn),難以解決故障。因此,基于Windows用戶(hù)認(rèn)證技術(shù)[2]中數(shù)字證書(shū)用戶(hù)認(rèn)證的技術(shù)過(guò)程,設(shè)計(jì)一體化的檢測(cè)工具很有必要。本工具將覆蓋從終端到域控制器(Domain Controller,以下簡(jiǎn)稱(chēng)DC)上證書(shū)驗(yàn)證所需環(huán)境的檢測(cè),并通過(guò)圖形化界面表現(xiàn)出來(lái),讓運(yùn)維人員易于定位故障,便于尋找解決方案。
1.1 現(xiàn)狀
由于數(shù)字證書(shū)登錄過(guò)程涉及Windows安全機(jī)制、AD域技術(shù)體系、數(shù)字證書(shū)認(rèn)證體系三大方面,這三方面又涉及從終端、DC、PKI系統(tǒng)吊銷(xiāo)列表(CRL[3], Certificate Revocation List)發(fā)布點(diǎn)、南方電網(wǎng)根證書(shū)CDP等四層設(shè)備,覆蓋了南方電網(wǎng)與廣西電網(wǎng)之間、廣西電網(wǎng)與內(nèi)部網(wǎng)區(qū)之間、內(nèi)部網(wǎng)區(qū)與終端之間的三層網(wǎng)絡(luò)邊界。當(dāng)數(shù)字證書(shū)登錄失敗時(shí),意味著復(fù)雜的證書(shū)鏈驗(yàn)證過(guò)程中某一環(huán)發(fā)生了故障,桌面運(yùn)維人員即便到達(dá)現(xiàn)場(chǎng)進(jìn)行檢查,僅憑系統(tǒng)反饋的錯(cuò)誤信息,仍難以判斷故障點(diǎn)。甚至,很多情況下,故障點(diǎn)完全不在終端上。因此,排查故障困難重重。
1.2 問(wèn)題分析
深入分析后,我們認(rèn)為需要解決以下11個(gè)技術(shù)問(wèn)題:
(1)按設(shè)備層次劃清檢測(cè)邊界,確保每個(gè)層次的檢測(cè)完整有效;
(2)在終端檢測(cè)和識(shí)別當(dāng)前用戶(hù)證書(shū)的信息,并判斷其有效性。
(3)根據(jù)微軟的AD域官方技術(shù)資料,檢測(cè)終端與DC之間的網(wǎng)絡(luò)端口可連接性。
(4)檢測(cè)終端相關(guān)的Windows服務(wù)是否已經(jīng)正確啟動(dòng)。
(5)檢測(cè)終端是否能訪(fǎng)問(wèn)DC的LDAP[4]服務(wù),以便驗(yàn)證DC服務(wù)器證書(shū)的有效性。
(6)檢測(cè)終端與DC之間AD域必備的TCP連接端口可用性。
(7)檢測(cè)終端上是否可以通過(guò)certutil.exe工具驗(yàn)證DC證書(shū)。
(8)檢測(cè)DC上是否已經(jīng)正確在“根證書(shū)頒發(fā)機(jī)構(gòu)”中安裝南方電網(wǎng)根證書(shū)及其吊銷(xiāo)列表。
(9)檢測(cè)DC是否能訪(fǎng)問(wèn)PKI系統(tǒng)的CDP,以便驗(yàn)證用戶(hù)證書(shū)的有效性。
(10)檢測(cè)DC上相關(guān)的Windows服務(wù)是否已經(jīng)正確啟動(dòng)。
(11)檢測(cè)DC上是否可以通過(guò)certutil.exe工具驗(yàn)證用戶(hù)的數(shù)字證書(shū)。
2.1 預(yù)期效果
(1)按終端、DC兩個(gè)設(shè)備層次分別開(kāi)發(fā)檢測(cè)工具。
(2)桌面運(yùn)維工程師可以通過(guò)使用終端檢測(cè)工具,借助圖形化界面完成檢測(cè),快速識(shí)別終端環(huán)境故障。
(3)平臺(tái)運(yùn)維工程師可以通過(guò)使用DC檢測(cè)工具,借助圖形化界面完成檢測(cè),快速識(shí)別服務(wù)器環(huán)境故障。
2.2 技術(shù)架構(gòu)設(shè)計(jì)
工具包括2個(gè)子程序,如圖2-1所示:
圖2-1 系統(tǒng)結(jié)構(gòu)圖
2.3 技術(shù)實(shí)現(xiàn)
2.3.1 編碼平臺(tái)選擇
由于要操作Windows API,本工具使用Visual Studio .NET 2013開(kāi)發(fā),采用C#語(yǔ)言編碼。
2.3.2 檢測(cè)證書(shū)安裝正確并有效的判斷技術(shù)
引用.NET自帶的System.Security.Cryptography.X509Certi fi cates
命名空間,使用X509Store類(lèi)讀取當(dāng)前用戶(hù)的數(shù)字證書(shū)內(nèi)容。但是,由于X509Store類(lèi)無(wú)法識(shí)別并讀取證書(shū)的吊銷(xiāo)列表(CRL)地址,因此我們需要引用第三方的類(lèi)庫(kù)Bouncy Castle Cryptography API來(lái)操作,讀取CRL地址。
通過(guò)代碼,我們完成了證書(shū)詳細(xì)內(nèi)容的讀取,判斷是否能讀取證書(shū)、證書(shū)是不是在有效期內(nèi)、列出證書(shū)的吊銷(xiāo)列表位置并可嘗試訪(fǎng)問(wèn)它。
圖2-2 證書(shū)詳細(xì)信息截圖
2.3.3 檢測(cè)DC的LDAP協(xié)議可訪(fǎng)問(wèn)性判斷技術(shù)
終端Windows系統(tǒng)需要通過(guò)LDAP協(xié)議訪(fǎng)問(wèn)DC的389端口,以讀取DC的服務(wù)器證書(shū)的吊銷(xiāo)列表。我們通過(guò)使用System.DirectoryServices[5]命名空間中的DirectoryEntry類(lèi),可以檢測(cè)DC的LDAP協(xié)議可訪(fǎng)問(wèn)性,可以判斷DC的LDAP服務(wù)是否正常運(yùn)行以及服務(wù)器證書(shū)的吊銷(xiāo)列表是否可訪(fǎng)問(wèn)。
2.3.4 檢測(cè)終端到DC之間的TCP網(wǎng)絡(luò)連接技術(shù)
終端與DC之間需要開(kāi)通Active Directory運(yùn)行所必須的網(wǎng)絡(luò)連接端口,而由于管理原因,這些端口可能會(huì)被關(guān)閉,因此必須檢測(cè)這些必備通道的可用性。
圖2-3 網(wǎng)絡(luò)端口連通性測(cè)試結(jié)果截圖
2.3.5 檢測(cè)必備Windows服務(wù)是否啟動(dòng)的技術(shù)
為了進(jìn)行證書(shū)驗(yàn)證、以及使用AD域,必須啟動(dòng)必備的Windows服務(wù)。
2.3.6 通過(guò)certutil.exe工具檢測(cè)驗(yàn)證服務(wù)器證書(shū)及用戶(hù)證書(shū)
certutil.exe是微軟公司提供的證書(shū)驗(yàn)證程序,我們將其整合到了工具中,這樣使用者只需要在圖形化的界面中選擇要驗(yàn)證的證書(shū),即可得到結(jié)果。
圖2-4 證書(shū)驗(yàn)證結(jié)果截圖
圖3-1 在終端檢測(cè)證書(shū)登錄環(huán)境程序界面
(1)研發(fā)工具后,使原本不清晰的終端檢測(cè)和DC服務(wù)器檢測(cè)邊界清晰化,并通過(guò)工具確定檢測(cè)內(nèi)容。有利于劃清運(yùn)維邊界,使工作更專(zhuān)業(yè)。
(2)原來(lái)手工檢測(cè),起碼需要半小時(shí)才能完成相關(guān)項(xiàng)目測(cè)試。使用工具檢測(cè),只需要30秒即可完成5個(gè)方向的測(cè)試。
(3)手工測(cè)試沒(méi)有集成環(huán)境,只能通過(guò)命令行操作,通過(guò)記事本記錄;通過(guò)工具檢測(cè),全部以集成的圖形化界面方式展現(xiàn)給運(yùn)維人員,不會(huì)遺漏或誤操作。
(4)集成化檢測(cè)工具將技術(shù)知識(shí)固化到工具中,大大降低了工作難度,使得即使不了解整體技術(shù)架構(gòu)的運(yùn)維人員仍然可以通過(guò)工具發(fā)現(xiàn)故障或排除故障。如需進(jìn)一步聯(lián)系外包技術(shù)支持團(tuán)隊(duì),也能通過(guò)更準(zhǔn)確的信息表達(dá),降低溝通成本。
通過(guò)證書(shū)驗(yàn)證過(guò)程檢測(cè)工具的研發(fā),降低了數(shù)字證書(shū)登錄應(yīng)用的運(yùn)維技術(shù)要求,提高了專(zhuān)項(xiàng)檢測(cè)工作的效率。將來(lái)可根據(jù)數(shù)字證書(shū)應(yīng)用過(guò)程中的發(fā)生的更多問(wèn)題,不斷完善和豐富此工具,使之成為面向數(shù)字證書(shū)應(yīng)用的專(zhuān)業(yè)服務(wù)工具集。
[1]洪琳,李展.數(shù)字簽名、數(shù)字信封和數(shù)字證書(shū)[J].計(jì)算機(jī)應(yīng)用,2000,20(02):41-42.
[2]謝四江.Windows用戶(hù)認(rèn)證技術(shù)比較[J].北京電子科技學(xué)院學(xué)報(bào),第11卷第一期,2003.06:40-43.
[3]張曼曼,劉志遠(yuǎn).數(shù)字證書(shū)撤銷(xiāo)方法的研究現(xiàn)狀[J].黃石理工學(xué)院學(xué)報(bào),2007.05:53-55.
[4]活動(dòng)目錄概述.https://www.microsoft.com/china/windows2000/ guide/server/features/dirlist.mspx.
[5]王磊,顧俊.在NET 環(huán)境下開(kāi)發(fā) AD 應(yīng)用程序[C].2006電力行業(yè)信息化年會(huì)會(huì)議論文集,2006:847-851.
林孔升(1986-),男,廣西南寧人,中級(jí)工程師,工學(xué)碩士,從事信息運(yùn)維工作。
陳勇銘(1983-),男,廣西南寧人,中級(jí)工程師,工學(xué)碩士,從事信息運(yùn)維工作。
鄭俊明(1982-),男,廣西北海人,中級(jí)工程師,本科,從事信息安全工作。