我需要将遗留目录的Mysql数据迁移到新的ldap数据库。 除了密码之外,没有太多的麻烦。 它们被存储在Mysql数据库中的sha1(我检查了我可以通过键入“ echo -n "cleartextpassword" | openssl dgst -sha1 ”)来生成它们。
问题是我无法在我们的OpenLDAP服务器中导入它们。
恐怕这里可能有两个问题。
首先是一个encryption/编码问题:这个sha1编码在ldap中可以使用吗?
接口问题:当我使用ldapadd或ldapmodifyinput/更新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)