OpenLDAPサーバーを使用してUbuntu 12.04で作業しています。私は buntuヘルプページの説明 に従いましたが、セキュリティなしで問題なく接続できます。接続をテストするために、ldapsearch
を使用しています。コマンドは次のようになります。
ldapsearch -xv -H ldap://ldap.[my Host].local -b dc=[my domain],dc=local -d8 -ZZ
私も使用しました:
ldapsearch -xv -H ldaps://ldap.[my Host].local -b dc=[my domain],dc=local -d8
私の知る限りでは、証明書を正しく設定しましたが、なぜ試しても、自己署名証明書をldapsearch
に受け入れられないようです。
これまでのところ、私は試しました:
/etc/ldap/ldap.conf
ファイルを次のように更新:BASE dc=[my domain],dc=local URI ldaps://ldap.[my Host].local TLS_CACERT /etc/ssl/certs/cacert.crt TLS_REQCERT allow
/etc/ldap.conf
ファイルを次のように更新:base dc=[my domain],dc=local uri ldapi:///ldap.[my Host].local uri ldaps:///ldap.[my Host].local ldap_version 3 ssl start_tls ssl on tls_checkpeer no TLS_REQCERT allow
/etc/default/slapd
を更新して以下を含めます:
SLAPD_SERVICES = "ldap:/// ldapi:/// ldaps:///"
数時間のグーグル操作、そのほとんどがTLS_REQCERT allow
の追加につながりました
私が見ている正確なエラーは:
ldap_initialize( ldap://ldap.[my Host].local )
request done: ld 0x20038710 msgid 1
TLS certificate verification: Error, self signed certificate in certificate chain
TLS: can't connect.
ldap_start_tls: Connect error (-11)
additional info: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
この数時間後、誰かがこの問題を見たり、修正したりする方法を知っていることを望んでいました。さらに情報を追加する必要があるかどうか、またはさらにデータが必要な場合はお知らせください。
問題は、Ubuntu 12.04に同梱されているバージョンのGnuTLSで、欠陥のある暗号バックエンドが使用されていることです。
GnuTLSは、gcryptを暗号バックエンドとして使用することからネトルに切り替えることになっていますが、ライセンスの問題があります。具体的には、一部のGPLライセンスでは、新しいバージョンまたは古いバージョンのGPLとのリンクを許可していますが、許可していないライセンスもあります。
イラクサで構成されたソースからGnuTLSを再構築するか、Howard Chuが提案した方法でgcryptをハックすることができます。前者の説明はこのバグレポートにあります。
をセットする LDAPTLS_REQCERT
変数をnever
に変更して、期限切れまたは無効である可能性のあるサーバー上の証明書を無視します。
LDAPTLS_REQCERT=never ldapsearch -D "cn=drupal-test,ou=Services,dc=example,dc=com" -w my_pass -h ldap.example.com -b "ou=People,dc=example,dc=com" -s sub -x -ZZ "(uid=admin)"
または、サーバーに正しい証明書があるかどうかを確認します。
Ldapsearchを実行しているクライアントマシンでは、ldap.confに
TLS_CACERT /etc/ssl/certs/cacert.crt
CA証明書を保存したサーバー構成からパスをコピーしました。パスと同じ場所にあるサーバーからクライアントにCA証明書をコピーします。
ここを参照してください- http://www.openldap.org/pub/ksoper/OpenLDAP_TLS.html
これと同じ問題が発生した、私の失敗の理由は、openssl(CA.plスクリプトを使用)を使用して作成された私の証明書と一緒に12.04(slapdパッケージはGNUTLSで構築されている)でLDAPを使用していることです
解決策:GNUTLSのcerttoolで自己署名証明書を再作成すると、TLSを使用したLDAPが機能しました。
私は同様の問題に遭遇しました-自己署名証明書でLDAPSディレクトリサーバーをldapsearchしようとしました。これは、-d8デバッグレベルを設定してldapsearchから取得する実際のエラーです。
TLS certificate verification: Error, self signed certificate in certificate chain
TLS: can't connect.
ldap_bind: Can't contact LDAP server (-1)
additional info: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
サーバーはすでに「TLS_REQCERT try」で設定されているので、実際のサーバーのldap.confが他のアプリケーション用に設定されて機能している場合に変更しないようにしました。グローバル構成なしでldapsearch(および他のユーティリティ)を機能させるために使用されるローカル構成ファイル「.ldaprc」があることがわかりました。これにより、TLS_REQCERT設定を上書きして「許可」にして、ldapsearchの問題を解決できました。
#~/.ldaprc
TLS_REQCERT allow
これは、このインプレースと-d8を使用した出力です。
TLS certificate verification: Error, self signed certificate in certificate chain
TLS: unable to get peer certificate.
... (actual query works)...