Active DirectoryのLDAPS通信を有効化する
- 2021.01.06
- ツール 開発
- Active Directory, LDAPS, Windows Server 2019, 証明書
Active DirectoryでLDAPS通信ができるようにするための設定を行います。
Active Directoryをインストールするだけで、LDAPSのポートは利用可能になっていますが、SSL証明書がないため有効化されていません。
ここでは、SSL証明書をインストールする手順を記載します。
構築が行いたい場合、以下を参照してください。
LDAPS通信を有効化する
LDAPS通信を有効化するには、SSL証明書をADに設定してあげる必要があります。
※証明書はエンタープライズ証明書をADで発行して使用するかサードパーティーCAから発行された証明書をインストールする必要があります。自己署名証明書も使うことはできますが、LDAPクライアント側で自己署名証明書を信頼する必要があります。
ここでは、検証用ADであるため、PowerShellを使用して10年の自己署名証明書を作成して設定したいと思います。
自己署名証明書作成(PowerShell)
New-SelfSignedCertificate を利用して、証明書を発行します。
ADがLDAPSを有効化するためには、以下に気を付けて証明書を発行する必要があります。
1.SubjectとDnsNameにADのルートDNを指定する。例:DC=ad,DC=example,DC=comなら、SubjectとDnsNameはad.example.com
2.DnsNameの1つ目にSubjectと同じホスト名(ルートDN)を指定する。
$certificate = New-SelfSignedCertificate -DnsName "ADのルートDN(ad.example.com)", "外部から接続するなら、ホスト名" -CertStoreLocation "cert:\LocalMachine\My" -KeyExportPolicy Exportable -NotAfter (Get-Date).AddYears(10)
New-SelfSignedCertificate ではいろいろオプションをつけて証明書を発行できますので、細かいオプションパラメータが知りたい場合は、公式リファレンスを参照してください。
https://docs.microsoft.com/en-us/powershell/module/pkiclient/new-selfsignedcertificate?redirectedfrom=MSDN&view=win10-ps
Certlm.mscを開きます。
証明書 – ローカルコンピューター > 個人 > 証明書と開くと、作成した証明書があると思います。
作成した証明書をPowerShellでエクスポートします。
※上記のCertlm.mscからもエクスポートできますが、パスワードの設定などが必須になるため、あえてPowerShellからエクスポートしています。お好みで。
Export-Certificate -Type CERT -Cert $certificate -FilePath "C:\self-signed.cer"
自己署名証明書のインストール
サービスが証明書を利用できるように、ローカルPCで発行した証明書をサービス用にインポートします。
mmcを起動します。(C:\Windows\System32\mmc.exe)
ファイル > スナップインの追加と削除を選択します。
利用できるスナップインから「証明書」を選択、「追加」します。
「サービスアカウント」を選択し、次へ
何も変更せず「次へ」
「Active Directory Domain Services」を選択して「完了」を押下し、OKでウィンドウを閉じます。
mmcに戻るとコンソールルート配下に「証明書」と表示されていると思います。
「証明書」を展開し、「NTDS\個人」を右クリックし、すべてのタスク > インポートを選択します。
証明書のインポートウィザードで作成した証明書をインポートします。
「次へ」を選択します。
先ほど作成しエクスポートした証明書(C:\self-signed.cer)を選択し、「次へ」
証明書ストア:NTDS¥個人のまま、「次へ」
ファイルと、ストアが間違っていないことを確認し、「完了」
ここまでで、ADに自己署名証明書を設定することができました。
これでLDAPS通信ができるようになります。
※LDAPクライアントで自己署名証明書を信頼する必要あり
LDAPS通信の確認
LDAPSが有効になっているかを確認するために、Windows Server上からLdp.exeを使って確認します。
ldp.exeを起動します。(C:\Windows\System32\ldp.exe)
LDPを起動したら、上部メニュー「接続」> 「接続」と選択します。
サーバー名はActiveDirectoryのホスト名(証明書に記載したDnsNameのどちらか)
ポートは636を選択
SSLにチェックを入れてOKを押して接続を試します。
接続に成功すると以下のような出力がドバっと出ます。
一部マスクしてます。
LDAPSで接続できないとき
もし、失敗したときはイベントログを参照しましょう。
エラーや今どのようになっているのかがわかります。
イベントビューアーを開いて、カスタムビュー > サーバーの役割 > Active Directory ドメイン サービスを選択します。
LDAPS通信が利用できる状態になっている場合、イベントには以下が記録されているはずです。
LDAPSが利用できる状態のとき
レベル:情報
ソース:ActiveDirectory_DomainService
イベントID:1221
メッセージ:現在、Secure Sockets Layer (SSL) で LDAP が利用できます。
SSL証明書が読み込まれていないとき
レベル:警告
ソース:ActiveDirectory_DomainService
イベントID:1220
メッセージ:
サーバーが証明書を取得できないため、Secure Sockets Layer (SSL) で LDAP が利用できなくなります。
追加データ
エラーの値:
8009030e No credentials are available in the security package
このエラーが出ているときは、SSL証明書の作り方が間違っていないか、インポート先が間違っていないかなどを確認してみてください。
-
前の記事
Windows Server 2019にActive Directoryを構築する 2021.01.06
-
次の記事
WordPressで必要なセキュリティ対策を行う 2021.02.02