如果您不使用密码,则私钥不会使用任何对称密码进行加密 - 它的输出完全不受保护。
您可以生成密钥对,使用类似的调用在命令行上提供密码(在本例中,密码是foobar
):
openssl genrsa -aes128 -passout pass:foobar 3072
但是,请注意,该密码可能会被当时在计算机上运行的任何其他进程获取,因为命令行参数通常对所有进程都是可见的。
更好的替代方法是将密码写入受文件权限保护的临时文件中,并指定:
openssl genrsa -aes128 -passout file:passphrase.txt 3072
或者在标准输入上提供密码:
openssl genrsa -aes128 -passout stdin 3072
您还可以使用命名管道file:
选项或文件描述符。
然后要获取匹配的公钥,您需要使用openssl rsa
,提供与-passin
用于加密私钥的参数:
openssl rsa -passin file:passphrase.txt -pubout
(这需要标准输入上的加密私钥 - 您可以使用以下命令从文件中读取它-in <file>
).
在文件中创建 3072 位私钥和公钥对的示例,私钥对使用密码加密foobar
:
openssl genrsa -aes128 -passout pass:foobar -out privkey.pem 3072
openssl rsa -in privkey.pem -passin pass:foobar -pubout -out privkey.pub