因此,通过命令行参数传递密码并不是最安全的做法。也就是说,openssl 的文档让我困惑于如何将密码参数传递给 openssl 命令。
这就是我想做的事情
openssl aes-256-cbc -in some_file.enc -out some_file.unenc -d
然后会提示输入用于解密的密码。我搜索了 openssl 文档和互联网,试图找到答案,如果我只是想给命令提供密码,而不尝试将密码回显到文件。我尝试添加带引号-pass:somepassword
和-pass somepassword
不带引号的,但都无济于事。
我终于找到了答案,并在其他一些论坛上看到人们也有类似的问题,所以我想在这里为社区发布我的问题和答案。
注意:我使用的是 openssl 版本 0.9.8y
答案1
文档对我来说不是很清楚,但是它给出了答案,难点在于看不到示例。
操作方法如下:
openssl aes-256-cbc -in some_file.enc -out some_file.unenc -d -pass pass:somepassword
请注意,命令行命令语法-pass
后面总是有一个空格,然后是您提供的密码类型,即pass:
普通密码,然后是冒号后没有空格的实际密码。
此外,文档还指定您可以通过执行以下操作来提供其他密码源:
env:somevar
从环境变量中获取密码file:somepathname
从文件第一行获取密码pathname
fd:number
从文件描述符编号获取密码。stdin
从标准输入读取
现在我已经写下了这个问题和答案,一切似乎都很明显。但这确实需要一些时间才能弄清楚,而且我看到其他人也花了类似的时间,所以希望这可以减少时间并更快地为其他人解答!:)
对于 OpenSSL 1.0.1e,要使用的参数是-passin
或-passout
。因此,此示例为:
openssl aes-256-cbc -in some_file.enc -out some_file.unenc -d -passin pass:somepassword
答案2
我在示例中使用-passin
和-passout
为两个文件设置密码:
openssl pkcs12 -in voip.p12 -out voip.pem -passin pass:123 -passout pass:321
其中123
和321
是密码
答案3
目前 Ubuntu 14.04 LTS 附带 openssl 1.0.1f-1ubuntu2.16
在此版本中要使用的参数是-k
例子:
openssl enc -aes-256-cbc -e -in some_file.unenc -out some_file.enc -k somepassword