使用python-ldap进行修改时出现TLS错误

时间:2017-03-02 15:19:32

标签: python python-ldap

我目前遇到与ldaps的连接问题。在389上连接到非TLS / SSL工作正常。但是我无法对此频道进行任何修改。我收到错误UNWILLING_TO_PERFORM: {'info': '0000001F: SvcErr: DSID-031A0FC0, problem 5003 (WILL_NOT_PERFORM), data 0\n', 'desc': 'Server is unwilling to perform'}。一些谷歌搜索建议需要通过TLS / SSL进行修改。

所以我试图在636上建立联系。事实证明这很麻烦。我试图使用`ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT,ldap.OPT_X_TLS_NEVER)'来忽略证书错误。然而,这根本没有帮助。

我不断得到SERVER_DOWN: {'info': 'SSLHandshake() failed: connection closed via error (-9806)', 'desc': "Can't contact LDAP server"} 下面是连接片段。 (我已经确认636是开放的并尝试过多个DC。我已经在连接字符串ldap:\\server:portldaps:\\serverldaps:\\server:port等上尝试了各种组合。

我包含与失败的UNWILLING_TO_PERFORM错误相关的代码。即使使用高度特权的帐户,也会发生这种情况。

与OutOut TLS一起使用

def changePassword(user_dn):
    for user in user_dn:
        new_password = pw_gen()
        unicode_pass = unicode('\"' + str(new_password) + '\"', 'iso-8859-1')
        password_value = unicode_pass.encode('utf-16-le')
        add_pass = [(ldap.MOD_REPLACE, 'unicodePwd', [password_value])]
        print user
        print new_password
        try:
            l.modify_s(user,add_pass) # `UNWILLING_TO_PERFORM:...'
        except Exception:
            traceback.print_exc()

TLS连接尝试

ConnectDC = 'ldaps://server:port'
ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_NEVER)
l = ldap.initialize(ConnectDC)
l.set_option(ldap.OPT_REFERRALS, 0)

try:
    l.simple_bind_s('user', 'pass') # `SERVER_DOWN:...` 
except Exception:
    traceback.print_exc()

0 个答案:

没有答案