私は証明書とopenldap
に精通していません。他の誰かの作品を古いOSからCentOS-6
にopenldap-2.4.23
で移植しようとしています。古いOSでは、LDAP接続は問題なく機能していました。 CentOS-6
で、単純なバインドを実行すると、次のエラーが発生します。
TLS error -8179:Peer's Certificate issuer is not recognized
。
私の/etc/openldap/ldap.conf
には1行あります:
TLS_CACERTDIR /etc/openldap/certs
その行をコメントアウトして次のファイルをファイルに入れてみましたが、受け取ったエラーメッセージは変わりませんでした。
tls_reqcert allow
また、ldap.conf
に次の行だけを入れてみましたが、エラーは変わりませんでした。この 質問 にある情報に基づいてこれを試しました。
LDAPTLS_CACERT /etc/ssl/certs/ca-bundle.crt
次のディレクトリにファイルをコピーしました。
/etc/pki/tls/certs/ca.crt
/etc/pki/tls/certs/server.crt
/etc/pki/tls/private/server.key
openldap-2.4.23
を使うしかない。このエラーの原因やトラブルシューティングのために何ができるかについて何か考えはありますか?
前もって感謝します。 SP
http://www.zytrax.com/books/ldap/ch6/ldap-conf.htmlTLS_CACERT
は、クライアントがCA cert
を含むファイルを指している必要があります。証明書の検証に使用します。サーバーCA [サーバー証明書に署名したCA]が、TLS_CACERT
が[あなたの場合は/etc/ssl/certs/ca-bundle.crt
を指すファイルに存在することを確認する必要があります。
同じエラーが発生しました。私の場合、その理由は、クライアントの/etc/ipa/ca.crtに間違った証明書があったためです。これを修正するために、/ etc/ipa/ca.crtをKDCサーバーからクライアントにコピーしたところ、エラーが消えました。
環境によっては、OpenLDAPは_TLS_CACERTDIR
_に設定された値を完全に無視する場合があります。これは、明らかにGnuTLSがそのタイプの証明書ストアをサポートしていないためです。
ldap.conf(5)
のマニュアルページから
_ TLS_CACERTDIR <path>
Specifies the path of a directory that contains Certifi‐
cate Authority certificates in separate individual files.
The TLS_CACERT is always used before TLS_CACERTDIR. This
parameter is ignored with GnuTLS.
_
私の場合、GnuTLSが使用されていると思われるので、_TLS_CACERTDIR
_は単に何もしません。サーバーの署名CAの証明書を含むファイルを指す_TLS_CACERT
_を使用すると、うまくいったようです。
https://serverfault.com/questions/437546/centos-openldap-cert-trust-issues の方がはるかに完全な答えだと思います。