openssl - 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。
解决方案
我假设使用的 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
推荐阅读
- reactjs - 如何使用 jest/react-testing-library 模拟 socket.io-client
- angular - 当第二个 observable 依赖于第一个时,使用 combineLatest
- php - ORA-00904: 带有左外连接的无效标识符
- java - 将多个 int 值与 0 进行比较的有效方法
- asp.net-core-mvc-2.0 - Asp.Net Core 2.2 MVC - 在子文件夹中设置到控制器的默认路由
- formula - 不使用表格计算的 Tableau 运行总计
- c# - 如何将自动生成的 ID 插入外键列
- android - 如何使用 Android 手机摄像头扫描图像(来自 PC 显示器)并将图像数据转换为 OpenCV Mat 格式?
- python-3.x - 在单独的线程中等待而不阻塞主事件循环,异步 python
- excel - 每年、每月和每天计算 GEOMEAN