首页 > 解决方案 > OpenLDAP TLS 失败,TLS init def ctx failed: -69

问题描述

我已经尝试了 2 天让 OpenLDAP 与 TLS 一起使用,其中我有一个由我自己的中间 CA 签名的站点证书,该证书由我自己的根 CA 签名。而且无论我尝试了什么,我都会得到TLS init def ctx failed: -69 in syslog 并且 slapd 无法启动。

我在收到退出代码 0 的情况下运行了 ldapmodify:

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。我在 site.key.crt 上有 chmod 640。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_rehash 目录上使用。没有任何效果。

如果我只是尝试一个简单的自签名证书,一切正常,我可以连接 StartTLS。

我大约 20% 的 OpenLDAP 知识和 30% 的证书管理知识。但我很困惑。

任何想法将不胜感激。

更新 了我用 -d 跟踪运行 slapd。这是系统日志输出。感谢您的帮助。/usr/sbin/slapd --version返回 ls (GNU coreutils) 8.21。证书是从 2014 年 1 月 6 日开始使用 openssl 版本 1.01f 生成的 PEM 格式。是的。它是旧的。带有 -d 跟踪的 syslog 内容。

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。

标签: opensslopenldap

解决方案


我假设使用的 TLS 库是 GnuTLS 的路径和错误代码。

https://gnutls.org/manual/html_node/Error-codes.html,错误 -69 是GNUTLS_E_ASN1_DER_ERROR.

从谷歌搜索来看,如果证书被认为是无效的,似乎可以发出这个,并且 GnuTLS 在某些方面可能比 OpenSSL 更严格。最近的一个例子是:https ://gitlab.com/gnutls/gnutls/-/issues/196

如果您尝试使用 GnuTLS 的 certtool ( apt install gnutls-bin) 验证链,您可能会获得更多有用的反馈。https://www.gnutls.org/manual/html_node/certtool-Invocation.html


推荐阅读