逗人〜, 我的环境是: 操作系统:Ubuntu 12.04.4 LTS Python:Python 2.7.3 当使用ldap通过ssl连接到AD服务器时。我收到了这个错误 “收到了意外长度的TLS数据包” 我已经通过tcpdump得到了包并找到了 hello faild
但是当我在相同的环境中使用perl脚本没问题,并且在Ubuntu16中运行的python脚本也成功连接(只有ubuntu12中的python不能正常工作) 成功连接后,hello请求将带来比Ubuntu12更多的密码。 Run well on Ubuntu16 faild时,AD服务器可以找到 error log
我的测试脚本是:
import ldap
TIMEOUT = 30
DEBUG_LEVEL = 8191
TRACE_LEVEL = 10
AD_HOST = "10.29.137.100"
USERNAME = "username"
PASSWORD = "password"
ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_ALLOW)
ldap.set_option(ldap.OPT_DEBUG_LEVEL, 8191)
ldapConn = ldap.initialize("ldaps://" + AD_HOST + ":636",
trace_level=TRACE_LEVEL)
ldapConn.set_option(ldap.OPT_PROTOCOL_VERSION, 3)
ldapConn.set_option(ldap.OPT_X_TLS_CIPHER_SUITE,'TLSv1:!NULL')
ldapConn.set_option(ldap.OPT_REFERRALS, 0)
ldapConn.set_option(ldap.OPT_NETWORK_TIMEOUT , TIMEOUT)
ldapConn.set_option(ldap.OPT_TIMEOUT , TIMEOUT)
ldapConn.simple_bind_s(USERNAME, PASSWORD)
我的问题是如何在python脚本中更改密码? 我发现 ldapConn.set_option(ldap.OPT_X_TLS_CIPHER_SUITE '的TLSv1:NULL') 不适合我。现在我不知道在哪里设置这些密码值。或者第三方所依赖的我可以升级以支持更多密码。
感谢~~~
答案 0 :(得分:0)
你刚刚击中了蟒蛇2/3墙。
您的脚本是python3,您尝试在不向后兼容的python 2.7环境中运行。唯一的选择是在Ubuntu 12上安装python3并使用python3.X运行它。
答案 1 :(得分:0)
今天像我一样,您可能处于以下情况:https://github.com/python-ldap/python-ldap/issues/55(和此处https://github.com/pyldap/pyldap/issues/53):
几个(也许所有的set_option(OPT_X_TLS_ *,...)调用)需要最后一个set_option(ldap.OPT_X_TLS_NEWCTX,0)调用才能提交所有先前的set_option()调用。 没有OPT_X_TLS_NEWCTX,设置将被有效忽略。
=>您可以在初始化调用之前添加ldap.set_option(ldap.OPT_X_TLS_CIPHER_SUITE,'TLSv1:!NULL')
,也可以在绑定之前添加ldapConn.set_option(ldap.OPT_X_TLS_NEWCTX, 0)
。