LDAP + TLS – 两台机器上的不同行为

机器:

  1. debian wheezy
  2. 十一

命令:

  1. ldapsearch -ZZ -h ad.unsw.edu.au -x
  2. perl -we "use Net::LDAP; print Net::LDAP->new ('ad.unsw.edu.au')->start_tls(verify => 'require', capath => '/etc/ssl/certs/')->{errorMessage}"

结果:

  • 机器1,命令1:TLS:主机名与对等证书中的CN不匹配
  • 机器1,命令2:工作
  • 机器2,指令1:工作
  • 机器2,命令2:无法确定对等主机名以进行validation

我不能解释不一致,我真的想要命令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也会破坏它。

https://rt.cpan.org/Public/Bug/Display.html?id=70795