无法检查吊销
链或路径验证流程的作用是分层次处理最终实体(用户或计算机)证书和所有证书颁发机构 (CA) 证书,直到证书链在一个受信任的自签名证书处终止为止。通常该证书是一个根 CA 证书。如果 CA 证书的可用性、有效性和链验证出现问题,则 Active Directory 证书服务 (AD CS) 可能会启动失败。
请加载并确认有效的 CA 证书和链
您需要确认有效的证书颁发机构 (CA) 证书是可以访问的,以便进行证书链验证。通过确认以下内容可以解决与查找有效 CA 证书相关的问题:
托管 CA 的计算机上有可用的有效 CA 证书。
AIA 容器中存在有效 CA 证书。
该 CA 证书链可以验证。
如果链中 CA 的证书吊销列表 (CRL) 已到期,则会生成一个新的 CRL。
要执行这些过程,您必须拥有管理 CA 权限,或者您必须被委派了适当的权限。
请确认托管 CA 的计算机上存在有效的 CA 证书
要确认托管 CA 的计算机上存在可用的有效 CA 证书,请执行以下操作:
单击“开始”,键入 mmc,然后按 ENTER。
如果出现“用户帐户控制”对话框,请确认它显示的是所需操作,然后单击“继续”。
在“文件”菜单上,依次单击“添加/删除管理单元”、“证书”、“添加”。
单击“计算机”帐户,然后单击“下一步”。
单击“完成”,然后单击“确定”。
在控制台树中,单击“证书(本地计算机)”,然后单击“个人”。
请确认此存储中存在尚未到期的 CA 证书。
请确认 AIA 容器中存在有效的 CA 证书
要确认 AIA 容器中是否存在有效 CA 证书,请执行以下操作:
单击“开始”,指向“管理工具”,然后单击“Active Directory 站点和服务”。
单击“Active Directory 站点和服务”[域名]。
在“查看”菜单中,单击“显示服务节点”。
双击 Services,再双击 Public Key Services,然后单击 AIA。
确认 AIA 容器中存在尚未到期的 CA 证书。
验证 CA 证书链
要验证 CA 证书链,请执行以下操作:
打开命令提示符窗口。
在 CA 证书上键入 certutil -urlfetch -verify,然后按 ENTER。
请确认有可用的 AIA 容器和 CRL 分发点网络位置,链中的所有证书均有效且未吊销,并且有可用的有效 CRL。
如果 AIA 或 CRL 分发点位置不可用,请找出并解决妨碍它们访问的问题。
如果链中有到期或吊销的证书,应对其进行续订。如果某个 CA 证书需要重新签发,则链中此证书下的所有证书都需要重新签发。
如果链中 CA 的 CRL 已到期,则在此 CA 上生成新的基本和增量 CRL,并将这些 CRL 复制到所需位置。
如果 CA 已脱机,您可能需要重新启动它。
检查和发布 CRL
要检查并在需要时发布新的 CRL,请执行以下操作:
在引起问题的 CA 上,检查当前发布的 CRL,其默认在文件夹 %windir%\System32\CertSrv\CertEnroll 中创建。
如果该位置中的当前 CRL 已过期或无效,请打开命令提示符窗口,键入 certutil -CRL,然后按 ENTER 发布新的 CRL。
要生成新的基本和增量 CRL,请执行以下操作:
在托管 CA 的计算机上,单击“开始”,指向“管理工具”,然后选择“证书颁发机构”。
在控制台树中,单击“吊销的证书”。
在“操作”菜单上,指向“所有任务”,然后单击“发布”。
选择“新的 CRL”以覆盖之前发布的 CRL,或选择“增量 CRL”以便只发布当前的增量 CRL。
要使用 Certutil 命令行工具创建 CRL,请执行以下操作:
在托管 CA 的计算机上,单击“开始”,键入 cmd,然后按 ENTER。
键入 certutil -CRL,然后按 ENTER。
要使用 Certutil 命令行工具将 CRL 发布到 AD DS,请执行以下操作:
打开命令提示符窗口。
键入 certutil -dspublish "<crlname.crl>" ldap:///CN=<CA name>,CN=<CA hostname>,CN=CDP,CN=Public Key Services,CN=Ser vices,CN=Configuration,DC=<contoso>,DC=<com>?certificateRevocationList?base?objectClass=cRLDistributionPoint,然后按 ENTER。
用 CRL 文件的名称替换 crlname.crl,并用 CA 名称和运行 CA 的主机的名称替换您的 CA 名称和 CA 主机名,然后用您的 Active Directory 域的命名空间替换 contoso 和 com。
要确认证书颁发机构 (CA) 证书和链是否有效,请执行以下操作:
在托管 CA 的计算机上,单击“开始”,键入 mmc,然后按 ENTER。
如果出现“用户帐户控制”对话框,请确认它显示的是所需操作,然后单击“继续”。
在“文件”菜单上,依次单击“添加/删除管理单元”、“证书”、“添加”。
单击“计算机”帐户,然后单击“下一步”。
单击“完成”,然后单击“确定”。
在控制台树中,单击“证书(本地计算机)”,然后单击“个人”。
请确认此存储中存在尚未到期的 CA 证书。
右键单击此证书,然后选择“导出”,以启动“证书导出向导”。
将该证书导出到名为 Cert.cer 的文件。
键入 Start、cmd,然后按 ENTER。
键入 certutil -urlfetch -verify <cert.cer>,然后按 ENTER。
如果没有报告验证、链生成或吊销检查错误,则说明链有效。
Target | Microsoft.Windows.CertificateServices.CARole.6.2 | ||
Category | EventCollection | ||
Enabled | True | ||
Event_ID | 48 | ||
Event Source | Microsoft-Windows-CertificationAuthority | ||
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.6.2.CertSvcEvents.48" Enabled="onEssentialMonitoring" Target="CSDisc!Microsoft.Windows.CertificateServices.CARole.6.2" 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">48</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"/>
<WriteAction ID="Alert" TypeID="Health!System.Health.GenerateAlert">
<Priority>2</Priority>
<Severity>2</Severity>
<AlertMessageId>$MPElement[Name="AlertMessageIDd13dac2d6ac94865acec24b7e96ddef5"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue>$Data/EventDisplayNumber$</SuppressionValue>
<SuppressionValue>$Data/PublisherName$</SuppressionValue>
<SuppressionValue>$Data/LoggingComputer$</SuppressionValue>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>