openssl passwd的目的是什麼
我正在閱讀“可靠地部署 Rails 應用程序”
關於定義由 Chef 設置的使用者,它說:
“接下來我們需要定義使用者,在data_bags/users裡面將deploy.json.example文件複製到deploy.json。
使用以下命令為您的部署使用者生成密碼:
openssl passwd -1 "plaintextpassword"
並相應地更新 deploy.json。”
我的問題是,目的是
openssl passwd
什麼?只是為了生成一個強密碼嗎?如果我輸入隨機字元會不會一樣好?然後,我的“實際”密碼是什麼?純文字版本,還是加密版本?我需要將兩者的副本保存到我的密碼管理器嗎?
更新:
是的,我已經閱讀了手冊。是的,我知道它會生成我密碼的 md5 加密版本。我的問題更多是關於你為什麼要使用它,而不是使用你自己組成的非常安全的隨機字元串(或使用密碼生成器生成)。
我能想到的一個好處是您可以鍵入一個可記住的密碼,並在
openssl passwd -1 "plaintextpassword"
每次需要輸入時執行它。因此,就易於記憶的密碼和安全的隨機密碼而言,您將擁有兩全其美的優勢。並且每次需要時通過“openssl passwd -1”執行可記憶/純文字版本,這樣您就不必儲存密碼的加密版本並在每次需要輸入密碼時輸入/粘貼。這是唯一的好處嗎?如果不是,其他是什麼?
在#chef IRC 頻道上聊天后,這就是我最終需要知道的。其中大部分實際上是外圍資訊,而不是
openssl passwd
具體資訊,但無論如何……Chef 使用標準
adduser
命令 ( http://linux.die.net/man/8/adduser ) 來添加使用者。該命令接受已加密的密碼- 因此您需要openssl passwd -1 "plaintextpassword"
在data_bags/users/deploy.json
.因此,您的純文字密碼是“真實”密碼。但是因為該
adduser
命令要求您傳遞的密碼已經加密,所以您需要儲存的密碼是加密版本data_bags/users/deploy.json
這很好用,因為您絕對不想將純文字密碼儲存在
data_bags/users/deploy.json
!回到我最初的問題:
我的“實際”密碼是什麼?純文字版本,還是加密版本?
純文字版本是您的真實版本。
我需要將兩者的副本保存到我的密碼管理器嗎? 不,您只儲存純文字版本。每當您想登錄時,您都可以使用它。然後系統會對其進行加密,並將其與為您的帳戶儲存的加密版本進行比較。
openssl passwd 的好處/目的是什麼?
沒有這樣的“好處”。它只是必需的,因為該
adduser
命令將期望它提供的密碼已經加密。說了這麼多,顯然最好不要在 中輸入密碼
data_bags/users/deploy.json
,只允許通過 SSH 密鑰訪問。甚至儲存密碼的加密版本也不是一個好習慣,
data_bags/users/deploy.json
因為 Linux 密碼加密的記錄如此糟糕。(編輯:閱讀下面的評論以獲得更好的解釋)
該命令的目的是通過單向散列算法(
-1
輸出 MD5)提供您的密碼。得到的是一個字元串,它以加密方式從您的密碼中派生出來,但如果攻擊者獲得了散列版本,則不能用於自行查找您的密碼(理論上 - 包含一種有助於防止彩虹表的鹽,但是攻擊者仍然可以有效地暴力破解它)。通過散列函式執行您的密碼將始終產生相同的散列,然後伺服器可以將其與儲存的散列進行比較,以驗證您具有與通過
openssl
命令執行的相同的密碼。