python-ldap修改AD域用户密码(CA+SSL)
代码连接:https://github.com/raykuan/ldap-notes
使用python的ldap模块连接AD服务器,有两种方式:
非加密:con = ldap.initialize('ldap://myhost.com:389)
加密(SSL):con = ldap.initialize('ldaps://myhost.com:636)
使用非加密的ldap时,只能对AD域账号信息查询。如果要对AD域用户信息进行修改和新增操作,必须使用(SSL)加密方式连接AD,需满足如下几个条件:
① AD上需要安装证书服务
② 连接AD的主机上使用http://myhost.com/certsrv/打开浏览器申请证书
③ 如果连接AD的主机是Linux,需要安装openssl包,制作CA证书
# 使用openssl命令把申请到的AD主机上的CA证书格式转换为.pem
openssl x509 -in master.cer -inform der -outform pem -out master.pem
# 使用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连接,普通用户即可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY