证书申请已拒绝。
证书颁发机构 (CA) 的一个重要功能是评估来自客户端的证书申请,并且在满足预定义的条件时向这些客户端发出证书。要想成功注册证书,在提交申请之前必须准备好一定的资料,包括具有有效 CA 证书的 CA;正确配置的证书模板、客户端帐户和证书申请;客户端向 CA 提交申请的方式,验证申请,并安装签发的证书。
删除妨碍证书申请获得批准的条件
链生成中的问题是证书申请失败的常见原因。请使用以下步骤验证证书颁发机构 (CA) 的证书链并修复确定的任何问题:
确认 Active Directory 域服务 (AD DS) 中的用户帐户信息。
确认证书模板信息。
确认 CA 的证书链。
检查最近的证书吊销列表 (CRL)。
发布新的 CRL。
如果不能解决问题,请检查并解决以下区域内的问题:
CA 的失败申请队列
AD DS 连接
可能缺少了完成证书申请所需要的签名。如果是这种情况:
请启用有注册机构证书的其他用户在证书申请上签名。
请修改证书模板以减少注册机构签名。
再次提交证书申请。
在 AD DS 中确认用户帐户信息
要执行此过程,您必须拥有域管理员成员身份,或者您已被委派适当的权限。
要确认用户帐户信息,请执行以下操作:
在域控制器上,单击“开始”,指向“管理工具”,然后单击“Active Directory 用户”和“计算机”。
在控制台树中,选择用户帐户所在的域和用户组。
如果用户帐户存在,请右键单击帐户,再单击“属性”,然后确认用户是否具有正确配置的域名系统 (DNS) 名称。
确认证书模板信息
要执行此过程,您必须拥有管理 CA 的权限,或者您必须被委派了适当的权限。
要确认证书模板信息,请执行以下操作:
在托管 CA 的计算机上,单击“开始”,键入 certtmpl.msc,然后按 ENTER。
右键单击需要排除故障的证书模板,然后确认用户或组是否具有注册基于此模板的证书的权限。
确认 CA 的证书链
要验证 CA 的链,请执行以下操作:
单击“开始”,键入 mmc,然后按 ENTER。
如果显示“用户帐户控制”对话框,请确认显示的操作正是你要执行的操作,然后单击“继续”。
在“文件”菜单上,依次单击“添加/删除管理单元”、“证书”、“添加”。
单击“计算机”帐户,然后单击“下一步”。
选择托管 CA 的计算机,单击“完成”,然后单击“确定”。
选择证书链中的每个 CA 证书,然后单击“查看证书”。
单击“详细信息”选项卡,然后单击“复制到文件”以启动“证书导出向导”。保存每个证书,扩展名为 .cer。
打开命令提示符,对每个 CA 证书运行以下命令:certutil -urlfetch -verify <CAcert.cer>,然后按 ENTER。将 <CAcert.cer> 替换为你在步骤 7 中保存的 CA 证书文件的名称。
对 CA 颁发的最终实体(用户或计算机)证书的证书文件使用相同的命令,以确认 CA 自身以及其链的 CRL。
解决命令行输出中标识的任何问题。
生成和发布新的 CRL
如果命令行输出显示 CA 的 CRL 已过期,则在 CA 上生成新的基本和增量 CRL,并将其复制到所需的位置。您可能需要重新启动脱机 CA 才能完成该操作。
在 CA 上检查当前发布的 CRL。默认情况下,CA 在文件夹 %windir%\System32\CertSrv\CertEnroll 中创建 CRL。如果当前在该位置的 CRL 已过期或失效,您可以执行下列过程发布新的 CRL。
要使用证书颁发机构管理单元发布新的 CRL,请执行以下操作:
在托管 CA 的计算机上,单击“开始”,指向“管理工具”,然后单击“证书颁发机构”。
选择 CA,然后展开 CA 名称下的文件夹。
右键单击“吊销的证书”文件夹。
单击“所有任务”,然后单击“发布”。
您也可以通过命令提示符生成和发布 CRL。
要使用 Certutil 命令行工具发布 CRL,请执行以下操作:
在托管 CA 的计算机上,单击“开始”,键入 cmd,然后按 ENTER。
键入 certutil -CRL,然后按 ENTER。
如果 CRL 标识为不可用,但是 CA 上的本地目录中存在有效的 CRL,请确认 CA 是否可以连接到 CRL 分发点,然后使用上述的步骤重新生成和发布 CRL。
使用以下命令可以手动将 CRL 发布到 Active Directory 域服务 (AD DS):
certutil -dspublish"<crlname.crl>" ldap:///CN=<CA name>,CN=<CA hostname>,CN=CDP,CN=Public Key Services,CN=Services,CN=Configuration,DC=<contoso>,DC=<com>?certificateRevocationList?base?objectClass=cRLDistributionPoint
将 crlname.crl 替换为 CRL 文件的名称,将 <CA name> 和 <CA hostname> 分别替换为 CA 名称和运行该 CA 的主机的名称,并将 <contoso> 和 <com> 替换为你的 Active Directory 域的命名空间。
确认已配置的 CRL 分发点
检查所有已配置的 CRL 分发点,以确认发布是否成功及新的 CRL 是否可以在网络中使用。
要执行此过程,您必须拥有管理 CA 的权限,或者您必须被委派了适当的权限。
若要使用证书颁发机构管理单元检查已配置的 CRL 分发点,请执行以下操作:
在托管 CA 的计算机上,单击“开始”,指向“管理工具”,然后单击“证书颁发机构”。
右键单击 CA 的名称,然后单击“属性”。
单击“扩展名”选项卡。
检查配置的 CRL 分配点并确认名称是否有效。
要使用 Certutil 检查已配置的 CRL 分发点 URL,请执行以下操作:
在 CA 中打开一个命令提示符窗口。
键入 certutil -getreg ca\crlpublicationurls,然后按 ENTER。
检查配置的 CRL 分配点并确认名称是否有效。
检查 CA 中失败的申请队列
要执行此过程,您必须拥有管理 CA 的权限,或者您必须被委派了适当的权限。
要使用证书颁发机构管理单元检查 CA 中失败的申请队列,请执行以下操作:
在托管 CA 的计算机上,单击“开始”,指向“管理工具”,然后单击“证书授权机构”。
单击“失败的申请”。
查找出现事件时或相近的时间内提交的失败申请,然后检查“申请处理消息”、“申请状态码”和“申请人姓名”等列,以获取更多诊断信息。
要使用 Certutil 检查失败的申请,请执行以下操作:
在托管 CA 的计算机上,单击“开始”,键入 cmd,然后按 Enter。
键入 certutil -view LogFail,然后按 ENTER。
键入 certutil -view -restrict requestID=”<nnn>”,然后按 Enter。将 <nnn> 替换为 LogFail 命令输出中失败的申请之一的申请 ID。
确认 AD DS 连接
要确认 AD DS 是否存在 Active Directory 证书服务 (AD CS) 连接,请执行以下操作:
在 CA 上,打开命令提示符窗口。
键入 ping <server_FQDN>,其中 server_FQDN 是域控制器的完全限定域名(FQDN)(例如,server1.contoso.com),然后按 ENTER。
如果此 ping 命令成功,你将收到类似于以下内容的答复:
来自 IP_address 的回复:字节=32 时间=3ms TTL=59
来自 IP_address 的回复:字节=32 时间=20ms TTL=59
来自 IP_address 的回复:字节=32 时间=3ms TTL=59
来自 IP_address 的回复:字节=32 时间=6ms TTL=59 3
在命令提示符下,键入 ping <IP_address> (其中,IP_address 是域控制器的 IP 地址),然后按 ENTER。
如果可以通过 IP 地址成功连接到域控制器,但无法通过 FQDN 连接到域控制器,则表明域名系统 (DNS) 可能存在问题。如果无法通过 IP 地址成功连接到域控制器,则表明网络连接、防火墙配置或 Internet 协议安全性 (IPsec) 配置可能存在问题。
颁发更多注册授权机构证书
要执行该过程,您必须是托管 CA 的计算机上本地管理员组的成员,或者您已被委派适当的权限。
要颁发更多注册机构证书,请执行以下操作:
在托管 CA 的计算机上,单击“开始”,键入 certtmpl.msc,然后按 ENTER。
在详细信息窗格中,右键单击注册机构证书模板,然后单击“属性”。
在“安全性”选项卡中,添加要颁发注册机构证书的用户或组的名称。
在组或用户名称中,单击一个新对象,然后在“允许”列下的“适用对象名权限”上,选中“读取和注册”复选框。
对每个新对象重复执行前面的步骤,然后单击“确定”。
单击“开始”,指向“管理工具”,然后单击“证书颁发机构”。
双击 CA 的名称。
右键单击证书模板容器,再单击“新建”,然后单击“要颁发的证书模板”。
选择证书模板,并单击“确定”。
修改证书模板签名要求
要执行此过程,您必须拥有管理 CA 的权限,或者您必须被委派了适当的权限。
要修改证书模板签名要求,请执行以下操作:
在托管 CA 的计算机上,单击“开始”,键入 certtmpl.msc,然后按 ENTER。
在详细信息窗格中,右键单击要修改的证书模板,然后单击“属性”。
单击“颁发要求”选项卡。
在此授权签名的数量下,输入要使用的注册机构签名的数量。
对每个新对象重复执行前面的步骤,然后单击“确定”。
单击“开始”,指向“管理工具”,然后单击“证书颁发机构”。
双击 CA 的名称。
右键单击证书模板容器,再单击“新建”,然后单击“要颁发的证书模板”。
选择证书模板,并单击“确定”。
要确认证书申请处理是否正常,请执行以下操作:
单击“开始”,键入 certmgr.msc,然后按 ENTER。
如果显示“用户帐户控制”对话框,请确认显示的操作正是你要执行的操作,然后单击“继续”。
在控制台树中双击“个人”,然后单击“证书”。
在“操作”菜单中,指向“所有任务”,然后单击“申请新证书”以启动“证书注册”向导。
使用此向导可为任何类型的可用证书创建和提交证书申请。
在“证书安装结果”下,确认注册已成功完成,且没有报错。您还可以单击“详细信息”,以查看有关该证书的其他信息。
Target | Microsoft.Windows.CertificateServices.CARole.2016 |
Category | EventCollection |
Enabled | True |
Event_ID | 53 |
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.53" 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">53</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>