广西电网有限责任公司信息中心 林孔升 陈勇铭 郑俊明
证书验证过程检测工具研究与开发
广西电网有限责任公司信息中心 林孔升 陈勇铭 郑俊明
为准确并快速地分析数字证书登录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-),男,广西北海人,中级工程师,本科,从事信息安全工作。