在我的Mac上,我安装了OpenLDAP,修改了/etc/openldap/ldap.conf并指定了cert的路径。但是,我一直收到这个错误:
SERVER_DOWN: {
'info':
'error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:
routines:SSL3_GET_SERVER_CERTIFICATE:
certificate verify failed (unable to get local issuer certificate)',
'desc': "Can't contact LDAP server"
}
ldap.conf中包含:
TLS_REQCERT demand
TLS_CACERT /etc/openldap/CA_tncdc01.cer
cer就在那里:
$ ll /etc/openldap/CA_tncdc01.cer
-rw-r--r--@ 1 eric staff 1298 Jun 23 09:12 /etc/openldap/CA_tncdc01.cer
OpenSSL验证说:
$ openssl verify /etc/openldap/CA_tncdc01.cer
error 18 at 0 depth lookup:self signed certificate
OK
要绑定,我使用(Python):
url = "ldaps://[snip]:636"
l = ldap.initialize(url)
l.simple_bind_s(bind_name, bind_password)
一切似乎都井然有序。
由于 埃里克
答案 0 :(得分:1)
设置:
TLS_REQCERT demand
...是默认的TLS证书验证设置。这也是最严格的。
您遇到的问题很可能是因为证书是自签名的(如您所示),但您的配置要求完美的验证结果(部分使用TLS_REQCERT的'demand')。
如果证书在各方面都不完美,使用'demand'将导致任何LDAP SSL / TLS连接失败。这包括证书自签名,过期等问题。
您通过TLS_CACERT指定了“CA”的事实很好,但CACERT可能不完整。某处链中可能缺少证书字符串。有时我认为有必要将多个CA连接在一起,例如,如果使用中间CA而不是根CA生成证书。
无论如何,最简单的解决方法是尝试用'allow'或'never'替换'demand',然后从那里重新测试。如果我可以选择,我会建议'允许'而不是'永远'。
我希望这会有所帮助......
最高
答案 1 :(得分:0)
不确定,但似乎无法理解发布服务器证书的证书颁发机构的公钥。在我的客户端,我有:
BASE dc = dom,dc = fr URI ldaps://srvldap.dom.fr/ TLS_CACERT /etc/ssl/MyCAcert.pem TLS_REQCERT需求
.pem和.cer是相同的DER证书,一个是二进制,另一个是ASCII,你可以尝试pem格式吗?