是否有任何命令/扩展可用于将 LDAP 服务器中用户对象的“userPassword”属性从纯文本更新为 SSHA 散列密码?
我们发现 LADP 中的用户以纯文本形式存储。一旦我们启用密码策略,新用户的密码将存储在 SSHA 中。如何将现有用户的纯文本密码迁移到 SSHA 密码?
版本更新 - 操作系统:CentOS 版本 6.6 - 64 位
OpenLdap 版本 : openldap-servers-2.4.39
云:AWS
实例类型:r3.xlarge
两个 LDAP 服务器
答案1
OpenLDAP 文档提供了一些示例代码常问问题您可以使用它以您最喜欢的脚本语言创建自定义脚本,将明文密码转换为 SSHA。
笔记:请不要对所有用户使用相同的盐。
使用以下方法将目录(部分)导出为 LDIF 格式斯巴达猫并编写脚本!
对于少量明文密码,您可以简单地生成 LDIF 来更新它们:
dn: cn=Alice, ou=Users, o=example, c=com
changetype: modify
replace: userPassword
userPassword: {SSHA}xxxxxxxxxxxxxxxx
dn: cn=Bob, ou=Users, o=example, c=com
changetype: modify
replace: userPassword
userPassword: {SSHA}abcabcabcbacbabcabc
您可能想要启动一个测试服务器并测试使用 LDIF 更新需要多长时间。据我所知,密码字段没有索引,因此性能可能足以满足您的目的,但通常通过 LDAP 接口相对较慢(当许多索引也必须更新时,速度会更慢)。其中一个优点是使用 LDIF 将遵循您的复制结构。
通常,在数据库处于离线状态时修改数据库要快得多。再次使用 slapcat 进行导出,转换userPassword:
生成的 LDIF 中的明文字段并使用slappadd
它重新加载它。也许使用-q
和-s
开关。这与(多主)复制的结合效果如何,取决于您想要的方法。
本问答可能对决定采用何种方法也感兴趣。