证书服务拒绝处理过长的证书申请。
证书颁发机构 (CA) 访问控制权限可保证授权的组件和用户能完成所要求的任务。访问控制错误可用来确定权限不足或不正确使用权限的相关问题。
尝试提交较长的证书申请
过长的证书申请可能是发起“阻绝服务”攻击的尝试。
事件日志消息中应标识出源。您还应查看所有失败的证书申请的相关信息,以检测是否存在其他异常的证书申请。
要解决该潜在问题:
查看失败的证书申请,以确定失败的申请是否来自已知源或受信任源。
如果出错并拒绝了申请,请修改注册表中的 MaxIncomingMessageSize 设置以允许更长的证书申请。
如果未出错和拒绝申请,请识别请求的源并阻止该源提交的请求。
要执行这些过程,您必须拥有本地管理员成员身份,或者您必须已被委派适当的权限。
查看失败的证书申请
要查看失败的证书申请,请执行以下操作:
在托管 CA 的计算机上,单击“开始”,指向“管理工具”,然后单击“证书颁发机构”。
检查“失败的申请”文件夹中包含的失败申请,然后确定是否来自受信任的源。
您还可以打开命令提示符窗口,运行以下命令:certutil -view LogFail。
如果请求的源合法,但却遭到拒绝,原因是它太大了。您可以通过以下过程,增大最大消息大小,或者让证书请求程序提交新的证书请求。
修改最大消息大小
默认的最大消息大小设置为 10,000 字节。如果您在上一过程中,查看失败的证书请求时,发现合法的证书请求由于超过了此值而被拒绝,则请考虑将此注册表设置增大到一个可以允许类似请求成功的值。
要修改最大消息大小,请执行以下操作:
警告:注册表编辑不当可能导致严重损坏你的系统。更改注册表之前,你应备份任何有价值的数据。
在托管 CA 的计算机上,单击“开始”,键入 cmd,然后按 ENTER。
键入 certutil -setreg CA\MaxIncomingMessageSize <bytes>,然后按 ENTER。
要确认 CA 登录上下文是否正确,请执行以下操作:
在托管 CA 的计算机上,单击“开始”,指向“管理工具”,然后单击“服务”。
确认“Active Directory 证书服务”服务所属的“状态”中显示“已启动”字样。
Target | Microsoft.Windows.CertificateServices.CARole.2016 | ||
Category | EventCollection | ||
Enabled | True | ||
Event_ID | 60 | ||
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.2016.CertSvcEvents.60" 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">60</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="AlertMessageIDf35538bb2517423d95f7d32e661b5ffa"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue>$Data/EventDisplayNumber$</SuppressionValue>
<SuppressionValue>$Data/PublisherName$</SuppressionValue>
<SuppressionValue>$Data/LoggingComputer$</SuppressionValue>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>