我正在使用以下命令通过使用OpenSSL生成 CSR 和私钥:
openssl req -new -subj "/CN=sample.myhost.com" -out newcsr.csr -nodes -sha512 -newkey rsa:2048
它生成两个文件:
newcsr.csr
privkey.pem
生成的私钥没有密码:如何在生成过程中添加一个?
注意:考虑到我的最终目标是p12
通过结合根据 CSR 提供的证书和私钥(使用密码保护)来生成文件。
我正在使用以下命令通过使用OpenSSL生成 CSR 和私钥:
openssl req -new -subj "/CN=sample.myhost.com" -out newcsr.csr -nodes -sha512 -newkey rsa:2048
它生成两个文件:
newcsr.csr
privkey.pem
生成的私钥没有密码:如何在生成过程中添加一个?
注意:考虑到我的最终目标是p12
通过结合根据 CSR 提供的证书和私钥(使用密码保护)来生成文件。
如果您确实想要加密,那么您需要从您的命令中删除(名称尴尬)-nodes
(阅读:“无 DES加密”)参数。
因为-nodes
会导致一个未加密的 privkey.pem 文件。如果你把它排除在外,那么文件将被加密。
因此,没有-nodes
openssl 只会提示您输入如下密码:
$ openssl req -new -subj "/CN=sample.myhost.com" -out newcsr.csr -sha512 -newkey rsa:2048
Generating a RSA private key
.........................................+++++
................+++++
writing new private key to 'privkey.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
但是交互式提示对于自动化来说并不是很好。因此,如果您不想收到提示,那么您可能需要继续阅读如何使用“传递短语参数”。
如果您想为输出文件提供密码,您将需要(也很笨拙地命名)-passout
参数。
这是一个多维参数,允许您从多个来源读取实际密码。例如来自文件或环境变量。或直接从命令行(最不安全)。以下是每种用法的示例。
(官方手册页在“密码短语选项”部分列出了更多密码源(在此处存档。))
$ openssl req -new -passout pass:"Pomegranate" -subj "/CN=sample.myhost.com" -out newcsr.csr -sha512 -newkey rsa:2048
Generating a 2048 bit RSA private key
................................................................................................................................+++
......................+++
writing new private key to 'privkey.pem'
-----
$ openssl rsa -in privkey.pem -passin pass:'Pomegranate' | head -n2
writing RSA key
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAsSP5kLRPP8wPODrnvuAeeoqGMqTOvRULL423vv6+zjYhwPUi
$ export MYPASS='Elderberry'
$ openssl req -new -passout env:MYPASS -subj "/CN=sample.myhost.com" -out newcsr.csr -sha512 -newkey rsa:2048
Generating a 2048 bit RSA private key
............................+++
.....................+++
writing new private key to 'privkey.pem'
-----
$ openssl rsa -in privkey.pem -passin pass:'Elderberry' | head -n2
writing RSA key
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAv0NnBnigPp+O9G4UXc0qSyeELdJJjTmnO9GEtE5GlPGoK7vW
$ echo "Farkleberry" > password.txt
$ openssl req -new -passout file:password.txt -subj "/CN=sample.myhost.com" -out newcsr.csr -sha512 -newkey rsa:2048
Generating a 2048 bit RSA private key
......................+++
...........+++
writing new private key to 'privkey.pem'
-----
$ openssl rsa -in privkey.pem -passin pass:'Farkleberry' | head -n2
writing RSA key
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAsHICgYvqe4i9CIR5eQk38JJmuTaJQvyxPH9S+BahT5XWh88z
您可以使用以下命令使用密码更新密钥:
openssl rsa -des3 -in server.key -out server.key.new
然后使用mv server.key.new server.key
覆盖旧密钥。