CA 证书链中有证书到期。
链或路径验证流程的作用是分层次处理最终实体(用户或计算机)证书和所有证书颁发机构 (CA) 证书,直到证书链在一个受信任的自签名证书处终止为止。通常该证书是一个根 CA 证书。如果 CA 证书的可用性、有效性和链验证出现问题,则 Active Directory 证书服务 (AD CS) 可能会启动失败。
在链中为已到期的 CA 证书重新颁发证书
事件日志中将标识出已到期的证书颁发机构 (CA) 证书。要解决此问题:
检查证书是否已到期。
确认证书链。
如果问题仍存在,启用 CryptoAPI 2.0 诊断功能,解决发现的任何问题,然后重新颁发并重新安装已到期的证书。
要执行这些过程,您必须拥有管理 CA 权限,或者您必须被委派了适当的权限。
检查 CA 证书是否到期
要检查指定的 CA 证书是否已到期,请执行以下操作:
在托管 CA 的计算机上,单击“开始”,指向“管理工具”,然后单击“证书颁发机构”。
右键单击 CA 节点,然后单击“属性”。
已到期的证书将在 CA 证书列表中以文字(已到期)列出。如果所有的 CA 证书已到期,您将需要续订 CA 证书并重新颁发已到期 CA 证书下的任何证书。
要续订 CA 证书,右键单击 CA 节点,指向“所有任务”,然后单击“续订 CA 证书”。
续订 CA 证书完成后,重新启动 CA。
如果列表中存在未到期的证书,找到 CA 版本号与错误消息中密钥 ID 一致的证书。例如,如果密钥 ID 是 2,则 CA 版本为 2.1 或 2.2 的证书是正确的证书。
如果此证书未过期,请检查证书链是否有问题。将证书导出到文件,然后打开命令提示符窗口,键入 certutil -urlfetch -verify<CAcert.cer>,然后按 ENTER。(使用证书文件的名称替换 CAcert.cer。)
启用 CryptoAPI 2.0 诊断功能
要启用 CryptoAPI 2.0 诊断功能,请执行以下操作:
在托管 CA 的计算机上,单击“开始”,指向“管理工具”,然后单击“事件查看器”。
在控制台树中,展开“事件查看器”、“应用程序和服务日志”、“Microsoft”、“Windows”、“CAPI2”。
右键单击“可操作”,然后单击“启用日志”。
单击“开始”,指向“管理工具”,然后单击“服务”。
右键单击“Active Directory 证书服务”,然后单击“重新启动”。
要确认证书颁发机构 (CA) 证书和链是否有效,请执行以下操作:
在托管 CA 的计算机上,单击“开始”,键入 mmc,然后按 ENTER。
如果显示“用户帐户控制”对话框,请确认显示的操作正是你要执行的操作,然后单击“继续”。
在“文件”菜单上,依次单击“添加/删除管理单元”、“证书”、“添加”。
单击“计算机”帐户,然后单击“下一步”。
单击“完成”,然后单击“确定”。
在控制台树中,单击“证书(本地计算机)”,然后单击“个人”。
请确认此存储中存在尚未到期的 CA 证书。
右键单击此证书,然后选择“导出”,以启动“证书导出向导”。
将该证书导出到名为 Cert.cer 的文件。
键入 Start、cmd,然后按 ENTER。
键入 certutil -urlfetch -verify <cert.cer>,然后按 ENTER。
如果没有报告验证、链生成或吊销检查错误,则说明链有效。
Target | Microsoft.Windows.CertificateServices.CARole.2016 | ||
Category | EventCollection | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | High | ||
Remotable | True | ||
Alert Message |
| ||
Event Log | Application |
ID | Module Type | TypeId | RunAs |
---|---|---|---|
DS | DataSource | Microsoft.Windows.EventProvider | Default |
Alert | WriteAction | System.Health.GenerateAlert | Default |
WriteToCertSvcEvents | WriteAction | Microsoft.Windows.CertificateServices.CARole.CertSvcEvents.Publisher | Default |
WriteToDB | WriteAction | Microsoft.SystemCenter.CollectEvent | Default |
<Rule ID="Microsoft.Windows.CertificateServices.CARole.2016.CertSvcEvents.58_Error" 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="String">PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">Microsoft-Windows-CertificationAuthority</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">58</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="Integer">EventLevel</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="Integer">1</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="WriteToDB" TypeID="SC!Microsoft.SystemCenter.CollectEvent"/>
<WriteAction ID="WriteToCertSvcEvents" TypeID="Microsoft.Windows.CertificateServices.CARole.CertSvcEvents.Publisher"/>
<WriteAction ID="Alert" TypeID="Health!System.Health.GenerateAlert">
<Priority>2</Priority>
<Severity>2</Severity>
<AlertMessageId>$MPElement[Name="AlertMessageIDa56c8730d300410882edc1f355f85f5d"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue>$Data/EventDisplayNumber$</SuppressionValue>
<SuppressionValue>$Data/PublisherName$</SuppressionValue>
<SuppressionValue>$Data/LoggingComputer$</SuppressionValue>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>