我正在使用 OpenLDAP 2.6。当我通过设置对象的密码时
ldappasswd -x -D <dn of root user> -W -S <dn of object whose pwd shall be set>
然后密码的一些哈希值最终出现在属性中userPassword
。
使用什么哈希函数ldappasswd
?如何配置哈希函数?从它的外观来看,我认为它默认为不再安全的 SHA1。
我正在使用 OpenLDAP 2.6。当我通过设置对象的密码时
ldappasswd -x -D <dn of root user> -W -S <dn of object whose pwd shall be set>
然后密码的一些哈希值最终出现在属性中userPassword
。
使用什么哈希函数ldappasswd
?如何配置哈希函数?从它的外观来看,我认为它默认为不再安全的 SHA1。
从技术上讲没有——它只是调用“更改密码”LDAP 扩展操作,这会导致 LDAP服务器使用一些它认为合适的哈希函数(并将哈希值存储在它认为合适的任何地方——不一定在 userPassword 中)。
因此“更改密码”exop 使用的哈希值是在服务器端配置的。对于 OpenLDAP,该
olcPasswordHash
参数默认为“SSHA”(加盐和迭代 SHA-1),类似于$1$
哈希。如果您想要更强大的东西,您可以选择{CRYPT}
使用系统 crypt() 函数提供的任何哈希算法(即与 /etc/shadow 相同 - 如果操作系统使用 libxcrypt,则可能是 bcrypt 或 yescrypt,否则使用相同类型的 salted SHA ),或者{ARGON2}
如果您安装了附加的 slapd-argon2 模块(它是 OpenLDAP 的一部分,但位于“contrib”树中)。password-hash {SSHA}
olcPasswordHash: {SSHA}
password-hash {CRYPT}
password-crypt-salt-format $y$%.16s
未经测试,但我认为应该有效)
olcPasswordHash: {CRYPT}
olcPasswordCryptSaltFormat: $y$.16s
moduleload argon2
password-hash {ARGON2}
olcModuleLoad: argon2
olcPasswordHash: {ARGON2}