自签名证书的LDAP连接问题

14 投票
5 回答
25863 浏览
提问于 2025-04-16 02:52

我正在使用的代码:

# Create LDAPObject instance
conn = ldap.initialize(url)
conn.protocol_version=ldap.VERSION3

conn.simple_bind_s(binddn,bindpw)
# This raises:
# ldap.SERVER_DOWN: 
    {'info': 'error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed', 'desc': "Can't contact LDAP server"}

当我用ldap://而不是ldaps://的时候,它就能正常工作。

有没有人能帮我弄明白这是为什么呢?

谢谢!:)

5 个回答

13

忽略证书错误

ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_NEVER)
30

我来这里是为了寻找解决我问题的方法。虽然这个问答没有解决我具体的问题,但其他寻找我相同问题解决方案的人会觉得以下内容有用:

对于那些使用SSL/TLS进行基本的传输加密,而不是身份验证(比如自签名证书)的人,你只需要关闭对服务器证书的严格检查:

ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_ALLOW)

这大致相当于设置OpenLDAP 2.1+客户端的选项:

tls_checkpeer no
7

我以前从来没有在SSL上使用过python-ldap,但我认为你需要告诉ldap在服务器证书上要进行哪些检查。如果这个设置是“强制”(这可能是默认设置),那么你就必须提供有效的证书。

可以查看源代码中的 initialize.py 文件,里面有示例。

撰写回答