我已经设置了一个 Active Directory 服务器并配置了 LDAP-over-SSL,这对于域中的机器来说运行良好,但是由于它使用由 AD 的证书服务提供的证书,因此在其他地方会引起问题。
我正在尝试使用 从 Debian 框连接到 LDAP-over-SSL 端口openssl s_client
,但出现了以下错误:
Verify return code: 21 (unable to verify the first certificate)
我已将我的新根 CA 证书添加到/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 接受我的证书?
答案1
OpenSSL 对其信任的证书可能有点.. 不稳定.. - 有时它不会使用系统受信任的证书存储。openssl.cnf
如果您希望让它信任正确的存储,请调整其配置。
对于ldapsearch
,相同类型的交易 - 您需要设置受信任的证书ldap.conf
以使其实际使用受信任的证书,该选项是TLS_CACERT
。