我正在尝试让 openldap 存储所有使用算法userPassword
散列的属性{SSHA}
。我设法使用以下方法配置前端数据库:olc密码哈希:
dn: olcDatabase={-1}frontend
objectClass: olcDatabaseConfig
objectClass: olcFrontendConfig
olcDatabase: {-1}frontend
structuralObjectClass: olcDatabaseConfig
creatorsName: cn=config
createTimestamp: 20181218082812Z
olcPasswordHash: {SSHA} <------------configured with ldapmodify
modifiersName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
但即使在 slapd 服务重新启动后,新的密码修改/创建(我使用 ldapvi 编辑 ldifs)仍以明文形式存在,且 ldap.log 中没有任何错误。请注意,如果我选择以加密格式写入密码(前面带有 {SSHA} 标签),它会正常工作。问题是,当我以明文形式写入时,在我保存并退出后,它不会自动加密。
有任何想法吗?
答案1
如果你想让 slapd 从明文生成密码哈希用户密码修改请求中的值,那么你必须配置slapo政策with 指令ppolicy_hash_cleartext。
答案2
此设置仅在您使用 RFC 3062 扩展操作(即使用)时适用ldappasswd
。仅使用常规 LDIF 操作编辑条目不起作用。如果您想使用加密值播种条目,请使用slappasswd
生成哈希值。
编辑:具体来看ldapvi 文档,它似乎使用类似 LDIF 的格式,但有一些扩展。要加密属性,您需要使用以下形式指定属性:
userPassword:ssha mysecret
我认为该olcPasswordHash
设置对该功能没有任何影响。