証明書サービスで要求の処理に失敗しました。
証明機関 (CA) の主な機能の 1 つは、クライアントからの証明書要求を評価し、定義済み条件を満たしている場合は証明書をそのクライアントに発行することです。証明書を登録するには、要求を送信する前に、有効な CA 証明書 (適切に構成された証明書テンプレート、クライアント アカウント、証明書要求) を所有する CA、クライアントが CA に要求を送信する方法などのいくつかの事前準備を行い、要求を検証し、発行された証明書をインストールする必要があります。
証明書の処理の妨げとなっている問題を修正します。
証明書の要求の妨げとなる問題にはさまざまなものがあります。問題の修正に必要な情報で、イベント ログ メッセージに含まれていないものがある場合は、このイベント ログ メッセージの前または後に表示されている追加エラーおよび警告が問題の特定に役立ちます。
証明書の要求処理の妨げとなっている問題を特定し、解決するには次の手順を実行します。
証明機関 (CA) の証明チェーンを確認します。
新しい証明書失効リスト (CRL) を生成し、公開します。
構成済の CRL 配布ポイントを確認します。
それでも問題が解決されない場合は、CA の [失敗した要求] キューで要求が失敗した理由に関する情報を確認します。
以下の手順を実行するには、CA アクセス許可を持っているか、適切な権限を委任されている必要があります。
CA の証明書チェーンの確認
CA のチェーンを評価するには、以下の手順を実行します。
[スタート] をクリックし、「mmc」と入力して Enter キーを押します。
[ユーザー アカウント制御] ダイアログ ボックスが表示されたら、表示された操作が正しいことを確認し、[続行] をクリックします。
[ファイル] メニュー上で、[スナップインの追加と削除] をクリックし、[証明書] をクリックしてから、[追加] をクリックします。
[コンピューター アカウント] をクリックし、[次へ] をクリックします。
CA をホストしているコンピューターを選択し、[完了] 、[OK] の順にクリックします。
証明書チェーン内で各 CA 証明書を選択し、[証明書の表示] をクリックします。
[詳細] タブをクリックしてから [ファイルへコピー] をクリックして [証明書のエクスポート ウィザード] を起動します。それぞれの証明書に .cer 拡張子を付けて保存します。
コマンド プロンプトを開いて、各 CA 証明書で「certutil -urlfetch -verify <CAcert.cer>」と入力し、Enter キーを押します。<CAcert.cer> を、手順 7. で保存した CA 証明書ファイルの名前に置き換えます。
CA が発行したエンド エンティティ (ユーザーまたはコンピューター) の証明書と同じコマンドを使用し、チェーンとして CA 自体の CRL を確認します。
コマンド ライン出力で特定された問題があれば解決します。
新しい CRL の生成と公開
コマンド ラインの出力が CA の CRL が期限切れとなっていることを示していた場合、CA 上で新しい Base CRL および Delta CRL を生成し、必要な場所にコピーします。この操作を行うにはオフラインの CA を再起動する必要があります。
CA で現在公開されている CRL を確認します。既定では、CA は CRL を %windir%\System32\CertSrv\CertEnroll フォルダーに作成します。現在この場所にある 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 の名前に、<CA hostname> は CA が実行されているホストの名前に置き換えます。また、<contoso> と <com> は、使用している Active Directory ドメインの名前空間に置き換えます。
構成済の CRL 配布ポイントを確認する
構成済のすべての CRL 配布ポイントを確認し、公開が正常に完了し、新しい CRL がネットワーク上で利用できるようになっていることを確認します。
証明機関スナップインを使用して構成済の CRL 配布ポイントを確認するには、次の手順を実行します。
CA をホストしているコンピューター上で、[スタート] をクリックし、[管理ツール] をポイントし、[証明機関] をクリックします。
CA の名前を右クリックしてから、[プロパティ] をクリックします。
[拡張子] タブをクリックします。
構成済の CRL 配布ポイントを見直し、情報が正しいことを確認します。
Certutil を使用して構成済の CRL 配布ポイントの URL を確認するには、次の手順を実行します。
CA でコマンド プロンプト ウィンドウを開きます。
certutil -getreg ca\crlpublicationurls コマンドを入力し、Enter キーを押します。
CA で失敗した要求のキューを確認する
証明機関スナップインを使用して CA で失敗した要求のキューを確認するには、次の手順を実行します。
CA をホストしているコンピューターで、[スタート] をクリックし、[管理ツール]をポイントしてから [証明機関] をクリックします。
[失敗した要求] フォルダーをクリックします。
イベント発生時またはそれと近い時間に送信された、失敗した要求を探し、要求のディスポジション メッセージ、要求の状態コード、および要求者名などの列で追加の診断情報を確認します。
Certutil を使用して失敗した要求を確認するには、次の手順を実行します。
CA をホストしているコンピューター上で、[スタート] をクリックし、「cmd」と入力してから、Enter キーを押します。
「certutil -view LogFail」と入力し、Enter キーを押します。
「certutil -view -restrict requestID="<nnn>"」と入力し、ENTER を押します。<nnn> を、LogFail コマンドの出力で失敗した要求のうち 1 つの要求 ID に置き換えます。
証明書要求の処理が適切に行われていることを確認するには:
[スタート] をクリックし、「certmgr.msc」と入力して Enter キーを押します。
[ユーザー アカウント制御] ダイアログ ボックスが表示されたら、表示された操作が正しいことを確認し、[続行] をクリックします。
コンソール ツリー内で [個人用] をダブルクリックしてから、[証明書] をクリックします。
[操作] メニュー上で、[すべてのタスク] をポイントし、[新しい証明書の要求] をクリックし、証明書の登録ウィザードを開始します。
このウィザードを使って、利用可能な証明書の種類の証明書要求を作成し、送信します。
「証明書インストールの結果」で、登録が正常に完了し、エラーが報告されていないことを確認します。[詳細] をクリックし、証明書の詳細な情報を表示することもできます。
Target | Microsoft.Windows.CertificateServices.CARole.2016 | ||
Category | EventCollection | ||
Enabled | True | ||
Event_ID | 21 | ||
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.21" 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">21</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="AlertMessageID42b3cc830b884161b292de001ad930e4"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue>$Data/EventDisplayNumber$</SuppressionValue>
<SuppressionValue>$Data/PublisherName$</SuppressionValue>
<SuppressionValue>$Data/LoggingComputer$</SuppressionValue>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>