首页 > 解决方案 > 如何使用 openssl genrsa 输出检查密钥生成中使用的算法

问题描述

请问有什么办法检查吗?

标签: encryptionopensslpublic-key-encryptionpublic-key

解决方案


您期待一个加密的密钥,但默认情况下它不是。genrsa 手册页明确指出(强调我的):

-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 一起使用。


推荐阅读