如何将已经encryption的密码添加到openldap

我需要将遗留目录的Mysql数据迁移到新的ldap数据库。 除了密码之外,没有太多的麻烦。 它们被存储在Mysql数据库中的sha1(我检查了我可以通过键入“ echo -n "cleartextpassword" | openssl dgst -sha1 ”)来生成它们。

问题是我无法在我们的OpenLDAP服务器中导入它们。

恐怕这里可能有两个问题。

首先是一个encryption/编码问题:这个sha1编码在ldap中可以使用吗?

接口问题:当我使用ldapaddldapmodifyinput/更新userPassword字段时,ldif文件中提供的数据将被重新encryption。 有没有可能绕过这个问题?

提前致谢

经过了很多的考验,我终于明白了。

我有的sha1string是所谓的hex-digest。 为了让他们进入openldap,我首先需要将它们转换回二进制sha1摘要,然后base64编码它们。

在命令行上可以这样做:

 echo -n "sha1-hex-digest" | xxd -r -p | openssl enc -base64 

那么结果string应该这样插入到ldif文件中:

 userPassword: {SHA}base-64-blurb 

对于那些感兴趣的人来说,这可以通过Python来完成:

 import base64 import binascii sha1_pwd = "your-sha1-hex-digest-here" ldap_pwd = base64.b64encode(binascii.unhexlify(sha1_pwd)).decode('utf-8') print("userPassword: {SHA}%s" % ldap_pwd)