在Openssl命令中加密密码

时间:2018-11-24 14:42:09

标签: ssl openssl ssl-certificate

当前,我以以下纯文本格式提供密码:

openssl genrsa -aes128 -passout pass: foobar 3072

foobar是以纯文本格式提供的密码。

我想使用某种加密格式或任何其他方式提供密码,以使其不易阅读。

2 个答案:

答案 0 :(得分:1)

如果您确实确实按照要求提供了加密格式的密码,那么如何将用于加密所述密码的加密密钥提供给OpenSSL,以便OpenSSL可以解密并使用正确的密码?

我假设您提供给OpenSSL的密码被OpenSSL用于加密将要生成的RSA私钥。如果这确实是您希望OpenSSL使用的密码,则必须以纯文本形式给出。

如果您担心有人会看到它,则需要确保以安全的方式输入它。但是,“加密的密码”不是解决方案,因为您可能最终会遇到保护密码本身的加密密钥的麻烦。

答案 1 :(得分:0)

通常,密码应通过openssl提示符传递(即:删除-passout pass:foobar参数)。

如果由于必须在脚本的另一部分中使用而通过命令行传递密码,则可以使用以下示例:

echo -n Password: 
read -s PASS
openssl genrsa -out keypair.pem -aes128 -passout pass:${PASS}
opnessl req -new -key keypair.pem -passin pass:${PASS}

但是,如果确实需要在没有用户交互的情况下生成密钥,则可以使用下面的示例,但是我不建议在任何生产环境中使用它。

创建一个包含以下代码的脚本(例如:auto_key_gen.sh):

PASS=`openssl rand -hex 16`
openssl genrsa -out auto_keypair.pem -aes128 -passout pass:${PASS}
echo -n ${PASS} | openssl rsautl -encrypt -pubin -inkey $1 -out encrypted_pass.bin

生成个人密钥对并提取公共密钥:

openssl genrsa -out mykeypair.pem -aes128
openssl rsa -in mykeypair.pem -out mypubkey.pem -pubout

将个人密钥对放在安全的地方。个人公共密钥,可用于运行脚本:

chmod +x auto_key_gen.sh
./auto_key_gen.sh mypubkey.pem

该脚本生成一个随机密码,并使用它来加密生成的密钥对(auto_keypair.pem)。密码已使用您的个人公共密钥加密并保存在文件(encrypted_pa​​ss.bin)中。

该脚本可以将密码保存在“内存”中,以便与其他openssl命令一起使用。

您可以使用个人密钥对检索加密的密码:

openssl rsautl -decrypt -inkey mykeypair.pem -in encrypted_pass.bin -out decrypted_pass.hex

必须保护脚本和公共密钥,防止未经授权的修改。

相关问题