Password

openssl passwd的目的是什麼

  • February 11, 2014

我正在閱讀“可靠地部署 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命令執行的相同的密碼。

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