Windows ServerのADには、LDAPサービスが動いています。
ADV190023の問題から、LDAPSの有効化が少し話題になっていますが、Windows ADサーバーのLDAPサーバーの通信を暗号化させるLDAPS(LDAP over SSL)の方法を紹介したいと思います。
レジュメ
環境・前提条件
- Windows Server 2019 ADでも
- Windows Server 2016 ADでも
同様でした。
まず、
実はADサーバーはデフォルトでLDAPSのTCPポート番号636はリッスンしているんです!LSITENING
これには驚きました。
Windows Server 2016のADでも、Windows Server 2019のADでも同様で、どちらのドメインコントローラー(ADサーバー)でも、LDAPSのTCP636ポートはリッスンしていました。
では、ドメインコントローラー(ADサーバー)はデフォルトでLDAPSが使えるのか?
答えは「No」です。
LDAPSの636ポートは空いているのですが、LinuxのopensslコマンドでSSL証明書を確認したところ、
write:errno=104
no peer certificate available
No client certificate CA names sent
この出力はつまりは、SSL証明書が無いことを意味しています。暗号化されていない。
636ポートは、ADサーバーはデフォルトでSSLで暗号化はされていませんが、LDAPとしては使用できる状態なのですね。
上のように、「ldp.exe」で636ポート接続しバインドすると、LDAPの検索結果が返ってきました。
結論、LDAPSを有効化する方法はADサーバーにSSL証明書を配置すること
ADサーバーでは、ADを構築するとデフォルトでTCP636ポートが空いています。
あとは、SSL証明書をADサーバーに置けばLDAPSを有効化することが出来ます。
LDAPS を構成するためのユーザー インターフェイスはありません。有効な証明書をインストールするドメイン コント ローラーで LDAP サービスをリッスンし、自動的に受け入れる、LDAP とグローバル カタログ トラフィックの両方に SSL 接続を許可します。
サードパーティの証明機関が SSL 経由で LDAP を有効にする方法
SSL証明書をADサーバーに配置し、LDAPSを有効化させる方法は2つの方法ある
- ADにエンタープライズCAを構築する
- ADサーバーにSSL証明書をインポートし配置する
です。
前者の方法は、AD環境にエンタープライズなCAを構築すると、自動でADサーバーの636ポートはLDAPSになります。勝手に、エンタープライズCAからSSL証明書がドメインサービスに配布され、LDAPSになり、さらにドメイン参加クライアントにもCAの証明書が配布されます。
後者の方法について、有償の信頼できるSSL証明書を配布するメリットはローカルなAD環境では少ないのでオレオレ証明書(自己証明書)を作って試してみます。
LDAPSを有効化するためにADサーバーにSSL証明書をインポートする場所
「mmc」を開き、スナップインの「証明書」を追加します。
追加する「証明書」は「サービス」の「Active Directory Domain Service」の証明書スナップインです。
そのNTDSの証明書の中で、「NTDS\個人」を右クリックし、「すべてのタスク」-「インポート」から作成したオレオレ証明書をインポートしてあげれば、直ぐにLDAPS有効化されます。
ちなみにどちらの方法でもドメイン参加クライアント以外からのアクセスには証明書を信頼してあげる必要がある
ちなみに、どちらの方法をとってADサーバーのLDAPSを有効化をしたとしても、どちらともローカル内の証明機関となるため、このSSL証明書を信頼するには、LDAPSクライアントにSSL証明書を信頼するルート証明機関として追加してあげなければなりません。
上記は、クライアントは信頼していないLDAPSサーバーに接続した時の例です。もちろん、ブラウザのようにこの警告を無視してアクセスすることも出来ますが、それでは信頼度が薄れてしまいます。
SSL証明書は、通信の暗号化だけでなく、そのサーバーの信頼性を証明するものでもあるんですよね。
必要なLDAPSクライアント機器には、エンタープライズCA証明書もしくはオレオレ証明書を信頼させるインポート処理をしてあげましょう。