我对项目使用python-ldap
(flask_appbuilder使用)感到困惑。我注意到python-ldap
失败,出现“初始化SSL / TLS错误”。为了验证我的ldap设置正确,我在ldap3
旁使用python-ldap
编写了一个脚本,并注意到ldap3
在使用与python-ldap
相同的配置时成功。
测试代码为:
import ldap3
import ldap
import ssl
URL = 'ldaps://....example.com:636'
USER = 'CN=...'
PASS = '...'
SEARCH = 'OU=...'
FILTER = '(&(objectClass=user))'
# ldap3
server = ldap3.Server(
URL,
use_ssl=True,
tls=ldap3.Tls(validate=ssl.CERT_REQUIRED),
)
conn = ldap3.Connection(server, USER, PASS)
conn.bind()
conn.search(SEARCH, FILTER)
# python-ldap
con = ldap.initialize(URL, 4)
con.set_option(ldap.OPT_REFERRALS, 0)
con.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_ALLOW)
con.set_option(ldap.OPT_X_TLS_NEWCTX,0)
con.start_tls_s()
con.bind_s(USER, PASS)
我能够从ldap3
块中成功获得结果,但是当到达python-ldap
start_tls_s
块时,我得到了:
ldap.UNAVAILABLE: {'info': u'00000000: LdapErr: DSID-0C091338, comment: Error initializing SSL/TLS, data 0, v4563', 'desc': u'Server is unavailable'}
在我的笔记本电脑和测试机(均为Linux机器)上,行为均保持一致。有谁知道为什么会出现这种差异?