サード パーティ証明機関を使用して SSL 経由で LDAP を有効にする

この記事では、サード パーティの証明機関を使用して、Secure Sockets Layer (SSL) 経由でライトウェイト ディレクトリ アクセス プロトコル (LDAP) を有効にする方法について説明します。

適用対象: Windows Server 2012 R2
元の KB 番号: 321051

概要

LDAP は、Active Directory の読み取りと書き込みに使用されます。 既定では、LDAP トラフィックはセキュリティで保護されていない状態で送信されます。 SSL/トランスポート層セキュリティ (TLS) テクノロジを使用して、LDAP トラフィックを機密にしてセキュリティで保護することができます。 この記事のガイドラインに従って、Microsoft 証明機関 (CA) または Microsoft 以外の CA から適切に書式設定された証明書をインストールすることで、LDAP over SSL (LDAPS) を有効にすることができます。

LDAPS を構成するためのユーザー インターフェイスはありません。 ドメイン コントローラーに有効な証明書をインストールすると、LDAP サービスは、LDAP トラフィックとグローバル カタログ トラフィックの両方の SSL 接続をリッスンし、自動的に受け入れます。

LDAPS 証明書の要件

LDAPS を有効にするには、次の要件を満たす証明書をインストールする必要があります。

  • LDAPS 証明書は、ローカル コンピューターの個人用証明書ストア (プログラムでコンピューターの MY 証明書ストアと呼ばれます) にあります。

    注:

    NT Directory Services (NTDS) ストアに証明書がある場合は、代わりに NTDS ストアの証明書を使用します。

  • 証明書と一致する秘密キーがローカル コンピューターのストアに存在し、証明書に正しく関連付けられています。 秘密キーで強力な秘密キー保護を有効にしないでください。

  • 拡張キー使用法拡張機能には、サーバー認証 (1.3.6.1.5.5.7.3.1) オブジェクト識別子 (OID とも呼ばれます) が含まれています。

  • ドメイン コントローラーの Active Directory 完全修飾ドメイン名 (dc01.contoso.com など) は、次のいずれかの場所に表示する必要があります。

    • [件名] フィールドの共通名 (CN)。
    • サブジェクト代替名拡張機能の DNS エントリ。
  • 証明書は、ドメイン コントローラーと LDAPS クライアントが信頼する CA によって発行されました。 信頼は、発行元の CA チェーンのルート CA を信頼するようにクライアントとサーバーを構成することによって確立されます。

  • Schannel 暗号化サービス プロバイダー (CSP) を使用してキーを生成します。

証明書要求を作成する

有効な PKCS #10 要求を作成するユーティリティまたはアプリケーションは、SSL 証明書要求を形成するために使用できます。 Certreq を使用して要求を形成します。

Certreq.exe では、ドメイン コントローラーに対して適切な X.509 証明書要求を生成するためのテキスト命令ファイルが必要です。 このファイルは、優先する ASCII テキスト エディターを使用して作成できます。 ファイルを .inf ファイルとしてハード ドライブ上の任意のフォルダーに保存します。

LDAPS に適したサーバー認証証明書を要求するには、次の手順を実行します。

  1. .inf ファイルを作成します。 証明書要求の作成に使用できる .inf ファイルの例を次に示します。

    ;----------------- request.inf -----------------

    [Version]

    Signature="$Windows NT$

    [NewRequest]

    Subject = "CN=<DC fqdn>" ; を DC の FQDN に置き換えます
    KeySpec = 1
    KeyLength = 1024
    ; 1024、2048、4096、8192、または 16384 にすることができます。
    ; キー サイズが大きいほどセキュリティが強化されますが、
    ; パフォーマンスへの影響が大きくなります。
    Exportable = TRUE
    MachineKeySet = TRUE
    SMIME = False
    PrivateKeyArchive = FALSE
    UserProtected = FALSE
    UseExistingKeySet = FALSE
    ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
    ProviderType = 12
    RequestType = PKCS10
    KeyUsage = 0xa0

    [EnhancedKeyUsageExtension]

    OID=1.3.6.1.5.5.7.3.1 ; これはサーバー認証用です

    ;-----------------------------------------------

    サンプル ファイルを切り取って、Request.inf という名前の新しいテキスト ファイルに貼り付けます。 要求内のドメイン コントローラーの完全修飾 DNS 名を指定します。

    一部のサード パーティ証明機関では、サブジェクト パラメーターに追加情報が必要な場合があります。 このような情報には、電子メール アドレス (E)、組織単位 (OU)、組織 (O)、地域、または都市 (L)、都道府県 (S)、および国または地域 (C) が含まれます。 この情報は、Request.inf ファイルのサブジェクト名 (CN) に追加できます。 例:

    Subject="E=admin@contoso.com, CN=<DC fqdn>, OU=Servers, O=Contoso, L=Redmond, S=Washington, C=US"

  2. コマンド プロンプトで次のコマンドを実行して、要求ファイルを作成します。

    certreq -new request.inf request.req
    

    Request.req という名前の新しいファイルが作成されます。 base64 でエンコードされた要求ファイルです。

  3. 要求を CA に送信します。 要求は、Microsoft CA またはサード パーティの CA に送信できます。

  4. 発行された証明書を取得し、次の手順に従って証明書を Certnew.cer として要求ファイルと同じフォルダーに保存します。

    1. Certnew.cer という新しいファイルを作成します。
    2. メモ帳でファイルを開き、エンコードされた証明書をファイルに貼り付けてから、ファイルを保存します。

    注:

    保存された証明書は base64 としてエンコードする必要があります。 一部のサード パーティ CA は、発行された証明書を電子メール メッセージの base64 でエンコードされたテキストとして要求元に返します。

  5. コマンド プロンプトで次のコマンドを実行して、発行された証明書を受け入れます。

    certreq -accept certnew.cer
    
  6. 次の手順に従って、証明書がコンピューターの個人用ストアにインストールされていることを確認します。

    1. Microsoft 管理コンソール (MMC) を起動します。
    2. ローカル コンピューター上の証明書を管理する証明書スナップインを追加します。
    3. [証明書 (ローカル コンピューター)]、[個人]、[証明書] の順に展開します。 個人用ストアに新しい証明書が存在する必要があります。 [証明書のプロパティ] ダイアログ ボックスに表示される目的は [サーバー認証] です。 この証明書は、コンピューターの完全修飾ホスト名に発行されます。
  7. ドメイン コントローラーを再起動します。

証明書要求の作成の詳細については、次の高度な証明書の登録と管理に関するホワイト ペーパーを参照してください。 このホワイト ペーパーを表示するには、「高度な証明書の登録と管理」を参照してください。

LDAPS 接続を確認する

証明書がインストールされたら、次の手順に従って LDAPS が有効になっていることを確認します。

  1. Active Directory 管理ツール (Ldp.exe) を起動します。

  2. [接続] メニューの [接続] をクリックします。

  3. 接続するドメイン コントローラーの名前を入力します。

  4. ポート番号として「636」と入力します。

  5. [OK] をクリックします。

    RootDSE 情報が右側のウィンドウに出力され、接続が正常に完了したことを示します。

可能性のある問題点

  • TLS 拡張要求を開始する

    LDAPS 通信は、ポート TCP 636 経由で行われます。 グローバル カタログ サーバーへの LDAPS 通信は、TCP 3269 経由で行われます。 ポート 636 または 3269 に接続すると、LDAP トラフィックが交換される前に SSL/TLS がネゴシエートされます。

  • 複数の SSL 証明書

    Schannel (Microsoft SSL プロバイダー) は、ローカル コンピューター ストアで見つかった最初の有効な証明書を選択します。 ローカル コンピューター ストアで使用可能な有効な証明書が複数ある場合、Schannel は正しい証明書を選択できない場合があります。

  • SP3 以前の SSL 証明書キャッシュの問題

    既存の LDAPS 証明書を別の証明書に置き換える場合は、更新プロセスを通じて、または発行元 CA が変更されたために、Schannel が新しい証明書を使用するためにサーバーを再起動する必要があります。

機能追加

この記事の最初の推奨事項は、証明書をローカル コンピューターの個人用ストアに配置することです。 このオプションはサポートされていますが、Windows Server 2008 以降のバージョンの Active Directory Domain Services (AD DS) の NTDS サービスの個人用証明書ストアに証明書を配置することもできます。 NTDS サービスの個人用証明書ストアに証明書を追加する方法の詳細については、「イベント ID 1220 - LDAP over SSL」を参照してください。

AD DS は、ローカル コンピューターのストアを介して、このストア内の証明書を優先的に検索します。 これにより、使用する証明書を使用するように ADDS を簡単に構成できます。 これは、ローカル コンピューターの個人用ストアに複数の証明書が存在する可能性があり、選択されている証明書を予測するのが困難な場合があるためです。

AD DS は、新しい証明書が証明書ストアにドロップされたときに検出し、AD DS を再起動したり、ドメイン コントローラーを再起動したりすることなく SSL 証明書の更新をトリガーします。

renewServerCertificate という名前の新しい rootDse 操作を使用すると、AD DS を手動でトリガーして、AD DS を再起動したり、ドメイン コントローラーを再起動したりすることなく SSL 証明書を更新できます。 この属性は、adsiedit.msc を使用するか、ldifde.exeを使用して LDAP Directory Interchange Format (LDIF) の変更をインポートすることによって更新できます。 LDIF を使用してこの属性を更新する方法の詳細については、「renewServerCertificate」を参照してください。

最後に、Windows Server 2008 以降のバージョンのドメイン コントローラーがストア内で複数の証明書を見つけた場合、これらの証明書のいずれかをランダムに選択します。

これらはすべて、Windows Server 2008 AD DS と 2008 Active Directory ライトウェイト ディレクトリ サービス (AD LDS) で機能します。 AD LDS の場合は、NTDS サービスの代わりに AD LDS インスタンスに対応するサービスの個人用証明書ストアに証明書を配置します。