代碼鏈接:https://github.com/raykuan/ldap-notespython
使用python的ldap模塊鏈接AD服務器,有兩種方式:git
非加密:con = ldap.initialize('ldap://myhost.com:389)github
加密(SSL):con = ldap.initialize('ldaps://myhost.com:636)瀏覽器
使用非加密的ldap時,只能對AD域帳號信息查詢。若是要對AD域用戶信息進行修改和新增操做,必須使用(SSL)加密方式鏈接AD,需知足以下幾個條件:服務器
① AD上須要安裝證書服務加密
② 鏈接AD的主機上使用http://myhost.com/certsrv/打開瀏覽器申請證書spa
③ 若是鏈接AD的主機是Linux,須要安裝openssl包,製做CA證書code
# 使用openssl命令把申請到的AD主機上的CA證書格式轉換爲.pemorm
openssl x509 -in master.cer -inform der -outform pem -out master.pemblog
# 使用openssl命令指定CA證書鏈接到AD主機
openssl s_client -connect myhost:636 -CAfile /path/to/master.pem
# 查看CN subject信息,python中ldap初始化的時間須要保證和CN的域名一致
openssl x509 -noout -text -in imsva_cert.pem | grep Subject
Subject: C=en, ST=xx, O=yy, OU=zz, CN=test.com
con = ldap.initialize('ldaps://myhost.com')
能夠在/etc/hosts文件下增長域名解析記錄
④ 在Python的ldap初始化鏈接AD前,設置CA證書文件加載
import ldap # point to the cert cert_file='/path/to/master.pem' ldap.set_option(ldap.OPT_X_TLS_CACERTFILE, cert_file) con = ldap.initialize('ldaps://myhost.com') dn = 'CN=me,DC=myhost,DC=com' pw = 'password' con.simple_bind_s(dn, pw)
注意:此處dn是有管理員權限的AD用戶,經過綁定此用戶才能使用ldaps對域用戶的信息進行增刪改,查詢的時間通常使用非SSL鏈接,普通用戶便可。