OpenSSL: genrsa vs genpkey?

12

Por que o OpenSSL fornece dois utilitários com tanta sobreposição

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.

E 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

Os documentos no Debian também são realmente estranhos sobre isso,

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

É genpkeyum substituto? Se sim, como é que não tem -des3? E, como adicionamos uma senha a ela e especificamos o tamanho da chave?

Evan Carroll
fonte
2
Se você acha que ter dois comandos diferentes para fazer as mesmas coisas não é louco, considere que a estrutura ASN.1 gerou genrsae genpkeyé realmente diferente. A estrutura ASN.1 das chaves geradas usando genrsaé pkcs # 1, enquanto as chaves geradas usando genpkeyé pkcs # 8. Se isso não for ruim o suficiente, se você usar genpkey -outform der, retornará ao pkcs # 1. Com CE, é ainda pior, de alguma forma genecestá faltando, ao contrário, há ecparam -genkey, e de alguma forma ecparam -genkey, genpkey -outform pem, genpkey -outform dertodos têm ASN.1 estrutura diferente.
Lie Ryan

Respostas:

8

Ele afirma claramente que genrsafoi substituído por genpkey, portanto, sim, genpkeyé um substituto.

Você pode alterar a cifra para 3desusando o -cipherargumento

Além disso, deve informar que, para adicionar uma senha, use o -passargumento

Você pode encontrar mais informações aqui

MichelZ
fonte
1
Bem, eu vejo o -passargumento agora (supondo que seja o mesmo que -3des), mas nem vejo uma opção para especificar o comprimento da chave genpkey? Também colei a totalidade do que as páginas de manual do Ubuntu 14.04 tinham a dizer sobre isso.
Evan Carroll
1
Posso apontar-lhe esta documentação em seguida: genpkey
MichelZ
3
Lol, isso é loucura ... -pkeyopt rsa_keygen_bits:numbits.
Evan Carroll
Por que está maluco? :)
MichelZ
9
Porque todo o objetivo de -h é fornecer uma sinopse do comando. Dito isto, acabei de descobrir que genpkeyestá realmente documentado em suas próprias páginas de manual. Isso é interessante. Todo o projeto deve mover a direção do git-core, com as páginas de manual prefixadas com openssl- e a interface do usuário permitindo openssl help genpkeyrenderizar as páginas de manual. tldr; documentos melhores ajudariam.
Evan Carroll