Я выдергиваю волосы из-за ldap, хорошо играющего с SSL / TLS. Я могу подтвердить, что сервер прослушивает И отвечает на порт 636 на запрос SSL. openssl s_client -connect freia.fqdn:636 -showcerts
производит ожидаемый результат, gnutls-cli-debug -p636 localhost
производит этот. Сервер был собран из исходников, так как версия из репозиториев ubuntu имела некоторые ошибочные конфигурации и не завершала установку. Сервер запускается с командой slapd -d -1 -h 'ldap:/// ldaps:///'
Обрезанный журнал загрузки Вот. ldapsearch -H ldap:///
также дает ожидаемый результат.
ldapsearch -H ldaps:///
возвращается
ldap_sasl_interactive_bind_s: Can't contact LDAP server (-1)
ldapsearch -Z -H ldaps:///
возвращается
ldap_start_tls: Can't contact LDAP server (-1)
ldap_sasl_interactive_bind_s: Can't contact LDAP server (-1)
Журнал сервера говорит:
TLS trace: SSL_accept:before/accept initialization
tls_read: want=11, got=0
TLS: can't accept: (unknown)
Поскольку он ничего не отправлял, я проверил, что на самом деле отправляет ldapsearch. Он говорит, что не может найти файл pem
TLS: could not load verify locations (file:`/etc/ssl/private/freia_slapd_key.pem',dir:`').
Это полная чушь по мнению strace ldapsearch -Z -H ldaps:/// -d -1
:
open("/etc/ssl/private/freia_slapd_key.pem", O_RDONLY|O_LARGEFILE) = 4
fstat64(4, {st_mode=S_IFREG|0440, st_size=883, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb770b000
read(4, "-----BEGIN RSA PRIVATE KEY-----\n"..., 4096) = 883
read(4, "", 4096) = 0
close(4) = 0
munmap(0xb770b000, 4096) = 0
write(2, "TLS: could not load verify locat"..., 91TLS: could not load verify locations (file:`/etc/ssl/private/freia_slapd_key.pem',dir:`').
Все сертификаты доступны для чтения (или должны быть)
-rw-r--r-- 1 root root 1082 2011-12-26 16:50 /etc/ssl/certs/cacert.pem
-rw-r--r-- 1 root root 1013 2011-12-26 16:51 /etc/ssl/certs/freia_slapd_cert.pem
-r--r----- 1 root root 883 2011-12-26 16:50 /etc/ssl/private/freia_slapd_key.pem
Приветствуются любые идеи! Ура. Slapd.conf и ldap.conf
Проблема в ldap.conf:
TLS_CACERT /etc/ssl/private/freia_slapd_key.pem
Вы используете частный ключ где вы должны были использовать корень свидетельство. В общем случае замените его правильным сертификатом (-ами) CA - сертификатами, которые ldapsearch может использовать в качестве доверенных «корней» для подтверждения всех других («ненадежных») сертификатов, которые он встречает на пути.
Если ваш / etc / ssl / certs / freia_slapd_сертификат.pem (не / etc / ssl / private / freia_slapd_ключ.pem) является самоподписанным, это означает, что он является корневым для себя, и вы можете / должны использовать его как TLS_CACERT. Но это означает, что ему никогда не будет доверять широкая публика, которая вместо этого использует известные «корни» (такие как Verisign и т. Д.).
Кстати, TLS_KEY и TLS_CERT (по праву) игнорируются при размещении в общесистемном ldap.conf. Видеть http://manpages.ubuntu.com/manpages/natty/man5/ldap.conf.5.html