2017-08-03 80 views
0

我已成功使用python-ldap通過ldaps連接到Windows 2012 R2服務器。我用這個程序如下:無法從python-ldap連接到windows server 2016上的ldaps

Python代碼:

import ldap 
ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_NEVER) 
ldap.set_option(ldap.OPT_DEBUG_LEVEL, 255) 
ip = '<redacted>' 
url = "%s://%s:%d" % ('ldaps', ip, 636) 
ld = ldap.initialize(url) 
ld.protocol_version = 3 
ld.set_option(ldap.OPT_REFERRALS, ldap.OPT_OFF) 
user = '<redacted>' 
passwd = '<redacted>' 
ld.simple_bind_s('<redacted>\%s' % user, passwd) 

和Windows服務器上,我使用了「服務器管理器」添加「AD CS」的角色,並創建了一個根證書。我不關心驗證證書,只是使用一些加密。在創建根證書之後,服務器上啓用了LDAPS,並且此代碼運行時沒有錯誤。

現在,我在windows server 2016上遵循了完全相同的過程,結果並不是很好。我已經設法從同一個腳本中得到一些錯誤。通常是'收到一個意外長度的TLS數據包'。或'推送功能出錯'。我已經搜索了幾個小時,但我一直無法找到解決方案。有誰知道是否需要額外的步驟在Windows服務器上進行配置,或者如果有關於我的腳本的內容不正確?

我正在測試的客戶端是使用python 2.7和ubuntu 14.04。 pip2.7已將python-ldap庫更新爲最新版本。 Lere是腳本運行失敗的一個例子:

ldap_create 
ldap_url_parse_ext(ldaps://<redacted>:636) 
ldap_sasl_bind 
ldap_send_initial_request 
ldap_new_connection 1 1 0 
ldap_int_open_connection 
ldap_connect_to_host: TCP <redacted>:636 
ldap_new_socket: 3 
ldap_prepare_socket: 3 
ldap_connect_to_host: Trying <redacted>:636 
ldap_pvt_connect: fd: 3 tm: -1 async: 0 
TLS: can't connect: Error in the push function.. 
ldap_err2string 
Traceback (most recent call last): 
    File "test_ldap.py", line 13, in <module> 
    ld.simple_bind_s('<redacted>\%s' % user, passwd) 
    File "/usr/local/lib/python2.7/dist-packages/ldap/ldapobject.py", line 228, in simple_bind_s 
    msgid = self.simple_bind(who,cred,serverctrls,clientctrls) 
    File "/usr/local/lib/python2.7/dist-packages/ldap/ldapobject.py", line 222, in simple_bind 
    return self._ldap_call(self._l.simple_bind,who,cred,RequestControlTuples(serverctrls),RequestControlTuples(clientctrls)) 
    File "/usr/local/lib/python2.7/dist-packages/ldap/ldapobject.py", line 108, in _ldap_call 
    result = func(*args,**kwargs) 
ldap.SERVER_DOWN: {'info': 'Error in the push function.', 'errno': 104, 'desc': "Can't contact LDAP server"} 

回答

0

所以看來,這是我只是不明白的窗口事物之一。第二天開始工作後,上面的代碼剛開始工作。看來,Windows服務器可能需要許多小時才能使LDAPS可用於連接。

相關問題