Active Directory の信頼されるドメインに証明書を公開させる証明機関の設定


現象


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



シナリオ 1
このシナリオでは、次の条件が当てはまる場合、CA は発行された証明書を、子ドメインのユーザーの DS オブジェクトに公開しません。
  • ユーザーは、親および子ドメインによる 2 つのレベルのドメイン階層にあります。
  • エンタープライズ CA は親ドメインにあり、ユーザーは子ドメインにあります。
  • 子ドメインのユーザーは、親 CA に登録します。
親および子ドメインによる 2 つのレベルのドメイン階層で、エンタープライズ CA は親ドメインにあり、ユーザーは子ドメインにあります。 子ドメインのユーザーは、親 CA に登録し、CA は発行された証明書を、子ドメインのユーザーの DS オブジェクトに公開します。



シナリオ 2
次のようなシナリオがあるとします。
  • ユーザーは、単一レベル ドメインまたは親ドメインにあります。
  • エンタープライズ CA は親ドメインにあります。
  • ドメイン コントローラには、修正プログラム 327825 がインストールされていないか、Windows 2000 Service Pack 4 (SP4) がインストールされていません。
  • ユーザーは、単一レベル ドメインまたは親ドメインのいずれかで、単一レベルの証明機関または親証明機関に登録します。
このシナリオでは、証明機関は、発行された証明書を単一レベル ドメインまたは親ドメインのユーザーのドメイン サーバー オブジェクトに公開しません。

原因


状況 1: 2 レベル ドメイン階層

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


デフォルトでは、CA と同じドメインのドメイン ユーザーだけが、登録アクセス許可を持ちます。


デフォルトでは、CA は、次の必要なアクセス許可をドメイン内のユーザーに与えます。
  • UserCertificate の読み取り
  • UserCertificate の書き込み
親ドメイン内のルート CA は、子ドメインのユーザーの userCertificate プロパティに対するアクセス許可を持ちません。

状況 2: 単一レベル ドメインまたは親ドメイン

Windows 2000 のデフォルトでは、AdminSDHolder オブジェクトは、AdminSDHolder の処理の対象となるユーザー アカウントに必要なアクセス許可を Cert Publishers グループに与えません。 Windows 2000 の保護されたユーザー アカウント グループに含まれるものは、次の一覧のとおりです。
  • Enterprise Admins
  • Schema Admins
  • Domain Admins
  • Administrators
サポート技術情報 327825 に記載されている修正プログラムを適用した後、または Windows 2000 SP4 をインストールした後、Windows Server 2003 および Windows 2000 のユーザー アカウント グループの次の一覧にあるものが保護されたユーザー アカウント グループになりました。
  • Administrators
  • Account Operators
  • Server Operators
  • Print Operators
  • Backup Operators
  • Domain Admins
  • Schema Admins
  • Enterprise Admins
  • Cert Publishers

解決方法


状況 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. [セキュリティ] タブで、[Authenticated Users] グループが証明書の要求を許可されていることを確認します。
  2. 適用可能な証明書テンプレートに、子ドメインのユーザーに登録を許可するアクセス許可を設定します。

    注: ドメイン管理者権限でルート ドメインにログオンする必要があります。
    1. Active Directory サイトとサービス スナップインを開きます。
    2. [表示] をクリックし、[サービス ノードの表示] をクリックします。
    3. サービス ノード フォルダを展開し、Public Key Services を展開して、[証明書テンプレート] をクリックします。
    4. [詳細] ペインで、目的のテンプレートを選択します。 たとえば、[ユーザー証明書] テンプレートを右クリックし、[プロパティ] をクリックします。
    5. [セキュリティ] タブで、[Authenticated Users] などの希望のグループに登録アクセス許可を与えます。
  3. Active Directory に証明書を公開するように、CA 終了モジュールを設定します。
    1. 証明機関スナップインで、CA を右クリックし、[プロパティ] をクリックします。
    2. [終了モジュール] タブの [構成] をクリックします。
    3. [終了モジュール] のプロパティで、[Active Directory に証明書の公開を許可する] チェック ボックスをオンにします。
    子ドメイン コントローラで、以下を実行します。

    注: Windows 2000 からアップグレードされた Windows 2000 ドメインおよび Windows Server 2003 ドメインでは、Cert Publishers グループはドメイン グローバル グループです。 Cert Publishers グループを各子ドメインに手動で追加する必要があります。

    Windows Server 2003 ドメインの場合

    子ドメイン ユーザーが証明書を取得し、アップグレードされた Windows Server 2003 ドメインで公開できるようにすることができます。 これを行うには、グループの種類を [ドメイン ローカル] に変更し、親ドメインの CA サーバーを含めます。 この手順を実行すると、新規にインストールした Windows Server 2003 ドメインに存在するものと同じ構成が作成されます。 ユーザー インターフェイス (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
      このコマンドで、ユニバーサル グループがドメイン ローカル グループに変更されます。
    Windows 2000 ドメインの場合

    委任ウィザードを使用すると、子ドメイン内のすべてのユーザー オブジェクトにルート ドメインの Cert Publisher グループを手動で追加できます。 これを行うには、次の手順を実行します。
    1. Active Directory ユーザーとコンピュータ スナップインを開き、ドメイン ノードを右クリックします。
    2. [制御の委任] をクリックします。 委任ウィザードが起動します。 ウィザードで、次の手順を実行します。
      1. [次へ] をクリックし、[追加] をクリックして親ドメインから [Cert Publishers] グループを追加します。
      2. [次へ] をクリックし、[委任するカスタム タスクを作成する] をクリックし、[次へ] をクリックします。
      3. [フォルダ内の次のオブジェクトのみ] チェック ボックスをオンにします。
      4. [ユーザー オブジェクト] をクリックし、[次へ] をクリックします。
      5. [プロパティ固有] をクリックし、[userCert の読み取り] をクリックし、[userCert の書き込み] をクリックします。
      6. [次へ] をクリックし、[完了] をクリックします。
  4. Active Directory ユーザーとコンピュータ スナップインを開き、ドメイン ノードを右クリックします。
  5. [制御の委任] をクリックすると、委任ウィザードが起動します。 ウィザードで次を実行します。
    1. [次へ] をクリックし、[追加] をクリックして親ドメインから [Cert Publishers] グループを追加します。 [次へ] をクリックします。
    2. [委任するカスタム タスクを作成する] オプションをクリックし、[次へ] をクリックします。
    3. [フォルダ内の次のオブジェクトのみ] をクリックします。
    4. [ユーザー オブジェクト] オプションをクリックし、[次へ] をクリックします。
    5. [プロパティ固有] オプションをクリックします。
    6. [userCert の読み取り] オプションをクリックします。
    7. [userCert の書き込み] オプションをクリックします。
    8. [次へ] をクリックし、[完了] をクリックします。
  6. 子ドメイン コントローラのコマンド プロンプトで、次の 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's Domain は CA が存在するドメイン名です。
  7. 注: Windows Server 2003 SP1 には、新しいセキュリティ グループ CERTSVC_DCOM_ACCESS が提供されます。 この証明書を取得できるようにするには、親または子ドメインのユーザーまたは要求元のコンピュータがこのグループのメンバーである必要があります。

    CA サーバーのコマンド プロンプトで、次のコマンドを実行します。
    certutil -setreg SetupStatus -SETUP_DCOM_SECURITY_UPDATED_FLAG
    net stop certsvc
    net start certsvc
    CERTSVC_DCOM_ACCESS セキュリティ グループの詳細については、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。

    927066 クライアント コンピュータが Windows Server 2003 Service Pack 1 を実行しているコンピュータから証明書を要求する場合のエラー メッセージ: "次の理由のいくつかが原因で、ウィザードを起動することができません"

    クロス フォレスト環境のユーザーとサーバーを CERTSVC_DCOM_ACCESS セキュリティ グループに追加する方法の詳細については、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。

    961298 クロス フォレスト環境で自動登録が機能しない

状況 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's Domain は CA が存在するドメイン名です。

状態


マイクロソフトでは、この問題を Windows 2000 Server および Windows Server 2003 の問題として認識しています。

詳細情報


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


Event Type: Warning
Event Source: CertSvc
Event Category: None
Event ID: 53
Date: 08/14/2000
Time: 05:13:00
User: N/A
Computer: <Root CA name>
Description:
Certificate Services denied request <request #> because Access is denied.
0x80070005 (WIN32: 5). The request was for (Unknown Subject). Additional
information: Denied by Policy Module
ACL はユーザーが登録できるように設定されていても、CA にユーザーの Active Directory に公開するアクセス許可がない場合、CA アプリケーション イベント ログに次のエラーが生成されます。


Event Type: Error
Event Source: CertSvc
Event Category: None
Event ID: 46
Date: 08/14/2000
Time: 05:13:00
User: N/A
Computer: <Root CA name>
Description:
The "Enterprise and Stand-alone Exit Module" Exit Module "Notify" method
returned an error. Access is denied. The returned status code is
0x80070005 (5). The Certification Authority was unable to publish the
certificate for Child\User to the Directory Service. Access is denied.

(0x80070005)