マシン:
コマンド:
ldapsearch -ZZ -h ad.unsw.edu.au -x
_Perl -we "use Net::LDAP; print Net::LDAP->new ('ad.unsw.edu.au')->start_tls(verify => 'require', capath => '/etc/ssl/certs/')->{errorMessage}"
結果:
不整合を説明できず、コマンド2をマシン2で動作させたいのですが。何かアイデアはありますか?
straceの後、debian-ldapsearchは_/etc/ssl/certs/ca-certificates.crt
_を調べており、suse-ldapsearchは何も調べていないように見えます。 debian -_Net::LDAP
_は_/etc/ssl/certs/157753a5.?
_(_AddTrust_External_Root.pem
_)を見ており、suse -_Net::LDAP
_は何も見ていない。
Net/LDAP.pm
0.43のNet::LDAP
の233行目は
SSL_verifycn_scheme => "ldap",
debian wheezyは0.40を使用していますが、不安定から0.43にアップグレードすると同様に壊れます。
Net :: LDAP :: start_tls()はPerl-ldap-0.43で壊れています。 0.44以降にアップグレードすると、コマンドラインは正常に機能するはずです。これは、変更ファイルに記載されています。
http://cpansearch.Perl.org/src/MARSCHAP/Perl-ldap-0.44/Changes
Bug Fixes
* un-break certificate verification
コマンドのLDAPSサーバーのホスト名(ad.unsw.edu.au)と同じサブジェクトの「CN」部分がリモートSSL証明書に含まれていることを確認する必要があります。
リモート証明書を確認するには、次を使用します。
echo ""|openssl s_client -connect ad.unsw.edu.au:636 |openssl x509 -noout -subject -dates -issuer
全詳細:
echo ""|openssl s_client -connect ad.unsw.edu.au:636 |openssl x509 -noout -text
発行者のルート証明書がLDAP( OpenLDAP SSL ドキュメントを参照)およびPerl SSLキーストア( IO :: Socket :: SSL を参照)にインポートされ、信頼されていることを確認します。自己署名証明書の場合は、その証明書を信頼できるSSLキーチェーンに追加する必要があります。