証明書サービスでエンドエンティティ証明書の公開に失敗しました。
証明機関 (CA) の主な機能の 1 つは、クライアントからの証明書要求を評価し、定義済み条件を満たしている場合は証明書をそのクライアントに発行することです。証明書を登録するには、要求を送信する前に、有効な CA 証明書 (適切に構成された証明書テンプレート、クライアント アカウント、証明書要求) を所有する CA、クライアントが CA に要求を送信する方法などのいくつかの事前準備を行い、要求を検証し、発行された証明書をインストールする必要があります。
エンド エンティティ証明書の公開を有効化する
証明書を公開するには、ネットワーク接続およびネットワーク アクセス許可が必要です。この問題を解決するには、次の手順を実行します。
クライアントと証明機関 (CA) の間のネットワーク接続を確認します。
CA が、証明書を要求しているエンティティのユーザーまたはコンピューター オブジェクトの userCertificate 属性上で読み取り/書き込みアクセス許可を所有していることを確認します。
1 つのドメインまたは 2 段階 (親/子) のドメイン階層がある場合は、1 つのドメイン (ドメイン A) の Cert Publishers グループに、別のドメイン (ドメイン B) の userCertificate 属性上の読み取り/書き込み証明書のアクセス許可を与える必要があります。これを行うには、「クロスドメインのアクセス許可のエラーを修正する」セクションの手順にしたがってください。
証明書を公開します。
これらの手順を実行するには、CA 管理権限を付与されているか、または適切な権限を委任されている必要があります。
クライアントと CA の間のネットワーク接続を確認する
CA へのクライアント接続を確認するには、次の手順を実行します。
クライアント上で [スタート] をクリックし、「cmd」と入力し、Enter キーを押します。
「ping <server_FQDN>」と入力します。ここで <server_FQDN> は CA の完全修飾ドメイン名 (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>」と入力し、Enter キーを押します。ここで <IP_address> は CA の IP アドレスです。
IP アドレスを使用した場合は CA への接続は成功するが、FQDN では失敗する場合は、ドメイン ネーム システム (DNS) ホスト名解決に問題がある可能性があることを示しています。IP アドレスを使用した CA への接続が失敗する場合は、ネットワーク接続、ファイアウォール、または IPsec の構成に問題がある可能性があることを示しています。
Active Directory 内のドメイン コンピューターおよびドメイン ユーザー コンテナーのアクセス許可を確認する
CA が、ドメイン コンピューターおよびドメイン ユーザー コンテナー上の必要なアクセス許可を所有していることを確認するには、次の手順を実行します。
[スタート] ボタンをクリックし、[管理ツール] をポイントし、[Active Directory サイトとサービス] をクリックします。
[表示] メニュー上で、[サービス ノードの表示] をクリックします。
[Services] をダブルクリック [Public Key Services] をダブルクリックし、[ドメイン コンピューター] を右クリックし、[プロパティ] をクリックします。
[セキュリティ] タブ上で、Cert Publishers グループに読み取り/書き込みアクセス許可があることを確認します。
[ドメイン ユーザー] を右クリックして、[プロパティ] をクリックします。
[セキュリティ] タブ上で、Cert Publishers グループに読み取り/書き込みアクセス許可があることを確認します。
クロスドメインのアクセス許可のエラーを修正する
Dsacls ツールを使用してこれらのアクセス許可を設定するには、次の手順を実行します。
[スタート] をクリックし、「cmd」と入力し、ENTER キーを押してから、次のコマンドを実行します。
dsacls "dc=<domainB>,dc=<contoso>,dc=<com>" /I:S /G "<domainA>\Cert Publishers":RP;userCertificate,user
dsacls "dc=<domainB>,dc=<contoso>,dc=<com>" /I:S /G "<domainA>\Cert Publishers":WP;userCertificate,user
dsacls "cn=<adminsdholder>,cn=system,dc=<contoso>,dc=<com>" /I:S /G \Cert Publishers":RP;userCertificate,user
dsacls "cn=<adminsdholder>,cn=system,dc=<domainB>,dc=<contoso>,dc=<com>" /I:S /G "<domainA>\Cert Publishers":WP;userCertificate,user
例の <domainname> と <com> プレースホルダーの代わりに組織の正しい名前を使用してください。
詳細については、『Microsoft サポート技術情報の記事 281271』( http://go.microsoft.com/fwlink/?LinkID=95695) を参照してください。
証明書の公開
証明書を公開するには、次の手順を実行します。
CA をホストしているコンピューター上で、[スタート] をクリックし、「cmd」と入力してから、Enter キーを押します。
「ping <ipaddress>」と入力します。ここで <ipaddress> はドメイン コントローラーの IP アドレスです。入力したら、Enter キーを押してネットワーク接続が確立されていることを確認します。ネットワーク接続が確立されていない場合は、問題を修復し、再試行します。
コマンド プロンプトで「certutil -dspublish <cert.cer> ldap:///<network location included in the event log message>」と入力し、Enter キーを押します。<Cert.cer> は証明書のエクスポート ウィザードを使用してエクスポートされた証明書ファイルです。
接続しているのに証明書を発行できない場合、Active Directory ユーザーとコンピューターを使用して、CA をホストしているコンピューターが、ユーザーの userCertificate 属性またはコンピューター オブジェクトへの読み取り/書き込みアクセス許可を持っていることを確認します。(これは一般的に、Cert Publishers グループのメンバーシップによります)。
証明書要求の処理が適切に行われていることを確認するには:
[スタート] をクリックし、「certmgr.msc」と入力して Enter キーを押します。
[ユーザー アカウント制御] ダイアログ ボックスが表示されたら、表示された操作が正しいことを確認し、[続行] をクリックします。
コンソール ツリー内で [個人用] をダブルクリックしてから、[証明書] をクリックします。
[操作] メニュー上で、[すべてのタスク] をポイントし、[新しい証明書の要求] をクリックし、証明書の登録ウィザードを開始します。
このウィザードを使って、利用可能な証明書の種類の証明書要求を作成し、送信します。
「証明書インストールの結果」で、登録が正常に完了し、エラーが報告されていないことを確認します。[詳細] をクリックし、証明書の詳細な情報を表示することもできます。
Target | Microsoft.Windows.CertificateServices.CARole.2016 |
Category | EventCollection |
Enabled | True |
Event_ID | 80 |
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.80" 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">80</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>