Openldap

如何將已經加密的密碼添加到openldap

  • February 9, 2021

我需要將遺留的類似目錄的 Mysql 數據遷移到新的 ldap 數據庫。除了密碼沒有太多麻煩。它們作為 sha1 儲存在 Mysql 數據庫中(我檢查了我可以通過鍵入“ echo -n "cleartextpassword" | openssl dgst -sha1”來生成它們)。

問題是我無法將它們導入我們的 openldap 伺服器。

恐怕這裡可能有兩個問題。

首先是加密/編碼問題:這個 sha1 編碼是否可以在 ldap 中使用?

介面問題:當我使用ldapaddldapmodify輸入/更新userPassword欄位時,ldif 文件中提供的數據被重新加密。是否有可能以某種方式繞過這個問題?

提前致謝

經過多次嘗試,我終於得到了它。

我擁有的 sha1 字元串是所謂的十六進制摘要。為了讓它們進入 openldap,我首先需要將它們轉換回二進制 sha1 摘要,然後對它們進行 base64 編碼。

在命令行上可以這樣做:

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

然後應該以這種方式將生成的字元串插入到 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)

引用自:https://serverfault.com/questions/849510