よろづやアンテナ

ITから生活の参考になる情報を備忘録代わりに残していきます

ADCSではなくOpenSSLの証明書でLDAPS、LDAP署名を設定する方法と注意点

おそらく今年中には配信されるLDAP署名と LDAP チャネルバインディングが有効化。ちょっと勘違いしていた部分があったのですが、LDAPSはデフォルトで使用はできないのですが、証明書を置くことでLDAPS通信はできるそうです。これは本当に知らなかったです。LDAP署名はLDAPS強制的な感じですかね。今は、LDAPSとLDAPが併用できますね。

 

このあたりはもう少し整理して情報を提供しようと思いますが、今回は、そのLDAPSを使用するために必要な証明書のネタです。

 

証明書を用意する場合、マイクロソフトの製品であるADCSを使用すると、構築はそれほど難しくはないですが、ドメインコントローラー証明書を自動配布することができます。

 

これ、個人的には一番楽にLDAPSの証明書の準備ができると思いますが、ADCSはADと連携することもあり、運用後のトラブル対応は知識がないとちょっと大変です。普通に使っていれば大丈夫ですが、廃止したい場合も、アンインストール(情報削除)の手順が複雑だったりするので、OpenSSLなどのサードパーティの証明書を使うという手段もあります。

 

 


その場合に参考になるのがこちらです。

 

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

https://support.microsoft.com/ja-jp/help/321051/how-to-enable-ldap-over-ssl-with-a-third-party-certification-authority

 

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) を使ってキーを生成する必要があります。

 

上記の条件を満たしていればOpenSSLの証明書でもLDAPSにて問題なく通信させることができます。しかし、③が意外と分かりにくいです。

 

こちらについてはフォーラムに詳しく書かれています。

 

LDAPS用証明書について

https://social.technet.microsoft.com/Forums/office/ja-JP/3ffdb0ae-95b6-452e-8359-989569b0c5e4/ldaps2999235388261262636012395123881235612390?forum=activedirectoryja

 

以下の回答が参考になりますね、

 

この件ですが、たぶんしたのページをみて、CSRを作ったのだと思います。

https://support.microsoft.com/en-us/help/321051/how-to-enable-ldap-over-ssl-with-a-third-party-certification-authority

うえのrequest.infで足りないのは、おそらくSAN(Subject Alternative Name)の設定です。うえの資料にある<CN=FQDN>Subjectだと実質うまくいかないので、SANをDNS Nameで指定するよう、CSRに加える必要があります。

追記:もちろんSANに入れるのはサーバーのFQDNです。

 

実はSAN形式はレジストリを設定変更する必要があります。以下はSAN形式を有効にする手順です。

> certutil -setreg policy\EditFlags +EDITF_ATTRIBUTESUBJECTALTNAME2
> net stop certsvc
> net start certsvc

 

この後、ようやく、DNS Nameを指定して別名の証明書を発行できるようになるのです。意外と難しいですよね。