从文档中,我得到了可以使用但使用盐的配置,
密码哈希{CRYPT} password-crypt-salt-format“ $ 6 $%。16s”
并且我需要在没有盐加密的情况下将密码存储在LDAP目录中。
答案 0 :(得分:1)
最好使用{SHA}或{MD5}这样的不加盐的密码存储方案,而不是{CRYPT}:
password-hash {SHA}
如果需要使用{CRYPT}:
您仍然可以提供静态盐(!不好,不安全,几乎没有盐!),只需遵循给定的格式即可:
password-crypt-salt-format "$6$%.16s"
$6$
是SHA512
模式的密钥标识符,我们提供了16个字符的长盐:
~$ mkpasswd -m sha-512 --salt 'verybadseasoning' secret1
$6$verybadseasoning$Q2kceqwB2uYT2tU./QF.qRCIWjMQdObEAZ71Ni5Ko1zJOnxUwpu3oMeyjtgiR3hSVHIT20Ay9V1.pXaNhkHYk/
~$ mkpasswd -m sha-512 --salt 'verybadseasoning' secret2
$6$verybadseasoning$SHof1u2BCPJhYoVOk.LkWax7n5g28rzMkNCRAC5NmlT29GSeWLAlv2AoSkOS4rYfMUXsmTcyIxKDUU8aL7TlP0
请注意,mkpasswd
不允许使用空盐:
~$ mkpasswd -m sha-512 --salt '' secret
Wrong salt length: 0 bytes when 8 <= n <= 16 expected.
或者您可以尝试使crypt 忽略给定/生成的盐字符串,无论它是什么(通过从中获取零字符):
password-crypt-salt-format "$6$%.0s"
它告诉crypt()使用SHA512算法,%s
替换为一串零字符的salt(%.0s
)。我无法确定slapd是否强制执行%s转换,但是仅设置"$6$"
而不替代盐分可能会达到目的,因为它表示相同(无盐),即:
~$ php -r 'print(crypt("secret", "$6$"));'
$6$$2M9DchxW4txWyTYoZrH9D3VvAAQxBpEezYsLY6Cao.jwzEXpyL9xwip9hiUZX7GqTqe/E/z6iKvZqXUuqniQH.
请注意,缺少盐会使您的系统遭受字典攻击。
答案 1 :(得分:0)
您可以简单地使用现有的 userPassword 值导入用户条目,而无需添加盐。如果本地OpenLDAP安装支持一种哈希方案,则密码验证将起作用。
设置新密码时,配置指令 password-hash 和 password-crypt-salt-format 。