CA 証明書向けのチェーン内の証明書の期限が切れています。
チェーンまたはパスの検証は、エンドエンティティ (ユーザーまたはコンピューター) 証明書による処理であり、すべての証明機関 (CA) 証明書は、証明書チェーンが信頼済みの自己署名証明書で終了するまで階層的に処理されます。通常、これはルート CA 証明書です。Active Directory 証明書サービス (AD CS) のスタートアップは、可用性、有効性、CA 証明書チェーンの検証に問題がある場合に失敗することがあります。
期限切れの 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 キーを押します。
[ユーザー アカウント制御] ダイアログ ボックスが表示されたら、表示された操作が正しいことを確認し、[続行] をクリックします。
[ファイル] メニュー上で、[スナップインの追加と削除] をクリックし、[証明書] をクリックしてから、[追加] をクリックします。
[コンピューター アカウント] をクリックし、[次へ] をクリックします。
[完了] をクリックしてから、[OK] をクリックします。
コンソール ツリー内で、[証明書 (ローカル コンピューター)] をクリックしてから、[個人用] をクリックします。
有効期限内の CA 証明書がこのストアに存在していることを確認します。
証明書を右クリックし、[エクスポート] を選択して証明書のエクスポート ウィザードを開始します。
証明書を Cert.cer というファイルにエクスポートします。
[スタート] をクリックし、「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>