机器:
命令:
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 )和suseNet Net::LDAP正在寻找什么。
您应该检查远程SSL证书是否具有与您的命令(ad.unsw.edu.au)中的LDAPS服务器的主机名相同主题的“CN”部分。
要查看远程证书使用:
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钥匙串中。
Net :: LDAP :: start_tls()在perl-ldap-0.43中被破坏。 如果升级到0.44或更高版本,命令行应该可以正常工作。 这在更改文件中有logging:
http://cpansearch.perl.org/src/MARSCHAP/perl-ldap-0.44/Changes
Bug Fixes * un-break certificate verification
Net::LDAP 0.43中Net/LDAP.pm第233行表示
SSL_verifycn_scheme => "ldap",
debian wheezy使用0.40,但是从unstable升级到0.43也会破坏它。