openssl s_client忽略/ usr / share / ca-certificates中的自定义根CA证书

我已经设置了一个Active Directory服务器并configuration了LDAP-over-SSL,这对于域中的机器来说工作正常,但是因为它使用由AD的证书服务提供的证书,所以在其他地方引发了问题。

我正尝试使用openssl s_client从Debian框连接到LDAP-over-SSL端口,并且出现此错误:

 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_clientldapsearch都没有从/etc/ssl/certs/ca-certificates.crt获取证书。 实际上有可能得到openssl接受我的证书吗?

OpenSSL可能会有点震惊..它信任哪些证书 – 有时它不会使用系统的可信证书存储。 在openssl.cnf调整它的configuration,如果你想让它信任正确的商店。

对于ldapsearch ,同样的处理方式 – 您需要在ldap.conf设置可信证书以使其实际使用受信任的证书,该选项为TLS_CACERT