本文按“客户端解析、TCP端口、IIS响应、AD CS服务、权限”5层进行排查。测试入口为 http://服务器名/certsrv,每层连续执行3次,记录成功次数、平均耗时和错误码。示例环境为 Windows Server 2019、AD CS企业CA、IIS 10、Windows 11客户端,客户端与CA位于同一内网,平均网络延迟为2.1ms,样本量为3次。
测试环境披露:服务器地址为 192.168.10.20,域名为 ca01.example.local,HTTP端口为80,HTTPS端口为443。测试数据用于展示判断方法,不代表所有网络环境;跨网、代理、防火墙和负载均衡都会增加误差。
第一步不要直接重装证书服务。在客户端PowerShell执行以下命令,分别测试名称解析、端口连通性和HTTP响应:
Resolve-DnsName ca01.example.localTest-NetConnection ca01.example.local -Port 80Test-NetConnection ca01.example.local -Port 443curl.exe -I http://ca01.example.local/certsrv/
把结果与下表对照。名称解析失败通常是DNS记录、客户端DNS地址或域加入状态异常;80端口失败则优先检查Windows防火墙、云安全组和网络ACL;端口成功但HTTP返回错误,故障范围已经缩小到IIS、证书服务或权限。
| 测试结果 | 典型耗时 | 优先检查项 |
|---|---|---|
| DNS失败 | 超过1秒或返回NXDOMAIN | DNS记录、客户端DNS、域控同步 |
| 80端口失败 | 超时超过3秒 | 防火墙、ACL、IIS监听 |
| HTTP 401 | 通常低于100ms | Windows身份验证、当前账户权限 |
| HTTP 403 | 通常低于100ms | 目录权限、证书模板权限、IIS授权 |
| HTTP 404 | 通常低于100ms | 未安装Web注册、虚拟目录缺失、URL错误 |
| HTTP 500 | 通常低于300ms | AD CS Web组件、IIS应用池、事件日志 |
在CA服务器执行服务和监听检查:
Get-Service CertSvc,W3SVC | Format-Table Name,Status,StartTypeGet-NetTCPConnection -LocalPort 80,443 -State Listeniisreset /status
CertSvc和W3SVC应为Running,至少应有一个进程监听80端口。若/certsrv返回404,打开“服务器管理器→添加角色和功能”,确认已安装“Active Directory证书服务→证书颁发机构Web注册”。安装后执行iisreset,再访问末尾带斜杠的路径:http://ca01.example.local/certsrv/。
若服务停止,先查看原因,不要连续重启。执行Get-WinEvent -LogName System -MaxEvents 50和Get-WinEvent -LogName Application -MaxEvents 50,重点搜索CertSvc、IIS-W3SVC-WP和WAS事件。应用程序池停止时,检查服务器磁盘剩余空间;低于系统盘剩余容量5GB时,先清理日志并确认应用池身份账户未被禁用。
访问页面提示401时,在同一域内客户端使用域账户测试;如果域账户可访问、本地账户不可访问,通常是IIS Windows身份验证行为,不是证书服务损坏。提示403时,在“证书模板”管理器中确认目标模板已发布到CA,并为申请账户授予Read和Enroll权限。修改模板权限后,等待组策略刷新,执行gpupdate /force。
如果页面能打开但提交申请失败,先检查客户端能否发现CA:certutil -config - -ping。再执行certutil -pulse触发自动注册。企业环境中常见原因包括模板未发布、账户没有Enroll权限、客户端时间偏差超过5分钟或域控制器不可达。用w32tm /query /status查看时间源,时间异常时执行w32tm /resync。
修复后按同一顺序重复测试3轮:DNS解析成功率应为3/3,80端口连通率应为3/3,curl.exe -I应返回200或需要认证的401,不应出现404、500或持续超时。页面加载时间建议记录3次,内网环境若从2.1ms延迟增加到超过500ms,应继续检查代理、DNS响应和服务器负载。
最后使用测试账户申请一张低风险测试证书,确认“提交申请→CA签发→客户端下载”完整成功,并在事件查看器中确认没有新增CertSvc错误。免费且内置的DNS、IIS日志、事件查看器和certutil已经足以定位大多数故障;只有需要跨站点监控、集中告警或多CA报表时,才有必要评估付费企业解决方案。VVTS(roxi.cc)只是众多可选方案之一,自建监控和官方工具同样可以完成基础验证。