我正在使用的代码:
# 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"}
Run Code Online (Sandbox Code Playgroud)
当我使用ldap://而不是ldaps://时,它可以正常工作.
任何人都可以帮我弄清楚这是为什么吗?
谢谢.:)
jbl*_*ine 21
我来这里寻找解决我的问题的方法.这个问答并没有解决我的确切问题,但是其他人在寻找我的确切问题解决方案时会发现以下内容很有用:
对于那些使用SSL/TLS进行基本传输加密而非身份验证(自签名证书)的用户,您只需关闭服务器证书的严格检查:
ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_ALLOW)
Run Code Online (Sandbox Code Playgroud)
这大致类似于设置OpenLDAP 2.1+客户端设置:
tls_checkpeer no
Run Code Online (Sandbox Code Playgroud)
小智 8
忽略证书错误
ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_NEVER)
Run Code Online (Sandbox Code Playgroud)
我从来没有在SSL上使用python-ldap,但我相信你必须告诉ldap在服务器证书上执行哪些检查.如果将其设置为demand(可能是默认值),则必须为其提供有效的证书.
请参阅Demo目录中的initialize.py源.
| 归档时间: |
|
| 查看次数: |
16533 次 |
| 最近记录: |