python訪問AD域ldap安全連接


  最近整python操作ad域,找到了python中有相應的第三方庫ldap,分為兩種模式:安全連接636端口和非安全連接389端口,非安全連接可以執行添加操作,但是添加的用戶密碼為空,如果需要修改密碼需要在安全連接下,安全連接則需要導入證書。

  硬件環境:Windows Server2019+python

1、AD域安裝證書服務

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 這里需要安裝上最基本的證書頒發機構,證書頒發機構Web注冊也可以勾選,勾選上可以在客戶端使用web注冊申請證書的方式即可完成證書申請,不勾選的話需要在域控上添加證書即可。

 

 

 

 

 

編輯證書服務,創建企業CA

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

中途設置根據自己的需要進行修改

 

 

 進入證書頒發機構可以查看已辦發的證書。

3.域控上配置證書(注,本步驟和第四步可以達到同樣的目的,即使第三步不做第四步也會在域控上添加上證書)

Win+R輸入mmc,添加/刪除管理單元,選擇 證書,安裝到本地計算機,確定即可

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 此時會彈出證書界面,在個人證書有一個域控計算機名稱的證書,此時可以嘗試編寫代碼進行安全連接,如果不行,參考微軟連接進行本地證書下載。

web訪問http://<server IP/name>/certsrv 需要使用IE瀏覽器,

 

 

 

 

 

 

如果彈出為了完成證書注冊,必須獎該CA的網站配置為使用HTTPS身份驗證,或者進入之后CSP選項一直顯示正在加載或者顯示為空,需要設置IE的模式

 

 IE設置->Internet選項,找到連接到AD域的相應區域,選擇自定義級別

 

 將幾項設置為啟用,此時window會報有風險,可以在證書申請完畢之后 恢復設置。

 

 

 

 如果出現一下提示信息,可以繼續提交申請:

 

 填寫信息如下:

 

 提交申請之后即可安裝證書。

證書模板選擇,可以根據自己的需要進行選擇,不同模板可以在AD域服務器的證書頒發機構--證書模板,查看不同的區別。

 

 注

目前企業CA可以完成安全連接,獨立CA一致提示遠程連接被關閉,暫時還沒有找到解決方案,如有大神可以賜教,萬分感謝。

本文章是在虛擬機上搭建了一個AD服務器,只是個人的看法和見解,如有不足之處,請多多包涵,也希望有大神能夠指導一些原理或者不同的解決方案。

附:測試源代碼

from ldap3 import Server, ALL, NTLM, Connection

def adConnection(AD_Server, admin_user, admin_passwd):
    try:
        server = Server(host=AD_Server, get_info=ALL)  # 默認端口389
        conn = Connection(server, user=admin_user, password=admin_passwd, auto_bind=True, authentication=NTLM)
        if conn.bind():
            print(AD_Server, "---AD域登陸成功")
            print(conn)
            return conn
        else:
            print(AD_Server, "---AD域登陸失敗")
            print(conn)
            print(conn.result)
    except Exception as e:
        print("連接失敗,連接告警")
        print(e)


def adConnection_ssl(AD_Server, AD_admin_user, AD_admin_passwd):
    try:
        server = Server(host=AD_Server, port=636, use_ssl=True, get_info=ALL)  # 默認端口389
        conn = Connection(server, user=AD_admin_user, password=AD_admin_passwd, auto_bind=True, authentication=NTLM)
        if conn.bind():
            print(AD_Server, "---AD域登陸成功")
            print(conn)
            return conn
        else:
            print(AD_Server, "---AD域登陸成功")
            print(conn.result)
    except Exception as e:
        print("連接失敗,連接告警")
        print(e)


if __name__ == '__main__':
    conn = adConnection_ssl(AD_Server, AD_admin_user, AD_admin_passwd)
    print(conn)
View Code

運行結果:

 

 


參考連接:

https://blog.csdn.net/qq_33997198/article/details/105297121 

https://docs.microsoft.com/zh-cn/troubleshoot/windows-server/windows-security/add-san-to-secure-ldap-certificate

https://www.cnblogs.com/haiya2019/p/10627730.html

https://ldap3.readthedocs.io/en/latest/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM