OpenSSL: genrsa vs genpkey?

12

Mengapa OpenSSL menyediakan dua utilitas dengan banyak tumpang tindih

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.

Dan 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

Dokumen di Debian juga sangat aneh tentang ini,

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

Apakah genpkeypenggantinya? Jika demikian, mengapa tidak -des3? Dan, bagaimana kita menambahkan kata sandi padanya, dan menentukan panjang kunci?

Evan Carroll
sumber
2
Jika Anda berpikir memiliki dua perintah berbeda untuk melakukan hal yang sama tidak gila, maka pertimbangkan bahwa struktur ASN.1 yang dihasilkan genrsadan genpkeysebenarnya berbeda. Struktur ASN.1 kunci yang dihasilkan menggunakan genrsaadalah pkcs # 1, sedangkan kunci yang dihasilkan menggunakan genpkeyadalah pkcs # 8. Jika itu tidak cukup buruk, jika Anda gunakan genpkey -outform dermaka itu kembali ke pkcs # 1. Dengan EC, itu bahkan lebih buruk, entah bagaimana genechilang, malah ada ecparam -genkey, dan entah bagaimana ecparam -genkey, genpkey -outform pem, genpkey -outform dersemua memiliki struktur ASN.1 yang berbeda.
Lie Ryan

Jawaban:

8

Jelas menyatakan bahwa genrsatelah digantikan oleh genpkey, jadi ya, genpkeyadalah penggantinya.

Anda dapat mengubah kode sandi 3desdengan menggunakan -cipherargumen

Selain itu, harus memberitahu Anda bahwa untuk menambahkan kata sandi, Anda menggunakan -passargumen

Anda dapat menemukan informasi lebih lanjut di sini

MichelZ
sumber
1
Yah, saya melihat -passargumen sekarang (dengan asumsi itu sama dengan -3des), tapi saya bahkan tidak melihat opsi untuk menentukan panjang kunci aktif genpkey? Saya juga menempelkan keseluruhan apa yang dikatakan halaman manual Ubuntu 14.04 tentang hal itu.
Evan Carroll
1
Bolehkah saya mengarahkan Anda ke dokumentasi ini: genpkey
MichelZ
3
Lol, ini adalah kacang ... -pkeyopt rsa_keygen_bits:numbits.
Evan Carroll
Mengapa itu gila? :)
MichelZ
9
Karena seluruh tujuan -h adalah untuk menyediakan sinopsis dari perintah. Yang mengatakan, saya baru tahu genpkeysebenarnya didokumentasikan di halaman man sendiri. Itu menarik. Seluruh proyek harus menggerakkan arah git-core, dengan halaman manual semua diawali dengan openssl-, dan ui memungkinkan openssl help genpkeyuntuk membuat halaman manual. tldr; dokumen yang lebih baik akan membantu.
Evan Carroll