OpenSSL: genrsa vs genpkey?

12

¿Por qué OpenSSL proporciona dos utilidades con tanta superposición?

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.

Y 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

Los documentos en Debian también son realmente extraños sobre esto,

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

Es genpkeyun reemplazo? Si es así, ¿cómo es que no tiene -des3? Y, ¿cómo le agregamos una contraseña y especificamos la longitud de la clave?

Evan Carroll
fuente
2
Si crees que tener dos comandos diferentes para hacer las mismas cosas no es una locura, entonces considera que la estructura ASN.1 generada genrsay en genpkeyrealidad es diferente. La estructura ASN.1 de las claves generadas usando genrsaes pkcs # 1, mientras que las claves generadas usando genpkeyes pkcs # 8. Si eso no es lo suficientemente malo, si lo usa genpkey -outform der, vuelve a pkcs # 1. Con CE, que es aún peor, de alguna manera genecno se encuentra, en su lugar hay ecparam -genkey, y de alguna manera ecparam -genkey, genpkey -outform pem, genpkey -outform dertodos tienen diferentes estructuras ASN.1.
Lie Ryan

Respuestas:

8

Establece claramente que genrsaha sido reemplazado por genpkey, así que sí, genpkeyes un reemplazo.

Puede cambiar el cifrado 3desusando el -cipherargumento

Además, debería decirte que para agregar una contraseña, utilizas el -passargumento

Puedes encontrar más información aquí

MichelZ
fuente
1
Bueno, -passahora veo el argumento (suponiendo que sea lo mismo que -3des), pero ¿ni siquiera veo una opción para especificar la longitud de la clave genpkey? También pegué todo lo que las páginas de manual de Ubuntu 14.04 tenían que decir al respecto.
Evan Carroll
1
¿Puedo señalar esta documentación entonces: genpkey
MichelZ
3
Lol, esto es una locura ... -pkeyopt rsa_keygen_bits:numbits.
Evan Carroll
¿Por qué está loco? :)
MichelZ
99
Porque todo el propósito de -h es proporcionar una sinopsis del comando. Dicho esto, me acabo de enterar que en genpkeyrealidad está documentado en sus propias páginas de manual. Eso es interesante. Todo el proyecto debe moverse en la dirección de git-core, con todas las páginas de manual con el prefijo openssl-, y la interfaz de usuario permite openssl help genpkeyrepresentar las páginas de manual. tldr; mejores documentos ayudarían.
Evan Carroll