ADCS - 如何诊断证书请求被策略模块拒绝的确切原因?

ADCS - 如何诊断证书请求被策略模块拒绝的确切原因?

我需要制定操作程序来审核并了解特定请求为何被 Active Directory 证书服务 (ADCS) 策略模块拒绝。

我尝试在 GUI 中打开所有日志记录(复选框),并检查了事件日志。我只看到每个失败请求都有一个事件日志条目,但我没有明确的方法来确定导致失败的原因。失败的示例如下:

Active Directory 证书服务拒绝了请求 4,因为证书颁发机构的证书包含无效数据。0x80094005 (-2146877435 CERTSRV_E_INVALID_CA_CERTIFICATE)。该请求针对的是 CN=Issue01a、CN=Bits.com、OU=For email security、O=Bits LLC、C=US。其他信息:被策略模块拒绝

上面的例子是一个子 CA,它的有效期有意超出了父 CA 的有效期。

我希望从上面的错误代码或其他位置得出该原因。

我做了什么: 在谷歌中搜索错误“2146877435”,结果就出现了这篇文章。前几页的结果都没有错误代码和原因的列表。

答案1

此链接描述如何从证书服务中提取更多日志。可能需要重新启动。

要为本机 Windows CertEnroll 客户端启用调试日志记录,请执行以下命令:

Certutil –setreg enroll\debug 0xffffffe3 日志文件位于以下位置:%windir%\CertEnroll.log

certutil –setreg ca\debug 0xffffffe3 日志文件位于以下位置:%windir%\certsrv.log

答案2

斯普雷蒂克先生 评论

值得一提的是,该错误代码的另一个可能原因是策略与尝试的操作不兼容:具体来说,尝试使用 pathlen 为 0 的 CA 签署新的 CA(因此 CA 数据没有任何“无效”之处,它只是一种不适当的操作)。

因为这正是我的问题,所以我想在答案中保留这个评论并进一步详细说明:

在设置根 CA 之前,您必须在C:\Windows\CAPolicy.inf以下部分的文件中允许子 CA:

[BasicConstraintsExtension]
PathLength=0

如果PathLength设置为0,则不允许有子 CA。如果设置为1,则可以有子 CA。如果设置为2,则可以有子 CA,子 CA 还可以有子 CA,依此类推。如果未定义或设置为none,则可以有无限级别的子 CA。安装根 CA 后,您无法更改此值。

相关内容