サードパーティの証明機関との SSL 経由で LDAP を有効にする方法

適用対象: Windows Server 2008 StandardWindows Server 2008 DatacenterWindows Server 2008 Enterprise

概要


Active Directory の読み取りと書き込みには、ライトウェイトディレクトリアクセスプロトコル (LDAP) が使用されます。 既定では、LDAP トラフィックはセキュリティで保護されません。 SSL (Secure Sockets Layer)/トランスポート層セキュリティ (TLS) テクノロジを使用することで、LDAP トラフィックの機密性を確保し、セキュリティを保護することができます。 LDAP 経由で LDAP を有効にするには、この記事のガイドラインに従って、Microsoft の証明機関 (CA) または Microsoft 以外の CA から適切に書式設定された証明書をインストールします。

詳細情報


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

LDAPS 証明書の要件

LDAPS を有効にするには、次の要件を満たしている証明書をインストールする必要があります。
  • LDAPS 証明書は、ローカルコンピューターの個人証明書ストア (コンピューターの MY certificate store とも呼ばれます) にあります。
  • 証明書と一致する秘密キーがローカルコンピューターのストアに存在し、証明書に適切に関連付けられている。 秘密キーの秘密キーの保護を強力にすることはできません
  • 拡張キー使用の拡張機能には、サーバー認証 (1.3.6.1.5.5.7.3.1) オブジェクト識別子 (OID とも呼ばれます) が含まれています。
  • Active Directory のドメインコントローラーの完全修飾ドメイン名 (DC01 など)。DOMAIN.COM) は、次のいずれかの場所に表示されている必要があります。
    • [件名] フィールドの共通名 (CN)。
    • サブジェクトの別名の拡張子の DNS エントリ。
  • 証明書は、ドメインコントローラーと LDAPS クライアントが信頼している CA によって発行された。 [信頼] は、発行 CA がチェーンされているルート CA を信頼するようにクライアントとサーバーを構成することによって確立されます。
  • Schannel 暗号化サービスプロバイダー (CSP) を使ってキーを生成する必要があります。
証明書の信頼を確立する方法の詳細については、「Windows 2000 Server のヘルプ」の「ルート証明機関の信頼を確立するためのポリシー」を参照してください。

証明書の要求を作成する

有効な PKCS #10 要求を作成するすべてのユーティリティまたはアプリケーションは、SSL 証明書の要求を形成するために使用できます。 Certreq を使って要求を形成します。注: この記事で使用するコマンドは、2003バージョンの Certreq に依存しています。 Windows 2000 サーバーでこの記事の手順を実行するには、windows 2003 サーバーから certreq と certcli .dll を Windows 2000 サーバー上の一時ディレクトリにコピーします。Certreq は、ドメインコントローラーに対して適切な x.509 証明書要求を生成するために、テキスト命令ファイルを必要とします。 このファイルは、好みの ASCII テキストエディターを使用して作成できます。 ファイルを .inf ファイルとしてハードドライブ上の任意のフォルダーに保存します。LDAPS に適したサーバー認証証明書を要求するには、次の手順を実行します。
  1. .Inf ファイルを作成します。 証明書の要求を作成するために使用できる .inf ファイルの例を次に示します。
    ; 要求-----------------.inf----------------- バージョン Signature = "$Windows NT $ [新しい要求] Subject = "CN =<DC fqdn>";DC の FQDN で置き換えます KeySpec = 1 KeyLength = 1024 ;1024、2048、4096、8192、または16384を指定できます。 ;より大きなキーサイズはセキュリティで保護されていますが、 ;パフォーマンスへの影響が大きくなります。 エクスポート可能な = TRUE MachineKeySet = TRUE SMIME = False PrivateKeyArchive = FALSE UserProtected = FALSE UseExistingKeySet = FALSE ProviderName = "Microsoft RSA SChannel 暗号化プロバイダー" ProviderType = 12 RequestType = PKCS10 KeyUsage = 0xa0 [EnhancedKeyUsageExtension] OID = 1.3.6.1.5.5.7.3.1;これはサーバー認証用です ;-----------------------------------------------
    サンプルファイルを切り取り、要求 .inf という名前の新しいテキストファイルに貼り付けます。 要求のドメインコントローラーの完全修飾 DNS 名を指定します。 注: 一部のサードパーティの証明機関では、Subject パラメーターに追加情報が必要な場合があります。 この情報には、電子メールアドレス (E)、組織単位 (OU)、組織 (O)、国/地域 (L)、州または都道府県 (C) が含まれます。 この情報は、要求 .inf ファイルのサブジェクト名 (CN) に追加できます。 たとえば、Subject = "E = admin@contoso、CN =<DC fqdn>、OU = Servers、O = Contoso、L = Redmond、S = ワシントン、C = 米国。
  2. 要求ファイルを作成します。 これを行うには、コマンドプロンプトで次のコマンドを入力し、enter キーを押します。
    certreq-新しい要求 .inf 要求。 req
    Req という要求の新しいファイルが作成されます。 これは base64 でエンコードされた要求ファイルです。
  3. CA に要求を送信します。 要求は、Microsoft CA またはサードパーティの CA に送信できます。
  4. 発行された証明書を取得し、要求ファイルと同じフォルダーに Certnew .cer として証明書を保存します。 これを行うには、次の手順を実行します。
    1. 新しいファイルを "Certnew .cer" という名前で作成します。
    2. メモ帳でファイルを開き、エンコードされた証明書をファイルに貼り付けて、ファイルを保存します。
    注: 保存された証明書は、base64 としてエンコードする必要があります。 一部のサードパーティ Ca は、発行された証明書を、メールメッセージで base64 でエンコードされたテキストとして要求者に返します。
  5. 発行された証明書を承諾します。 これを行うには、コマンドプロンプトで次のコマンドを入力し、enter キーを押します。
    certreq-certnew .cer の受け入れ
  6. 証明書がコンピューターの個人用ストアにインストールされていることを確認します。 これを行うには、次の手順を実行します。
    1. Microsoft 管理コンソール (MMC) を起動します。
    2. ローカルコンピューター上の証明書を管理する証明書スナップインを追加します。
    3. [証明書 (ローカルコンピューター)] を展開し、[個人用] を展開して、[証明書] を展開します。
    新しい証明書が個人用ストアに存在している必要があります。 [証明書のプロパティ] ダイアログボックスには、[サーバー認証] が表示されます。 この証明書は、コンピューターの完全修飾ホスト名に対して発行されます。
  7. ドメインコントローラーを再起動します。
証明書の要求を作成する方法の詳細については、次の高度な証明書の登録と管理に関するホワイトペーパーを参照してください。 このホワイトペーパーを参照するには、次の Microsoft Web サイトを参照してください。

LDAPS 接続を確認する

証明書をインストールしたら、次の手順に従って、LDAPS が有効になっていることを確認します。
  1. Active Directory 管理ツール (Ldp.exe) を起動します。 注: このプログラムは、Windows 2000 サポートツールにインストールされています。
  2. [接続] メニューの [接続] をクリックします。
  3. 接続するドメインコントローラーの名前を入力します。
  4. ポート番号として「 636 」と入力します。
  5. [OK] をクリックします。 RootDSE 情報は右側のウィンドウに印刷され、正常に接続されていることを示します。

考えられる問題

  • TLS 延長要求を開始する LDAPS 通信はポート TCP 636 経由で行われます。 TCP 3269 経由で、グローバルカタログサーバーとの接続が LDAPS に行われます。 ポート636または3269に接続している場合、LDAP トラフィックが交換される前に、SSL/TLS がネゴシエートされます。 Windows 2000 は、TLS の開始要求機能をサポートしていません。
  • 複数の SSL 証明書 Schannel、Microsoft SSL プロバイダーは、ローカルコンピューターストアで見つかった最初の有効な証明書を選択します。 ローカルコンピューターストアで利用可能な有効な証明書が複数ある場合、Schannel では正しい証明書が選択されていない可能性があります。
  • SP3 以前の SSL 証明書のキャッシュの問題 既存の LDAPS 証明書が更新プロセスによって、または発行 CA が変更されたため、別の証明書に置き換えられた場合、新しい証明書を使用するためには、サーバーを再起動する必要があります。 Windows 2000 の SSL プロバイダーは、LDAPS 証明書をキャッシュします。ドメインコントローラーが再起動されるまで、変更は検出されません。 これは、Windows 2000 の Service Pack 3 で修正されました。

Windows Server 2008 の機能強化

この記事に記載されている最初の推奨事項は、ローカルコンピューターの個人用ストアに証明書を配置することです。 このオプションはサポートされていますが、Windows Server 2008 およびそれ以降のバージョンの Active Directory ドメインサービス (AD DS) 上の NTDS サービスの個人証明書ストアに証明書を含めることもできます。 NTDS サービスの個人証明書ストアに証明書を追加する方法の詳細については、次の Microsoft TechNet Web サイトを参照してください。AD DS は、このストアの証明書をローカルコンピューターのストアで検索します。 これにより、使用する証明書を使用するように AD DS をより簡単に構成することができます。 これは、ローカルコンピューターのパーソナルストアに複数の証明書が存在する可能性があるため、どのアプリが選択されているかを予測することが難しい場合があります。AD DS は、新しい証明書が証明書ストアにドロップされたときに検出され、AD DS を再起動したり、ドメインコントローラーを再起動したりすることなく、SSL 証明書の更新をトリガーします。" Renewservercertificate " という名前の新しい rootDse 操作を使うと、ad ds を再起動したり、ドメインコントローラーを再起動しなくても、SSL 証明書を更新することができます。 この属性は、 adsieditを使用して更新するか、またはldifdeを使って LDAP ディレクトリインターチェンジ形式 (LDIF) で変更をインポートします。 LDIF を使用してこの属性を更新する方法の詳細については、次の Microsoft MSDN Web サイトを参照してください。最後に、Windows Server 2008 またはそれ以降のバージョンのドメインコントローラーで、ストア内で複数の証明書が検出された場合は、有効期限日が最も遠い証明書が自動的に選択されます。 現在の証明書の有効期限が近づいている場合は、その証明書をストアにドロップすることができます。また、AD DS は自動的に使用に切り替えます。これらの機能はすべて、Windows Server 2008 AD DS と、2008 Active Directory ライトウェイトディレクトリサービス (AD LDS) に対応しています。 AD LDS の場合は、NTDS サービスではなく、広告 LDS インスタンスに対応するサービスの個人証明書ストアに証明書を配置します。