如何使用 openssl genrsa 输出检查密钥生成中使用的算法
How to check the algorithm used in key generation using openssl genrsa output
我已经使用
创建了一个密钥对
openssl genrsa -out test1.key
我想通过查看 openssl genrsa --help
,
来验证密钥是如何加密的
-des以cbc方式对生成的密钥进行DES加密
-des3 以ede cbc方式对生成的密钥进行DES加密(168位密钥)
--idea 以cbc方式用IDEA加密生成的密钥
我用了 openssl rsa -in test1.key -text
但它没有显示任何信息
关于那些。
请问有什么要检查的吗?
您需要加密密钥,但默认情况下并非如此。 genrsa man page 明确指出(强调我的):
-aes128|-aes192|-aes256|-aria128|-aria192|-aria256|-camellia128|-camellia192|-camellia256|-des|-des3|-idea
These options encrypt the private key with specified cipher before
outputting it. If none of these options is specified no encryption
is used. If encryption is used a pass phrase is prompted for if it
is not supplied via the -passout argument.
这也可以从生成的 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 一起使用。
我已经使用
创建了一个密钥对openssl genrsa -out test1.key
我想通过查看
来验证密钥是如何加密的openssl genrsa --help
,-des以cbc方式对生成的密钥进行DES加密
-des3 以ede cbc方式对生成的密钥进行DES加密(168位密钥) --idea 以cbc方式用IDEA加密生成的密钥
我用了
openssl rsa -in test1.key -text
但它没有显示任何信息 关于那些。
请问有什么要检查的吗?
您需要加密密钥,但默认情况下并非如此。 genrsa man page 明确指出(强调我的):
-aes128|-aes192|-aes256|-aria128|-aria192|-aria256|-camellia128|-camellia192|-camellia256|-des|-des3|-idea
These options encrypt the private key with specified cipher before outputting it. If none of these options is specified no encryption is used. If encryption is used a pass phrase is prompted for if it is not supplied via the -passout argument.
这也可以从生成的 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 一起使用。