1

在我的 Mac 上,我安装了 OpenLDAP,修改了 /etc/openldap/ldap.conf 并指定了证书的路径。但是,我不断收到此错误:

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)

一切似乎都井然有序。

谢谢埃里克

4

2 回答 2

1

那个设定:

TLS_REQCERT demand

... 是默认的 TLS 证书验证设置。这也是最严格的。

您遇到的问题可能是因为证书是自签名的(如您所示),但您的配置要求完美的验证结果(部分使用 TLS_REQCERT 的“需求”)。

如果证书在各个方面都不完美,使用“需求”将导致任何 LDAP SSL/TLS 连接失败。这包括证书自签名、过期等问题。

您通过 TLS_CACERT 指定了“CA”这一事实很好,但 CACERT 可能不完整。链中某处可能缺少证书字符串。有时我看到有必要将多个 CA 连接在一起,例如,如果使用中间 CA 而不是根 CA 生成证书。

无论如何,最简单的解决方法是尝试用“允许”或“从不”替换“需求”,然后从那里重新测试。如果我可以选择,我会建议“允许”而不是“从不”。

我希望这有帮助...

最大限度

于 2013-07-21T01:51:36.630 回答
0

不确定,但似乎不理解发布服务器证书的证书颁发机构的公钥。在我的客户上,我有:

BASE dc=dom, dc=fr URI ldaps://srvldap.dom.fr/ TLS_CACERT /etc/ssl/MyCAcert.pem TLS_REQCERT 需求

.pem和.cer是同一个DER证书,一个是二进制,一个是ASCII,可以试试pem格式吗?

于 2011-07-07T07:49:48.847 回答