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
は実際にクライアントで何かをしますか?ありがとう。
クライアントとサーバーの両方で、以下を/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://」を使用しない点が異なります。