Linux

LDAP + TLS - 兩台機器上的不同行為

  • February 17, 2012

機器:

  1. Debian 喘息
  2. 使用 11

命令:

  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:主機名與對等證書中的 C​​N 不匹配
  • 機器 1,命令 2:工作
  • 機器 2,命令 1:工作
  • 機器 2,命令 2:無法確定對等主機名以進行驗證

我無法解釋不一致之處,我真的希望命令 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正在查看任何內容。

您應該檢查遠端 SSL 證書的主題“CN”部分是否與您的命令 (ad.unsw.edu.au) 中的 LDAPS 伺服器的主機名相同。

要查看遠端證書,請使用:

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 或更高版本,您的命令行應該可以正常工作。這記錄在更改文件中:

http://cpansearch.perl.org/src/MARSCHAP/perl-ldap-0.44/Changes

Bug Fixes
* un-break certificate verification

引用自:https://serverfault.com/questions/326265