web-dev-qa-db-ja.com

LDP SSLポート636が機能する-ldaps://が機能しない

Server 2008R2のSSLでLDAPを使用しようとしています。すべての設定が完了し、ldp.exeを使用してsslチェックボックスを使用してdomain.example.orgポート636に接続できるようになりました。これはローカルサーバー自体にあります。

ただし、-sslとポート636を使用してldapsearchを使用して接続できません。ldapsearchを使用してsslとポート389が正常に機能しません。

何か案は?クライアントに証明書などをインストールする必要がありますか?私はたいていLDAP接続を暗号化したかっただけです。助けてくれてありがとう!

*編集*

動作するコマンド:

ldapsearch -x -b "dc=XX,dc=example,dc=org" -D "[email protected]" -H ldap://XX.example.org -W '(&(proxyAddresses=smtp*)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))'

機能しないコマンド:

ldapsearch -x -b "dc=XX,dc=example,dc=org" -D "[email protected]" -H ldaps://XX.example.org:636 -W '(&(proxyAddresses=smtp*)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))'

-hのバリエーションを試し、-pを使用してポートを指定しました。

サーバー2008からクライアントに証明書をインストールする方法を教えてください。

5
user1453561

クライアントは独自の証明書を必要としません。 LDAPサーバーの証明書に署名した認証局証明書(または証明書チェーン)を信頼する必要があるだけです。 CA証明書はデフォルトですでに信頼されているため、ローカルホストでこれを心配する必要はありませんでした。

LDAPサーバーが認証局でもあるかどうか、またLDAP証明書としてCA証明書も使用しているかどうかは、質問からは明らかではありません。通常、これらは2つの異なる証明書であり、認証局は異なるマシン上にあります。

いくつかの簡単なグーグルは、TLS_CACERTと呼ばれるldap.confまたはLDAPTLS_CACERTと呼ばれる同等の環境変数に設定できるオプションがあり、環境内の任意/すべてのCA証明書を含むファイルを指すことができることを示しています(base64エンコード)。

環境にCAが1つしかない場合は、その公開証明書のbase64エンコードバージョンをダウンロードできるはずです。また、DERでエンコードされたバージョンしか見つからない場合は、opensslを使用してそれをbase64に変換できます。

openssl x509 -inform der -in cacert.crt -out cacert.pem
1
Ryan Bolger

悲しいことに、彼は予想される行動です。 LDAPは、少なくともWindows ADでは、そのように奇妙です。 ldapsなどはありませんが、ポート番号を指定すると暗号化が行われます。このコマンドを試してください:

ldapsearch -x -b "dc=XX,dc=XXX,dc=org" -D "[email protected]" -H ldap://XX.XXX.org:636 -W '(&(proxyAddresses=smtp*)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))'

LDAP以外のほとんどの場合、SSLのサービスのデフォルトポートでプレーンテキストトラフィックを要求しているように見えます。 LDAPはここでトラフィックを暗号化します。

暗号化が行われていることをverifyするのが非常に難しくなるので、私も好きではありません。ポートの変更では、暗号化されたポートを介してプレーンテキストを送信しているだけかもしれませんが、明示的なスキーマ/プロトコルを使用するとknow少なくとも試行中です。また、明示的なプロトコルスキーマにより、必要に応じて非標準ポートでの実行が容易になります。しかし、好むと好まざるとにかかわらず、これが現状です。

0
Joel Coel