Tho*_*ßer 1 python ssl tls1.2 ldap3
使用以下代码可以使用 ldap3 模块在 Python 3.8.x 中设置连接对象。
tls = Tls(validate=ssl.CERT_NONE, version=ssl.PROTOCOL_TLSv1_2)
server = Server(server_uri, use_ssl=True, tls=tls, get_info=ALL)
conn = Connection(server, user="domain\\myusername", password="password", authentication=NTLM, auto_referrals=False)
conn.bind()
Run Code Online (Sandbox Code Playgroud)
但从 Python 3.10 开始,此代码不再有效 - 执行时会导致 SSL 握手错误。我相信这是因为当前 Python 3.10.x 包中使用的 OpenSSL 库发生了变化。
还有其他人遇到过这个问题并希望找到解决方案吗?
同时,我自己找到了解决方案 - 但我不确定这是否是 openSSL 1.1.1 的错误或功能?
从服务器端获取一些调试信息,我发现问题的出现是因为客户端和服务器之间“没有通用密码”。
将服务器端可用的密码添加到我的代码中的 Tls 对象后,可以建立连接。
ciphers='AES256-GCM-SHA384'
# Establish LDAP connection and initialize connection (conn) object
tls = Tls(ciphers=ciphers,validate=ssl.CERT_NONE,version=ssl.PROTOCOL_TLS)
#context = ssl.context(set_cipher_list=AES256-GCM-SHA384)
serverURL = ldap3.Server(host=server,port=636,use_ssl=True,tls=tls)
conn = ldap3.Connection(serverURL, user, pwd)
Run Code Online (Sandbox Code Playgroud)
我仍然很困惑,为什么可以在没有 ciphers 参数的情况下在 openSSL 之前建立连接,而现在需要它 - ciphers='ALL' 也可以工作,所以我相信 openSSL 1.1 中的默认值可能已更改。 1.
亲切的问候
托尔斯滕
| 归档时间: |
|
| 查看次数: |
1505 次 |
| 最近记录: |