Openldap
如何將已經加密的密碼添加到openldap
我需要將遺留的類似目錄的 Mysql 數據遷移到新的 ldap 數據庫。除了密碼沒有太多麻煩。它們作為 sha1 儲存在 Mysql 數據庫中(我檢查了我可以通過鍵入“
echo -n "cleartextpassword" | openssl dgst -sha1
”來生成它們)。問題是我無法將它們導入我們的 openldap 伺服器。
恐怕這裡可能有兩個問題。
首先是加密/編碼問題:這個 sha1 編碼是否可以在 ldap 中使用?
介面問題:當我使用
ldapadd
或ldapmodify
輸入/更新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)