OpenLDAP:Mac上的连接失败

时间:2011-07-06 11:31:37

标签: openldap

在我的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)

一切似乎都井然有序。

由于 埃里克

2 个答案:

答案 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格式吗?