如何使用openssl genrsa输出检查在密钥生成中使用的算法

问题描述

  • 我已经使用创建了密钥对

    Details

  • 我想通过查看Audit来验证密钥的加密方式,

  • -des在cbc模式下使用DES对生成的密钥进行加密

  • -des3在ede cbc模式下使用DES加密生成的密钥(168位密钥) --idea在cbc模式下使用IDEA对生成的密钥进行加密

  • 我使用了openssl genrsa -out test1.key ,但未显示任何信息 关于那些。

请问是否有任何检查?

解决方法

您期望使用加密密钥,但是默认情况下不是。 genrsa man page明确指出(强调我的意思):

-aes128 | -aes192 | -aes256 | -aria128 | -aria192 | -aria256 | -camellia128 | -camellia192 | -camellia256 | -des | -des3 | -idea

这些选项之前使用指定的密码对私钥进行加密 输出它。 如果未指定这些选项,则不加密 使用。如果使用加密,则提示输入密码 不能通过-passout参数提供。

这也可以从生成的PEM文件中看到,该文件除了密钥本身没有其他信息:

$ openssl genrsa -out test-plain.key
Generating RSA private key,2048 bit long modulus (2 primes)
...........................................................................................+++++
..........................+++++
e is 65537 (0x010001)

$ head -n 2 test-plain.key 
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA5RCtTAg3fuspy1VdZpHqrFz4Lt9p5MnZkjH0FZ9wAk9vpvRF

另一方面,如果我们指定一种加密算法来应用于密钥,则会发生两件事:

  • 提示我输入密码(除非通过-passout指定)
  • PEM输出中显示了算法和分组密码模式
$ openssl genrsa -out test-aes.key -aes128
Generating RSA private key,2048 bit long modulus (2 primes)
............................................................+++++
................................+++++
e is 65537 (0x010001)
Enter pass phrase for test-aes.key: foobar
Verifying - Enter pass phrase for test-aes.key: foobar

$ head -n 3 test-aes.key 
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,ED364325F65A0F212D07BC9E643D6424

我们可以清楚地看到AES-128-CBC与指示的IV一起使用。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...