openssl passwd 的用途是什么

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”运行容易记住的/纯文本版本,这样就不必存储密码的加密版本,也不必在每次需要输入密码时键入/粘贴它。

这是唯一的好处吗?如果不是,其他好处是什么?

答案1

该命令的目的是通过单向哈希算法(-1输出 MD5)输入您的密码。这样您就可以得到一个以加密方式从您的密码派生出的字符串,但如果攻击者获得了哈希版本,则无法使用该字符串单独找到您的密码(理论上 - 其中包含一个盐,有助于防止彩虹桌但攻击者仍然可以蛮力有效地反对它)。

您的密码通过哈希函数运行将始终产生相同的哈希值,然后服务器可以将其与存储的哈希值进行比较,以验证您是否具有与通过命令运行的密码相同的密码openssl

答案2

在 #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 密码加密的记录很差。(编辑:阅读下面的评论以获得更好的解释)

相关内容