машины:
команды:
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 НИЧЕГО не смотрит. дебиан-Net::LDAP
смотрит на /etc/ssl/certs/157753a5.?
(AddTrust_External_Root.pem
) и suse-Net::LDAP
не смотрит ни на что.
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
Вы должны убедиться, что удаленный SSL-сертификат имеет часть «CN» в теме, такую же, как имя хоста сервера LDAPS в ваших командах (ad.unsw.edu.au).
Чтобы увидеть использование удаленного сертификата:
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 документацию) и хранилище ключей SSL Perl (см. IO :: Socket :: SSL). Если это самозаверяющий сертификат, то этот сертификат следует добавить в надежную цепочку ключей SSL.
строка 233 из Net/LDAP.pm
в Net::LDAP
0,43 говорит
SSL_verifycn_scheme => "ldap",
debian wheezy использует 0,40, но обновление до 0,43 из нестабильной версии также ломает его.