web-dev-qa-db-ja.com

Ubuntu 12.04 LDAP SSL自己署名証明書は受け入れられません

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

この数時間後、誰かがこの問題を見たり、修正したりする方法を知っていることを望んでいました。さらに情報を追加する必要があるかどうか、またはさらにデータが必要な場合はお知らせください。

7
MaddHacker

問題は、Ubuntu 12.04に同梱されているバージョンのGnuTLSで、欠陥のある暗号バックエンドが使用されていることです。

GnuTLSは、gcryptを暗号バックエンドとして使用することからネトルに切り替えることになっていますが、ライセンスの問題があります。具体的には、一部のGPLライセンスでは、新しいバージョンまたは古いバージョンのGPLとのリンクを許可していますが、許可していないライセンスもあります。

イラクサで構成されたソースからGnuTLSを再構築するか、Howard Chuが提案した方法でgcryptをハックすることができます。前者の説明はこのバグレポートにあります。

https://bugs.launchpad.net/bugs/92635

1
user67717

をセットする 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)"

または、サーバーに正しい証明書があるかどうかを確認します。

10
kenorb

Ldapsearchを実行しているクライアントマシンでは、ldap.confに

TLS_CACERT /etc/ssl/certs/cacert.crt

CA証明書を保存したサーバー構成からパスをコピーしました。パスと同じ場所にあるサーバーからクライアントにCA証明書をコピーします。

ここを参照してください- http://www.openldap.org/pub/ksoper/OpenLDAP_TLS.html

4
Chida

これと同じ問題が発生した、私の失敗の理由は、openssl(CA.plスクリプトを使用)を使用して作成された私の証明書と一緒に12.04(slapdパッケージはGNUTLSで構築されている)でLDAPを使用していることです

解決策:GNUTLSのcerttoolで自己署名証明書を再作成すると、TLSを使用したLDAPが機能しました。

2
HVNSweeting

私は同様の問題に遭遇しました-自己署名証明書で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)...
1
Jeff Parsons