Windows Server 2016证书吊销检查失败及certutil.exe验证报错求助
certutil.exe -verify证书吊销检查失败(0x80092004)的问题 我之前帮不少用户解决过这个Windows Server 2016特有的证书验证问题,结合实操经验给你几个可行的排查和修复步骤:
先确认CRL分发点的可访问性
Windows Server 2016对证书吊销列表(CRL)的验证逻辑比2012/2008严格很多。你可以先打开目标证书的属性,找到「CRL分发点」里的URL,直接在服务器的浏览器里访问这个地址,看能不能正常下载到CRL文件。如果是内网CA颁发的证书,还要检查服务器是否能连通CRL服务器,有没有防火墙或代理阻碍了请求。手动指定CRL文件做验证测试
如果自动获取CRL出问题,试试绕开自动流程,手动指定CRL文件来验证,用这个命令:certutil.exe -verify -urlfetch -crl "你的证书文件路径.cer" "本地CRL文件路径.crl"
如果这样能验证成功,基本就能确定是自动获取CRL的环节出了问题,而不是证书本身的验证逻辑问题。清理CRL缓存并检查证书链
本地的CRL缓存可能过期或损坏,先清理掉:certutil.exe -urlcache crl delete
清理完后重新运行验证命令。另外还要确认证书的完整链是否正确导入到了服务器的受信任根证书颁发机构存储里,证书链不完整也会触发这个CRYPT_E_NOT_FOUND错误。调整组策略里的证书验证规则
打开组策略编辑器(gpedit.msc),导航到计算机配置>Windows设置>安全设置>公钥策略>证书路径验证设置,切换到「吊销」选项卡,暂时把「吊销检查」设置为「忽略吊销服务器不可用的情况」,然后测试验证是否成功。这一步能快速排查是不是CRL服务器不可达导致的问题。安装最新的系统补丁
Windows Server 2016的某些累积更新修复过证书验证相关的bug,建议你给服务器安装最新的安全更新和累积补丁,尤其是和公钥基础设施(PKI)相关的更新,说不定能直接解决这个兼容性问题。
之所以Windows Server 2012/2008没出现这个问题,是因为2016版本更新了证书验证引擎,对CRL的获取、校验流程做了更严格的规范,之前旧版本的宽松处理逻辑在2016里不再适用,所以才会出现之前没遇到的错误。
内容的提问来源于stack exchange,提问作者Shravan T S




