自签名证书的LDAP连接问题
我正在使用的代码:
# 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 文件,里面有示例。