web-dev-qa-db-ja.com

OpenLDAP overSSL用のLinuxクライアントのセットアップ

OpenLDAPを実行しているサーバーでSSLをセットアップしようとしています(GnuTLSではなくOpenSSLを使用しています)。

サーバーは正常に機能しているようです。ldap://を使用して認証でき、Apache DirectoryStudioからldaps://を使用することもできます。 /etc/ldap.confに次の設定がある限り、クライアントからLDAPSを使用することもできます。

tls_checkpeer no

tls_checkpeer yesを使おうとすると、SSL接続が拒否されます。

サーバーには次の設定があります。

olcTLSCACertificateFile  /etc/ssl/certs/cacert.pem
olcTLSCertificateFile    /etc/ssl/private/newcert.pem
olcTLSCertificateKeyFile /etc/ssl/private/newreq.pem

クライアントには、次の関連エントリがあります。

# ssl on
uri ldaps://192.168.1.15
tls_checkpeer no
# tls_cacertdir /etc/ssl/certs
# tls_cacertfile /etc/ssl/certs/cacert.pem

ファイル/etc/ssl/certs/cacert.pemは、ユーザーが閲覧できるようにアクセスできます。上記の構成で動作します。コメントされた2つのtls_*構成エントリの1つをコメント解除し、tls_checkpeer yesに変更すると失敗します。

証明書(tls_cacertfile)にcacert.pemとnewcert.pemの両方を使用しようとしましたが、機能しませんでした。 cacert.pemには、newcert.pemと同様に、-----BEGIN CERTIFICATE-----セクションがあります。

ただし、cacert.pemのX509v3 extensionsの下には次のものがあります。

X509v3 Basic Constraints: 
    CA:TRUE

...そしてnewcert.pemファイルの同じセクションにこれがあります:

X509v3 Basic Constraints: 
    CA:FALSE
Netscape Comment: 
    OpenSSL Generated Certificate

/ etc/ssl/certs内の他の証明書には、BEGIN CERTIFICATEでマークされたブロック以外には何も含まれていません。

このコマンドの使用:

openssl s_client -connect 192.168.6.144:636 -showcerts

セッションで使用されているcacert.pemとnewcert.pemの内容を確認できます。

クライアントまたはサーバーのどちらでも/etc/ldap/ldap.confに変更を加えていません。

クライアントからのエラーは次のとおりです。

Feb  8 14:32:24 foo nscd: nss_ldap: could not connect to any LDAP server as cn=admin,dc=example,dc=com - Can't contact LDAP server
Feb  8 14:32:24 foo nscd: nss_ldap: failed to bind to LDAP server ldaps://bar: Can't contact LDAP server
Feb  8 14:32:24 foo nscd: nss_ldap: could not search LDAP server - Server is unavailable

サーバーには特別なログエントリはありません。クライアントはUbuntuLucid Lynx 10.04であり、サーバーも同様です。すべてnscdを使用しています。

Red Hat Enterprise Linux 5.7システムで問題を再現しようとすると、反対方向に失敗します。おそらく失敗するはずですが、失敗しません。空のtls_checkpeer yesディレクトリでtls_cacertdirを使用します。両方のシステムで動作するにはSSLが必要です。 UbuntuとRHELの両方が混在しています。

構成を変更するたびにnscdを再起動しました。

これらは私の実際の質問です:

  • tls_checkpeerオプションを機能させるにはどうすればよいですか? (主な質問)
  • ssl onは実際にクライアントで何かをしますか?

ありがとう。

3
Mei

クライアントとサーバーの両方で、以下を/etc/ldap/ldap.confに追加してみてください

TLS_REQCERT never

ちなみに、SSLはopenldapで非推奨になっているようですので、TLSを使用することをお勧めします。 http://httpd.Apache.org/docs/2.2/mod/mod_ldap.html 「OpenLDAPSDK」を検索してください。構成は同じですが、ポート389を使用し、URIで「ldaps://」を使用しない点が異なります。

2
aseq