OpenSSL: genrsa vs genpkey?


12

Tại sao OpenSSL cung cấp hai tiện ích với nhiều sự chồng ché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.

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

Các tài liệu trong Debian cũng thực sự lạ về điều này,

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

genpkeymột sự thay thế? Nếu vậy, tại sao nó không có -des3? Và, làm thế nào để chúng ta thêm mật khẩu vào nó và chỉ định độ dài khóa?


2
Nếu bạn nghĩ rằng có hai lệnh khác nhau để thực hiện cùng một thứ thì không phải là hạt dẻ, thì hãy xem xét rằng cấu trúc ASN.1 được tạo genrsagenpkeythực sự khác nhau. Cấu trúc ASN.1 của các khóa được tạo bằng genrsapkcs # 1, trong khi các khóa được tạo bằng genpkeypkcs # 8. Nếu điều đó không đủ tệ, nếu bạn sử dụng genpkey -outform derthì nó trở lại pkcs # 1. Với EC, nó thậm chí còn tồi tệ hơn, bằng cách nào đó geneclà mất tích, thay vào đó là ecparam -genkey, và bằng cách nào đó ecparam -genkey, genpkey -outform pem, genpkey -outform dertất cả đều có cấu trúc ASN.1 khác nhau.
Lie Ryan

Câu trả lời:


8

Nó nói rõ rằng genrsađã được áp đặt bởi genpkey, vì vậy, genpkeylà một sự thay thế.

Bạn có thể thay đổi mật mã thành 3desbằng cách sử dụng -cipherđối số

Ngoài ra, nó sẽ cho bạn biết rằng để thêm mật khẩu, bạn sử dụng -passđối số

Bạn có thể tìm thêm thông tin ở đây


1
Chà, bây giờ tôi thấy -passđối số (giả sử giống như -3des), nhưng tôi thậm chí không thấy một tùy chọn để chỉ định độ dài khóa trên genpkey? Tôi cũng đã dán toàn bộ những gì các trang người dùng Ubuntu 14.04 nói về nó.
Evan Carroll

1
Tôi có thể chỉ cho bạn tài liệu này sau đó: genpkey
MichelZ

3
Lol, đây là các loại hạt ... -pkeyopt rsa_keygen_bits:numbits.
Evan Carroll

Tại sao nó là hạt? :)
MichelZ

9
Bởi vì toàn bộ mục đích của -h là cung cấp tóm tắt của lệnh. Điều đó nói rằng, tôi chỉ phát hiện ra genpkeylà thực sự được ghi lại trong các trang người đàn ông của riêng mình. Nó thật thú vị. Toàn bộ dự án nên di chuyển theo hướng git-core, với các trang man đều có tiền tố là openssl- và ui cho phép openssl help genpkeyhiển thị các trang man. tldr; tài liệu tốt hơn sẽ giúp.
Evan Carroll
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.