
我正在使用 OpenLDAP 2.6。當我透過設定物件的密碼時
ldappasswd -x -D <dn of root user> -W -S <dn of object whose pwd shall be set>
然後密碼的一些雜湊值最終出現在屬性中userPassword
。
使用什麼哈希函數ldappasswd
?如何配置哈希函數?從它的外觀來看,我認為它預設為不再安全的 SHA1。
答案1
ldappasswd 使用什麼雜湊函數?
從技術上講沒有——它只是調用“更改密碼”LDAP 擴展操作,這會導致 LDAP伺服器使用一些它認為合適的雜湊函數(並將雜湊儲存在它認為合適的地方 - 不一定在 userPassword 中)。
因此「更改密碼」exop 使用的雜湊值是在伺服器端配置的。對於 OpenLDAP,此olcPasswordHash
參數預設為“SSHA”(加鹽和迭代 SHA-1),類似於雜湊$1$
。如果你想要更強大的東西,你可以選擇{CRYPT}
使用系統crypt() 函數提供的任何哈希演算法(即與/etc/shadow 相同- 如果作業系統使用libxcrypt,則可能是bcrypt 或yescrypt,否則使用相同類型的salted SHA ),或者 {ARGON2}
如果您安裝了附加的 slapd-argon2 模組(它是 OpenLDAP 的一部分,但位於「contrib」樹中)。
slapd.conf | cn=配置 |
---|---|
預設(迭代/加鹽 SHA-1):password-hash {SSHA} |
預設:olcPasswordHash: {SSHA} |
系統 crypt() 使用 yescrypt,如果 libxcrypt 正在使用:(password-hash {CRYPT} password-crypt-salt-format $y$%.16s 未經測試,但我認為應該有效) |
使用 yescrypt 的系統 crypt():olcPasswordHash: {CRYPT} olcPasswordCryptSaltFormat: $y$.16s |
Argon2(如果 slapd 模組可用):moduleload argon2 password-hash {ARGON2} |
Argon2(如果 slapd 模組可用):olcModuleLoad: argon2 olcPasswordHash: {ARGON2} |