Ошибка OpenLDAP TLS с ошибкой TLS init def ctx: -69 - PullRequest
1 голос
/ 08 мая 2020

Я 2 дня пытался заставить OpenLDAP работать с TLS, где у меня есть сертификат сайта, подписанный моим собственным Промежуточным ЦС, который был подписан моим собственным Root ЦС. И независимо от того, что я пробовал, я получаю TLS init def ctx failed: -69 в syslog, и slapd не запускается.

Я запустил ldapmodify на следующем полученном код выхода 0:

dn: cn=config
changetype: modify
replace: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ldap/ca-certs/ca-ica.cert.crt
-
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ldap/sasl2/site.cert.crt
-
replace: olcTLSCertificateKeyFile:
olcTLSCertificateKeyFile: /etc/ldap/sasl2/site.key.crt

Я установил владельцем этих файлов openldap. У меня chmod 640 на site.key.crt. ca-ica.cert.crt был создан cat intermediate.crt ca.cert> ca-ica.cert.crt

Я знаю, что цепочка сертификатов проверяется, потому что я запускаю openssl verify -CAfile ca-ica.cert.crt site.cert.crt, и он отлично работает.

Я даже пробовал использовать olcTLSCertificatePath в каталоге c_reha sh. Ничего не работает.

Если я просто попробую простой самозаверяющий сертификат, все будет работать нормально, и я смогу подключиться к StartTLS.

Я примерно на 20% разбираюсь в OpenLDAP и примерно на 30% в управлении сертификатами. Но я в замешательстве.

Мы будем благодарны за любые идеи.

Обновлено Я запустил slapd с -d trace. Вот вывод системного журнала. Спасибо за помощь. /usr/sbin/slapd --version возвращает ls (GNU coreutils) 8.21. Сертификаты представляют собой формат PEM, созданный с помощью openssl версии 1.01f от 6 января 2014 года. Да. Это старый. содержимое syslog с -d trace.

May 18 15:45:22 JohnLaptop kernel: [1017829.972053] type=1400 audit(1589834722.159:158): apparmor="DENIED" operation="open" profile="/usr/sbin/slapd" name="/home/john/openldap-certs/ca.crt" pid=21376 comm="slapd" requested_mask="r" denied_mask="r" fsuid=119 ouid=119

Я возился с ним и теперь получаю -1 вместо -69.

Ответы [ 2 ]

1 голос
/ 18 мая 2020

На основании путей и кода ошибки я предполагаю, что используемая библиотека TLS - GnuTLS.

Из https://gnutls.org/manual/html_node/Error-codes.html, ошибка -69 - GNUTLS_E_ASN1_DER_ERROR.

При поиске в Google кажется, что это может произойти, если сертификат считается недействительным, и что GnuTLS может быть более строгим, чем OpenSSL в некоторых моментах. Недавний пример: https://gitlab.com/gnutls/gnutls/-/issues/196

Вы можете получить более полезный отзыв, если попытаетесь проверить цепочку с помощью Certtool (apt install gnutls-bin) GnuTLS. https://www.gnutls.org/manual/html_node/certtool-Invocation.html

0 голосов
/ 20 мая 2020

Из вашего обновления:

May 18 15:45:22 JohnLaptop kernel: [1017829.972053] type=1400 audit(1589834722.159:158): apparmor="DENIED" operation="open" profile="/usr/sbin/slapd" name="/home/john/openldap-certs/ca.crt" pid=21376 comm="slapd" requested_mask="r" denied_mask="r" fsuid=119 ouid=119

Это отказ AppArmor.

Профиль /etc/apparmor.d/usr.sbin.slapd содержит файлы и папки, к которым slapd имеет доступ. /home/john/openldap-certs/ca.crt среди них нет; если вы хотите использовать это местоположение, вам придется отключить профиль (o ju, или добавить к нему свой путь.

Если вы просто хотите временно закрыть AppArmor для отладки, вы можете установить для него Режим жалоб:

sudo aa-complain /usr/sbin/slapd

Когда вы закончите и захотите снова включить его:

sudo aa-enforce /usr/sbin/slapd

Подробнее о AppArmor в вики Ubuntu: https://wiki.ubuntu.com/DebuggingApparmor

...