证书服务无法使用 key recovery agent 证书。
Active Directory 证书服务 (AD CS) 需要 key recovery agent 证书、交换 (XCHG) 证书和密钥才能支持密钥存档。对于公钥基础设施而言,key recovery agent 证书、XCHG 证书以及创建这些证书所需的加密服务提供程序 (CSP) 是否正常工作至关重要。
确定并使用有效的 key recovery agent 证书
要解决此问题,您需要确定找出所用的 key recovery agent 证书不成功的原因。通常,当 key recovery agent 证书过期或被吊销时,会变得无法使用。
要执行此过程,您必须拥有管理 CA 的权限,或者您必须被委派了适当的权限。
要检查 key recovery agent 证书的有效性,请执行以下操作:
在托管 CA 的计算机上,单击“开始”,指向“管理工具”,然后单击“证书颁发机构”。
右键单击证书颁发机构 (CA) 名称,然后单击“属性”。
单击“恢复代理”选项卡,然后检查事件日志中所列索引对应的 key recovery agent 证书的状态是否为“过期”或“无效”。要检查证书的有效性,请确认其有效期,以及它包含的扩展密钥用法 (EKU) 扩展名是否显示此证书可用来进行密钥恢复。
如果证书已过期或无效,请删除无效的 key recovery agent 证书,然后分配新的证书。您可能需要发布新的 key recovery agent 证书,然后才能通过 CA 进行注册。
有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkID=95698。
要确认密钥存档和恢复是否正常,请执行以下操作:
在托管 CA 的计算机上,单击“开始”,指向“管理工具”,然后单击“证书颁发机构”。
在控制台树中,右键单击证书颁发机构 (CA),然后单击“属性”。
单击“恢复代理”选项卡。
确认列出的所有 key recovery agent 证书均“有效”。
在证书模板容器中,确认已在“请求处理”选项卡中为加密证书配置了“把使用者的加密私钥存档” 选项。
打开一个用户帐户的“证书”管理单元,该用户帐户需具有根据此证书模板注册证书的权限。
在控制台树中,右键单击“个人”,指向“所有任务”,然后单击“申请新证书”,以启动“证书注册”向导。
根据加密模板注册一个证书,然后确认注册是否成功完成且没有报错。
注册完成后,打开“证书颁发机构”管理单元。
在控制台树中,单击“颁发的证书”。
找到刚才颁发的证书条目,然后将“存档的密钥”列添加到管理单元显示列表中。
确认“是”一字显示在刚才颁发的证书的“存档的密钥”列中。
Target | Microsoft.Windows.CertificateServices.CARole.2016 |
Category | EventCollection |
Enabled | True |
Event_ID | 85 |
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.85" 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">85</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>