Я установил сервер Active Directory и настроил LDAP-over-SSL, который отлично работает для машин в домене, однако, поскольку он использует сертификаты, предоставленные службами сертификации AD, это вызывает проблемы в других местах.
Я пытаюсь подключиться к порту LDAP-over-SSL из коробки Debian, используя openssl s_client
, и я получаю эту ошибку:
Verify return code: 21 (unable to verify the first certificate)
Я добавил свой новый сертификат корневого ЦС в /usr/share/ca-certificates/extra/my-new-root-ca.crt
и беги update-ca-certificates
, и с помощью этой команды работает:
openssl s_client -CAfile /usr/share/ca-certificates/extra/my-new-root-ca.crt -showcerts -connect my.domain.com:636
Тогда как это:
openssl s_client -showcerts -connect my.domain.com:636
выводит мне эти ошибки вверху вывода:
depth=0
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0
verify error:num=27:certificate not trusted
verify return:1
depth=0
verify error:num=21:unable to verify the first certificate
verify return:1
Также эта команда:
ldapsearch -d8 -x -LLL -H ldaps://my.domain.com -D cn=username -w password -b "dc=my,dc=domain,dc=com" -s sub "(objectClass=user)" givenName
выводит мне этот вывод:
TLS: can't connect: (unknown error code).
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
Итак, похоже, ни то, ни другое openssl s_client
ни ldapsearch
забирают сертификат из /etc/ssl/certs/ca-certificates.crt
. Можно ли заставить openssl принять мой сертификат?
OpenSSL может немного ... нервничать ... каким сертификатам он доверяет - иногда он не использует хранилище доверенных сертификатов системы. Настройте его конфигурацию в openssl.cnf
если вы так склонны доверять правильному магазину.
Для ldapsearch
, такая же сделка - вам нужно установить доверенный сертификат в ldap.conf
чтобы он действительно использовал доверенный сертификат, вариант для этого TLS_CACERT
.