当前,我以以下纯文本格式提供密码:
openssl genrsa -aes128 -passout pass: foobar 3072
foobar
是以纯文本格式提供的密码。
我想使用某种加密格式或任何其他方式提供密码,以使其不易阅读。
答案 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_pass.bin)中。
该脚本可以将密码保存在“内存”中,以便与其他openssl命令一起使用。
您可以使用个人密钥对检索加密的密码:
openssl rsautl -decrypt -inkey mykeypair.pem -in encrypted_pass.bin -out decrypted_pass.hex
必须保护脚本和公共密钥,防止未经授权的修改。