この記事では、証明機関 (CA) として子ドメインのユーザーが証明書を要求したときに、発行された証明書が Active Directory で発行されない問題を解決します。
適用対象: サポートされているすべてのバージョンの Windows Server
元の KB 番号: 281271
次のシナリオでは、CA と同じドメインのユーザーが証明書を要求すると、発行された証明書が Active Directory に発行されます。 ユーザーが子ドメインの場合、このプロセスは成功しません。 また、CA と同じドメインのユーザーが証明書を要求すると、発行された証明書が Active Directory で発行されない可能性があります。
このシナリオでは、次の条件に該当する場合、CA は発行された証明書を子ドメイン内のユーザーの DS オブジェクトに発行しません。
- ユーザーは、親ドメインと子ドメインを持つ 2 レベルのドメイン階層にあります。
- Enterprise CA は親ドメインにあり、ユーザーは子ドメインに存在します。
- 子ドメインのユーザーが親 CA に登録されます。
親ドメインと子ドメインを持つ 2 レベルのドメイン階層では、Enterprise CA は親ドメインにあります。 また、ユーザーは子ドメインにいます。 子ドメインのユーザーは親 CA に登録し、CA は発行された証明書を子ドメイン内のユーザーの DS オブジェクトに発行します。
さらに、次のイベントが CA サーバーに記録されます。
ログ名: Application
ソース: 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
以下のシナリオについて考えてみます。
- ユーザーが単一レベル のドメインまたは親ドメインにいます。
- Enterprise CA は親ドメインにあります。
- ドメイン コントローラーには修正プログラム 327825 がインストールされていません。
- ユーザーは、単一レベルまたは親ドメインのいずれかで、単一レベルの証明機関または親証明機関に登録します。
このシナリオでは、証明機関は発行された証明書を、単一レベル ドメインまたは親ドメイン内のユーザーのドメイン サーバー オブジェクトに発行しません。
Scenario 1: 2 レベルのドメイン階層
子ドメインのユーザーには、登録するための適切なアクセス許可がありません。 その場合でも、CA には、証明書を Active Directory に発行するためのアクセス許可がありません。
既定では、CA と同じドメインのドメイン ユーザーのみが登録アクセス許可を持ちます。
既定では、CA には、ドメイン内のユーザーに対して次の必要なアクセス許可が付与されます。
Scenario 2 の場合: 単一レベルドメインまたは親ドメイン
既定では、Windows では、AdminSDHolder オブジェクトは、AdminSDHolder プロセスの対象となるユーザー アカウントに必要なアクセス許可を Cert Publishers グループに付与しません。 次の一覧には、Windows で保護されているユーザー アカウント グループが含まれています。
シナリオに応じて、次の解決策を試してください。
子ドメイン ユーザーが証明書を取得し、Active Directory に発行できるようにするには、次の手順に従います。
CA のテンプレートに対するアクセス許可を設定して、登録要求を許可します。 CA が証明書を発行できるように、ユーザー オブジェクトのアクセス許可を設定します。 管理者であるユーザーにユーザー オブジェクトのアクセス許可をプッシュするように AdminSDHolder を変更します。
CA が証明書を発行できるように、ユーザー オブジェクトのアクセス許可を設定します。 管理者であるユーザーにユーザー オブジェクトのアクセス許可をプッシュするように AdminSDHolder を変更します。
管理者であるユーザーにユーザー オブジェクトのアクセス許可をプッシュするように AdminSDHolder を変更します。
注意
まず、Windows Professional または Windows Server CD-ROM からサポート ツールをインストールする必要があります。
子ドメイン ユーザーが証明書を取得し、Active Directory に発行できるようにする
CA に対するアクセス許可を設定して、子ドメイン内のユーザーが証明書を要求できるようにします。 既定では、その場所に配置する必要があります。
- 証明機関スナップインを開き、CA を右クリックし、 Properties を選択します。
- Security タブで、認証されたユーザー グループが証明書の要求を許可されていることを確認します。
子ドメインのユーザーが登録できるように、該当する証明書テンプレートに対するアクセス許可を設定します。
注意
ドメイン管理者権限を持つルート ドメインにログオンする必要があります。
- Active Directory サイトとサービス スナップインを開きます。
- Viewを選択し、 サービス ノードを選択します。
- Services Node フォルダーを展開し、Public Key Services を展開して、Certificate テンプレート を選択します。
- Details ペインで、目的のテンプレートまたはテンプレートを選択します。 たとえば、 User certificate テンプレートを右クリックし、 Properties を選択します。
- Security タブで、認証済みユーザーなどの目的のグループに登録アクセス許可を付与します。
証明書を Active Directory に発行するように CA 出口モジュールを構成します。
- 証明機関スナップインで、CA を右クリックし、 Propertiesを選択します。
- [ Exit モジュール タブで、 構成を選択します。
- Exit モジュールのプロパティで、Active Directory で発行する Allow 証明書 ボックスを選択します。
子ドメイン コントローラーで次の手順を実行します。
注意
Windows Server ドメインでは、Cert Publishers グループはドメイン グローバル グループです。 各子ドメインに Cert Publishers グループを手動で追加する必要があります。
子ドメイン ユーザーが証明書を取得し、Windows Server ドメインで公開できるようにすることができます。 これを行うには、グループの種類を Domain Local に変更し、親ドメインの CA サーバーを含めます。 この手順では、新しくインストールされた Windows Server ドメインに存在するのと同じ構成を作成します。 ユーザー インターフェイス (UI) では、グループの種類を変更できません。 ただし、 dsmod
コマンドを使用して、Cert Publishers グループをドメイン グローバル グループからドメイン ローカル グループに変更できます。
dsmod group Group Distinguished Name -scope l
場合によっては、groupType をグローバルからドメイン ローカル グループに直接変更することはできません。 この場合は、グローバル グループをユニバーサル グループに変更し、ユニバーサル グループをドメイン ローカル グループに変更する必要があります。 そのためには、次の手順に従います。
次のコマンドを入力し、Enter キーを押します。
dsmod group Group Distinguished Name -scope u
このコマンドは、グローバル グループをユニバーサル グループに変更します。
次のコマンドを入力し、Enter キーを押します。
dsmod group Group Distinguished Name -scope l
このコマンドは、ユニバーサル グループをドメイン ローカル グループに変更します。
単一レベルのドメイン コントローラーまたは親ドメイン コントローラーで、引用符を保持して次の 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=<ドメイン>,dc=<com> は子ドメインの識別名 (DN) です。 ここで <CA のドメイン> は CA が配置されているドメイン名です。
Microsoft は、Windows Server の問題であることを確認しました。
子ドメインのユーザーが登録に成功しなかった場合、CA アプリケーション イベント ログに次のエラーが生成されます。
イベントの種類: 警告
イベント ソース: CertSvc
イベント カテゴリ: なし
イベント ID: 53
日付: 2000 年 8 月 14 日
時間: 05:13:00
ユーザー: N/A
コンピューター: <Root CA 名>
説明:
アクセスが拒否されたため、証明書サービスによって要求 <要求 #> が拒否されました。
0x80070005 (WIN32: 5)。 要求は (不明なサブジェクト) に対して行われました。 追加情報: ポリシー モジュールによる拒否
ユーザーが登録できるように ACL が設定されているが、CA にユーザーの Active Directory に発行するアクセス許可がない場合は、CA アプリケーション イベント ログに次のエラーが生成されます。
イベントの種類: エラー
イベント ソース: CertSvc
イベント カテゴリ: なし
イベント ID: 46
日付: 2000 年 8 月 14 日
時間: 05:13:00
ユーザー: N/A
コンピューター: <Root CA 名>
説明:
"エンタープライズおよびスタンドアロン出口モジュール" 出口モジュール "Notify" メソッドがエラーを返しました。 アクセスが拒否されました。 返される状態コードは0x80070005 (5) です。 証明機関は、Child\User の証明書をディレクトリ サービスに発行できませんでした。 アクセスが拒否されました。
(0x80070005)