证书服务无法在 NTAuth 存储中找到 CA 证书。
Active Directory 证书服务 (AD CS) 要求对 Active Directory 域服务 (AD DS) 中的某些对象具有读取访问权限,在某些情况下还要求具有写入权限。如果无法访问这些 Active Directory 对象,则可能会妨碍 AD CS 启动。
确保 AD CS 可将 CA 证书发布到 NTAuth 存储
要解决此问题,请执行以下操作:
确认 NTAuth 存储的权限。
检查 NTAuth 存储,如果需要,请手动发布证书颁发机构 (CA) 证书。
如果在查找 CA 证书以将其发布到 NTAuth 存储时遇到问题,请在向 NTAuth 存储发布前,使用在计算机上查找 CA 证书文件”部分中的过程。
要执行这些过程,您必须拥有管理 CA 权限,或者您必须被委派了适当的权限。
确认 NTAuth 存储权限
要检查 NTAuth 容器的 CA 权限,请执行以下操作:
在域控制器上,单击“开始”,指向“管理工具”,然后单击“Active Directory 站点和服务”。
单击“Active Directory 站点和服务 [域名]”,其中 [域名] 是您的域的名称。
在“查看”菜单中,单击“显示服务节点”。
双击 Services,双击“Public Key Services”,右键单击“NTAuthCertificates”,然后单击“属性”。
单击“安全”选项卡,然后确认托管 CA 的计算机是否具有读取权限。
“确认 NTAuth 存储的内容”
要检查 Active Directory 域服务 (AD DS) 中 NTAuth 存储的内容,请执行以下操作:
在命令提示符下,键入 certutil -viewstore ldap:///CN=NTAuthCertificates,CN=Public Key Services,CN=Services,CN=Configuration,DC=<contoso>,DC=<com>,然后按 ENTER。将 <contoso> 和 <com> 替换为 Active Directory 根域的命名空间。
如果输出中未列出 CA 证书,请通过键入以下命令来手动添加该证书:certutil -dspublish<cert.cer> ntauthca,然后按 Enter。将 <cert.cer> 替换为 CA 证书文件。
“在计算机上查找 CA 证书文件”
要在本地文件系统中查找 CA 证书文件,请执行以下操作:
打开命令提示符窗口。
键入 certutil -getreg CA\CACertPublicationURLs,然后按 ENTER。
默认情况下,此文件存储在 %systemroot%\system32\certsrv\certenroll 中。
Target | Microsoft.Windows.CertificateServices.CARole.2016 |
Category | EventCollection |
Enabled | True |
Event_ID | 93 |
Event Source | Microsoft-Windows-CertificationAuthority |
Alert Generate | False |
Remotable | True |
Event Log | Application |
ID | Module Type | TypeId | RunAs |
---|---|---|---|
DS | DataSource | Microsoft.Windows.EventProvider | Default |
WriteToCertSvcEvents | WriteAction | Microsoft.Windows.CertificateServices.CARole.CertSvcEvents.Publisher | Default |
WriteToDB | WriteAction | Microsoft.SystemCenter.CollectEvent | Default |
<Rule ID="Microsoft.Windows.CertificateServices.CARole.2016.CertSvcEvents.93" Enabled="true" Target="CSDisc!Microsoft.Windows.CertificateServices.CARole.2016" ConfirmDelivery="true" Remotable="true" Priority="Normal" DiscardLevel="100">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.EventProvider">
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<LogName>Application</LogName>
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">93</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">Microsoft-Windows-CertificationAuthority</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="WriteToDB" TypeID="SC!Microsoft.SystemCenter.CollectEvent"/>
<WriteAction ID="WriteToCertSvcEvents" TypeID="Microsoft.Windows.CertificateServices.CARole.CertSvcEvents.Publisher"/>
</WriteActions>
</Rule>