OpenSSL:genrsa与genpkey?


12

为什么OpenSSL提供两个重叠太多的实用程序

genpkey

OpenSSL> genpkey -
Usage: genpkey [options]
where options may be
-out file          output file
-outform X         output format (DER or PEM)
-pass arg          output file pass phrase source
-<cipher>          use cipher <cipher> to encrypt the key
-engine e          use engine e, possibly a hardware device.
-paramfile file    parameters file
-algorithm alg     the public key algorithm
-pkeyopt opt:value set the public key algorithm option <opt>
                   to value <value>
-genparam          generate parameters, not key
-text              print the in text
NB: options order may be important!  See the manual page.

genrsa

OpenSSL> genrsa -
usage: genrsa [args] [numbits]
 -des            encrypt the generated key with DES in cbc mode
 -des3           encrypt the generated key with DES in ede cbc mode (168 bit key)
 -seed
                 encrypt PEM output with cbc seed
 -aes128, -aes192, -aes256
                 encrypt PEM output with cbc aes
 -camellia128, -camellia192, -camellia256
                 encrypt PEM output with cbc camellia
 -out file       output the key to 'file
 -passout arg    output file pass phrase source
 -f4             use F4 (0x10001) for the E value
 -3              use 3 for the E value
 -engine e       use engine e, possibly a hardware device.
 -rand file:file:...
                 load the file (or the files in the directory) into
                 the random number generator

Debian中的文档对此也真的很奇怪,

   genpkey   Generation of Private Key or Parameters.
   genrsa    Generation of RSA Private Key. Superceded by genpkey.

genpkey替代品吗?如果是这样,怎么会没有-des3呢?而且,我们如何在其中添加密码并指定密钥长度?


2
如果您认为有两个不同的命令做同样的事情,是不是螺母,然后考虑产生的ASN.1结构genrsagenpkey实际上是不同的。使用生成的密钥的ASN.1结构genrsa是pkcs#1,而使用生成的密钥genpkey是pkcs#8。如果那还不够糟糕,那么如果您使用genpkey -outform der它,那就回到pkcs#1。随着EC,它甚至更糟的是,不知何故genec丢失,而是存在ecparam -genkey,不知何故ecparam -genkeygenpkey -outform pemgenpkey -outform der都有着不同的ASN.1结构。
Lie Ryan

Answers:


8

它明确指出genrsa已被取代genpkey,因此是genpkey替代品。

您可以3des使用-cipher参数将密码更改为

另外,它应该告诉您要添加密码,请使用-pass参数

您可以在这里找到更多信息


1
好吧,我-pass现在确实看到了参数(假定与-3des相同),但是我什至看不到在genpkey?上指定密钥长度的选项。我还粘贴了有关Ubuntu 14.04手册页的全部内容。
埃文·卡罗尔

1
那么,我可以为您指出该文档:genpkey
MichelZ 2014年

3
大声笑,这太疯狂了…… -pkeyopt rsa_keygen_bits:numbits
埃文·卡罗尔

为什么疯了?:)
MichelZ 2014年

9
因为-h的全部目的是提供命令的提要。也就是说,我刚刚发现genpkey实际上记录在其自己的手册页中。那很有意思。整个项目应向git-core方向移动,手册页均以openssl-作为前缀,并且ui允许openssl help genpkey呈现手册页。tldr; 更好的文档会有所帮助。
埃文·卡罗尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.