当使用 生成密钥时openssl genrsa
,使用命令行参数选择加密,例如-aes128
。生成密钥后,我们可以看到文件中使用了什么加密。前任:
cat host.key
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,AF4EBC2AE861F6FE8C751F7DAD5D4721
...
-----END RSA PRIVATE KEY-----
当通过 生成密钥时openssl req -newkey rsa:2048 -keyout host.key
,该文件不会说明使用了什么加密。
-----BEGIN ENCRYPTED PRIVATE KEY-----
...
-----END ENCRYPTED PRIVATE KEY-----
它是什么?
如何openssl rsa -in host.key
知道如何解密密钥?
更新
openssl req
默认情况下使用 DES-EDE3-CBC 进行加密。
openssl req -new -x509 -out server.cer -keyout server.key -subj "/CN=toto/"
Generating a 1024 bit RSA private key
..................++++++
..++++++
writing new private key to 'server.key'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
cat server.key
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,02306CD22AAC94CD
-----END RSA PRIVATE KEY-----
问题出在我的原始命令上。它指定了一个以某种方式影响密钥生成的配置,但我仍然无法理解。
默认情况下,配置将假定encrypt_key = yes
. 这导致使用未指定的算法对密钥进行加密。encrypt_key = no
在节下指定[req]
等同于-nodes
参数。
但仍存在以下问题:
- 指定配置时,openssl req 应用了什么加密?
- 算法可以控制吗?
- 如何
openssl rsa
猜测正确的解密密码?它显然必须在数据中的某个地方进行编码......
起初,openssl req
为我生成密钥似乎很好。但genrsa
提供更多控制。