廣西電網有限責任公司信息中心 林孔升 陳勇銘 鄭俊明
證書驗證過程檢測工具研究與開發
廣西電網有限責任公司信息中心 林孔升 陳勇銘 鄭俊明
為準確并快速地分析數字證書登錄Windows操作系統過程中的故障原因,保障數字證書在終端應用的可用性,需要設計集成化的檢測工具。本文將探討工具的設計及實現思路,并描述工具實現的效果。
數字證書;Windows用戶認證;CRL;檢測工具;IT運維
目前廣西電網公司桌面計算機用戶登錄模式實現了數字證書[1]登錄方式。但是在實際使用過程中,遇到用戶反饋數字證書無法登錄驗證等情況。而由于證書驗證過程的復雜性,僅憑借Windows操作系統反饋的事件信息,普通桌面運維人員難以判斷故障點,難以解決故障。因此,基于Windows用戶認證技術[2]中數字證書用戶認證的技術過程,設計一體化的檢測工具很有必要。本工具將覆蓋從終端到域控制器(Domain Controller,以下簡稱DC)上證書驗證所需環境的檢測,并通過圖形化界面表現出來,讓運維人員易于定位故障,便于尋找解決方案。
1.1 現狀
由于數字證書登錄過程涉及Windows安全機制、AD域技術體系、數字證書認證體系三大方面,這三方面又涉及從終端、DC、PKI系統吊銷列表(CRL[3], Certificate Revocation List)發布點、南方電網根證書CDP等四層設備,覆蓋了南方電網與廣西電網之間、廣西電網與內部網區之間、內部網區與終端之間的三層網絡邊界。當數字證書登錄失敗時,意味著復雜的證書鏈驗證過程中某一環發生了故障,桌面運維人員即便到達現場進行檢查,僅憑系統反饋的錯誤信息,仍難以判斷故障點。甚至,很多情況下,故障點完全不在終端上。因此,排查故障困難重重。
1.2 問題分析
深入分析后,我們認為需要解決以下11個技術問題:
(1)按設備層次劃清檢測邊界,確保每個層次的檢測完整有效;
(2)在終端檢測和識別當前用戶證書的信息,并判斷其有效性。
(3)根據微軟的AD域官方技術資料,檢測終端與DC之間的網絡端口可連接性。
(4)檢測終端相關的Windows服務是否已經正確啟動。
(5)檢測終端是否能訪問DC的LDAP[4]服務,以便驗證DC服務器證書的有效性。
(6)檢測終端與DC之間AD域必備的TCP連接端口可用性。
(7)檢測終端上是否可以通過certutil.exe工具驗證DC證書。
(8)檢測DC上是否已經正確在“根證書頒發機構”中安裝南方電網根證書及其吊銷列表。
(9)檢測DC是否能訪問PKI系統的CDP,以便驗證用戶證書的有效性。
(10)檢測DC上相關的Windows服務是否已經正確啟動。
(11)檢測DC上是否可以通過certutil.exe工具驗證用戶的數字證書。
2.1 預期效果
(1)按終端、DC兩個設備層次分別開發檢測工具。
(2)桌面運維工程師可以通過使用終端檢測工具,借助圖形化界面完成檢測,快速識別終端環境故障。
(3)平臺運維工程師可以通過使用DC檢測工具,借助圖形化界面完成檢測,快速識別服務器環境故障。
2.2 技術架構設計
工具包括2個子程序,如圖2-1所示:

圖2-1 系統結構圖
2.3 技術實現
2.3.1 編碼平臺選擇
由于要操作Windows API,本工具使用Visual Studio .NET 2013開發,采用C#語言編碼。
2.3.2 檢測證書安裝正確并有效的判斷技術
引用.NET自帶的System.Security.Cryptography.X509Certi fi cates
命名空間,使用X509Store類讀取當前用戶的數字證書內容。但是,由于X509Store類無法識別并讀取證書的吊銷列表(CRL)地址,因此我們需要引用第三方的類庫Bouncy Castle Cryptography API來操作,讀取CRL地址。

通過代碼,我們完成了證書詳細內容的讀取,判斷是否能讀取證書、證書是不是在有效期內、列出證書的吊銷列表位置并可嘗試訪問它。

圖2-2 證書詳細信息截圖
2.3.3 檢測DC的LDAP協議可訪問性判斷技術
終端Windows系統需要通過LDAP協議訪問DC的389端口,以讀取DC的服務器證書的吊銷列表。我們通過使用System.DirectoryServices[5]命名空間中的DirectoryEntry類,可以檢測DC的LDAP協議可訪問性,可以判斷DC的LDAP服務是否正常運行以及服務器證書的吊銷列表是否可訪問。

2.3.4 檢測終端到DC之間的TCP網絡連接技術
終端與DC之間需要開通Active Directory運行所必須的網絡連接端口,而由于管理原因,這些端口可能會被關閉,因此必須檢測這些必備通道的可用性。


圖2-3 網絡端口連通性測試結果截圖
2.3.5 檢測必備Windows服務是否啟動的技術
為了進行證書驗證、以及使用AD域,必須啟動必備的Windows服務。

2.3.6 通過certutil.exe工具檢測驗證服務器證書及用戶證書
certutil.exe是微軟公司提供的證書驗證程序,我們將其整合到了工具中,這樣使用者只需要在圖形化的界面中選擇要驗證的證書,即可得到結果。


圖2-4 證書驗證結果截圖

圖3-1 在終端檢測證書登錄環境程序界面
(1)研發工具后,使原本不清晰的終端檢測和DC服務器檢測邊界清晰化,并通過工具確定檢測內容。有利于劃清運維邊界,使工作更專業。
(2)原來手工檢測,起碼需要半小時才能完成相關項目測試。使用工具檢測,只需要30秒即可完成5個方向的測試。
(3)手工測試沒有集成環境,只能通過命令行操作,通過記事本記錄;通過工具檢測,全部以集成的圖形化界面方式展現給運維人員,不會遺漏或誤操作。
(4)集成化檢測工具將技術知識固化到工具中,大大降低了工作難度,使得即使不了解整體技術架構的運維人員仍然可以通過工具發現故障或排除故障。如需進一步聯系外包技術支持團隊,也能通過更準確的信息表達,降低溝通成本。
通過證書驗證過程檢測工具的研發,降低了數字證書登錄應用的運維技術要求,提高了專項檢測工作的效率。將來可根據數字證書應用過程中的發生的更多問題,不斷完善和豐富此工具,使之成為面向數字證書應用的專業服務工具集。
[1]洪琳,李展.數字簽名、數字信封和數字證書[J].計算機應用,2000,20(02):41-42.
[2]謝四江.Windows用戶認證技術比較[J].北京電子科技學院學報,第11卷第一期,2003.06:40-43.
[3]張曼曼,劉志遠.數字證書撤銷方法的研究現狀[J].黃石理工學院學報,2007.05:53-55.
[4]活動目錄概述.https://www.microsoft.com/china/windows2000/ guide/server/features/dirlist.mspx.
[5]王磊,顧俊.在NET 環境下開發 AD 應用程序[C].2006電力行業信息化年會會議論文集,2006:847-851.
林孔升(1986-),男,廣西南寧人,中級工程師,工學碩士,從事信息運維工作。
陳勇銘(1983-),男,廣西南寧人,中級工程師,工學碩士,從事信息運維工作。
鄭俊明(1982-),男,廣西北海人,中級工程師,本科,從事信息安全工作。