Назад | Перейти на главную страницу

LDAP + TLS - разное поведение на двух машинах

машины:

  1. дебиан хриплый
  2. suse 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}"

полученные результаты:

я не могу объяснить несоответствие, и я действительно хочу, чтобы команда 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 из нестабильной версии также ломает его.

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