python-ldap修改AD域用户密码(CA+SSL)

代码链接: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链接,普通用户便可。

相关文章
相关标签/搜索