信頼されたドメインの Active Directory で証明書を発行するための証明機関の構成

この記事では、証明機関 (CA) として子ドメインのユーザーが証明書を要求したときに、発行された証明書が Active Directory で発行されない問題を解決します。

適用対象: サポートされているすべてのバージョンの Windows Server
元の KB 番号: 281271

現象

次のシナリオでは、CA と同じドメインのユーザーが証明書を要求すると、発行された証明書が Active Directory で発行されます。 ユーザーが子ドメインの場合、このプロセスは成功しません。 また、CA と同じドメインのユーザーが証明書を要求すると、発行された証明書が Active Directory で発行されない場合があります。

シナリオ 1

このシナリオでは、次の条件に該当する場合、CA は発行された証明書を子ドメインのユーザーの DS オブジェクトに発行しません。

  • ユーザーは、親ドメインと子ドメインを持つ 2 レベルのドメイン階層にあります。
  • Enterprise CA は親ドメインにあり、ユーザーは子ドメインにあります。
  • 子ドメインのユーザーが親 CA に登録されます。

親ドメインと子ドメインを持つ 2 レベルのドメイン階層では、Enterprise CA は親ドメインにあります。 また、ユーザーは子ドメインにいます。 子ドメインのユーザーは親 CA に登録し、CA は発行された証明書を子ドメインのユーザーの DS オブジェクトに発行します。

さらに、次のイベントが CA サーバーに記録されます。

ログ名: アプリケーション
ソース: Microsoft-Windows-CertificationAuthority
イベント ID: 80
タスク カテゴリ: なし
レベル: 警告
キーワード:
ユーザー: SYSTEM
コンピューター: CA.CONTOSO.COM
説明:
Active Directory 証明書サービスは、サーバー DC.CHILD.CONTOSO.COM 上の次の場所に要求 XXX の証明書を発行できませんでした:CN=CHILDSRV、CN=Computers、DC=CHILD、DC=CONTOSO、DC=COM。 操作を実行するためのアクセス権が不十分です。 0x80072098 (WIN32: 8344 ERROR_DS_INSUFF_ACCESS_RIGHTS)。
ldap: 0x32: 00002098: SecErr: DSID-XXXXXXXX, 問題 4003 (INSUFF_ACCESS_RIGHTS), データ 0

シナリオ 2

次のような状況で問題が発生します。

  • ユーザーが単一レベル のドメインまたは親ドメインにいます。
  • Enterprise CA は親ドメインにあります。
  • ドメイン コントローラーに修正プログラム 327825 インストールされていません。
  • ユーザーは、単一レベルまたは親ドメインで、単一レベルの証明機関または親証明機関に登録します。

このシナリオでは、証明機関は、発行された証明書を、単一レベル ドメインまたは親ドメイン内のユーザーのドメイン サーバー オブジェクトに発行しません。

原因

  • シナリオ 1: 2 レベルのドメイン階層の場合

    子ドメインのユーザーには、登録するための適切なアクセス許可がありません。 その場合でも、CA には、証明書を Active Directory に発行するためのアクセス許可がありません。

    既定では、CA と同じドメインのドメイン ユーザーのみが登録アクセス許可を持ちます。

    既定では、CA にはドメイン内のユーザーに対して次の必要なアクセス許可が付与されます。

    • を読み取る userCertificate

    • を記述 userCertificateします。

      親ドメインの CA には、子ドメイン内のユーザーの userCertificate プロパティに対するアクセス許可がありません。

  • シナリオ 2: 単一レベル ドメインまたは親ドメインの場合

    既定では、Windows では、AdminSDHolder オブジェクトは、AdminSDHolder プロセスの対象となるユーザー アカウントに必要なアクセス許可を Cert Publishers グループに付与しません。 次の一覧には、Windows で保護されたユーザー アカウント グループが含まれています。

    • エンタープライズの管理者

    • Schema Admins

    • Domain Admins

    • 管理者

      修正プログラム KB327825を適用した後、Windows のユーザー アカウント グループの次の一覧が保護されたユーザー アカウント グループになりました。

    • 管理者

    • アカウントオペレーター

    • サーバー演算子

    • 印刷演算子

    • Backup Operators

    • Domain Admins

    • Schema Admins

    • エンタープライズの管理者

    • 証明書発行元

解決方法

シナリオに応じて、次の解決策を試してください。

シナリオ 1: 2 レベルのドメイン階層の場合

子ドメイン ユーザーが証明書を取得し、Active Directory に発行できるようにするには、次の手順に従います。

  1. CA のテンプレートに対するアクセス許可を設定して、登録要求を許可します。 CA が証明書を発行できるように、ユーザー オブジェクトのアクセス許可を設定します。 AdminSDHolder を変更して、管理者であるユーザーにユーザー オブジェクトのアクセス許可をプッシュします。

  2. CA が証明書を発行できるように、ユーザー オブジェクトのアクセス許可を設定します。 AdminSDHolder を変更して、管理者であるユーザーにユーザー オブジェクトのアクセス許可をプッシュします。

  3. AdminSDHolder を変更して、管理者であるユーザーにユーザー オブジェクトのアクセス許可をプッシュします。

注:

最初に、Windows Professional または Windows Server CD-ROM からサポート ツールをインストールする必要があります。

子ドメイン ユーザーが証明書を取得し、Active Directory に発行できるようにする

  1. CA に対するアクセス許可を設定して、子ドメイン内のユーザーが証明書を要求できるようにします。 既定では、配置する必要があります。

    1. 証明機関スナップインを開き、CA を右クリックし、[プロパティ] を選択 します
    2. [ セキュリティ ] タブで、認証されたユーザー グループが証明書の要求を許可されていることを確認します。
  2. 子ドメインのユーザーが登録できるように、該当する証明書テンプレートに対するアクセス許可を設定します。

    注:

    ドメイン管理者権限を持つルート ドメインにログオンする必要があります。

    1. Active Directory サイトとサービス スナップインを開きます。
    2. [ 表示] を選択し、[ サービス ノードの表示] を選択します。
    3. [サービス ノード] フォルダーを展開し、[公開キー サービス] を展開して、[証明書テンプレート] を選択します。
    4. [ 詳細 ] ウィンドウで、目的のテンプレートまたはテンプレートを選択します。 たとえば、[ ユーザー証明書 ] テンプレートを右クリックし、[プロパティ] を選択 します
    5. [ セキュリティ ] タブで、目的のグループ (認証されたユーザーなど) に登録アクセス許可を付与します。
  3. 証明書を Active Directory に発行するように CA Exit モジュールを構成します。

    1. 証明機関スナップインで、CA を右クリックし、[プロパティ] を選択 します
    2. [ モジュールの終了 ] タブで、[構成] を選択 します
    3. 終了モジュールのプロパティで、[Active Directory] ボックス で [証明書の発行を許可する ] を選択します。

    子ドメイン コントローラーで、次の手順を実行します。

    注:

    Windows Server ドメインでは、Cert Publishers グループはドメイン グローバル グループです。 Cert Publishers グループを各子ドメインに手動で追加する必要があります。

    子ドメイン ユーザーが証明書を取得し、Windows Server ドメインで発行できるように設定できます。 これを行うには、グループの種類を [ドメイン ローカル] に変更し、親ドメインの CA サーバーを含めます。 この手順では、新しくインストールされた Windows Server ドメインに存在するのと同じ構成を作成します。 ユーザー インターフェイス (UI) では、グループの種類を変更できません。 ただし、 コマンドを dsmod 使用して、Cert Publishers グループをドメイン グローバル グループからドメイン ローカル グループに変更できます。

    dsmod group Group Distinguished Name -scope l
    

    場合によっては、groupType をグローバルからドメイン ローカル グループに直接変更することはできません。 この場合、グローバル グループをユニバーサル グループに変更し、ユニバーサル グループをドメイン ローカル グループに変更する必要があります。 そのために、以下の手順に従ってください。

    1. 次のコマンドを入力し、Enter キーを押します。

      dsmod group Group Distinguished Name -scope u
      

      このコマンドは、グローバル グループをユニバーサル グループに変更します。

    2. 次のコマンドを入力し、Enter キーを押します。

      dsmod group Group Distinguished Name -scope l
      

      このコマンドは、ユニバーサル グループをドメイン ローカル グループに変更します。

シナリオ 2: 単一レベル ドメインまたは親ドメインの場合

単一レベルのドメイン コントローラーまたは親ドメイン コントローラーで、引用符を付けて次の 2 つのコマンドを実行します。

dsacls "cn=adminsdholder,cn=system, dc=<your domain>,dc=<com>" /G "<CA's domain> \Cert Publishers:WP;userCertificate"
dsacls "cn=adminsdholder,cn=system, dc=<your domain>,dc=<com>" /G "<CA's domain> \Cert Publishers:RP;userCertificate"

ここで、dc=<your domain,dc>=<com> は子ドメインの識別名 (DN) です。 ここで <、CA のドメイン> は、CA が配置されているドメイン名です。

状態

Microsoft は、Windows Server の問題であることを確認しました。

詳細

子ドメインのユーザーが登録に成功しなかった場合、CA アプリケーション イベント ログに次のエラーが生成されます。

イベントの種類: 警告
イベント ソース: CertSvc
イベント カテゴリ: なし
イベント ID: 53
日付: 2000 年 8 月 14 日
時間: 05:13:00
ユーザー: N/A
コンピューター: <ルート CA 名>
説明:
アクセスが拒否されているため、Certificate Services によって要求 <要求が拒否されました #> 。
0x80070005 (WIN32: 5)。 要求は (不明なサブジェクト) でした。 追加情報: ポリシー モジュールによって拒否されました

ユーザーが登録できるように ACL が設定されていても、CA にユーザーの Active Directory に発行するアクセス許可がない場合、CA アプリケーション イベント ログに次のエラーが生成されます。

イベントの種類: エラー
イベント ソース: CertSvc
イベント カテゴリ: なし
イベント ID: 46
日付: 2000 年 8 月 14 日
時間: 05:13:00
ユーザー: N/A
コンピューター: <ルート CA 名>
説明:
"Enterprise and Stand-alone Exit Module" Exit Module "Notify" メソッドはエラーを返しました。 アクセスが拒否されました。 返された状態コードは 0x80070005 (5) です。 証明機関は、Child\User の証明書をディレクトリ サービスに発行できませんでした。 アクセスが拒否されました。
(0x80070005)