| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- <DRAFT!>
- HOWTO keys
- 1. Introduction
- Keys are the basis of public key algorithms and PKI. Keys usually
- come in pairs, with one half being the public key and the other half
- being the private key. With OpenSSL, the private key contains the
- public key information as well, so a public key doesn't need to be
- generated separately.
- Public keys come in several flavors, using different cryptographic
- algorithms. The most popular ones associated with certificates are
- RSA and DSA, and this HOWTO will show how to generate each of them.
- 2. To generate an RSA key
- An RSA key can be used both for encryption and for signing.
- Generating a key for the RSA algorithm is quite easy, all you have to
- do is the following:
- openssl genrsa -des3 -out privkey.pem 2048
- With this variant, you will be prompted for a protecting password. If
- you don't want your key to be protected by a password, remove the flag
- '-des3' from the command line above.
- The number 2048 is the size of the key, in bits. Today, 2048 or
- higher is recommended for RSA keys, as fewer amount of bits is
- consider insecure or to be insecure pretty soon.
- 3. To generate a DSA key
- A DSA key can be used for signing only. It is important to
- know what a certificate request with a DSA key can really be used for.
- Generating a key for the DSA algorithm is a two-step process. First,
- you have to generate parameters from which to generate the key:
- openssl dsaparam -out dsaparam.pem 2048
- The number 2048 is the size of the key, in bits. Today, 2048 or
- higher is recommended for DSA keys, as fewer amount of bits is
- consider insecure or to be insecure pretty soon.
- When that is done, you can generate a key using the parameters in
- question (actually, several keys can be generated from the same
- parameters):
- openssl gendsa -des3 -out privkey.pem dsaparam.pem
- With this variant, you will be prompted for a protecting password. If
- you don't want your key to be protected by a password, remove the flag
- '-des3' from the command line above.
- 4. To generate an EC key
- An EC key can be used both for key agreement (ECDH) and signing (ECDSA).
- Generating a key for ECC is similar to generating a DSA key. These are
- two-step processes. First, you have to get the EC parameters from which
- the key will be generated:
- openssl ecparam -name prime256v1 -out prime256v1.pem
- The prime256v1, or NIST P-256, which stands for 'X9.62/SECG curve over
- a 256-bit prime field', is the name of an elliptic curve which generates the
- parameters. You can use the following command to list all supported curves:
- openssl ecparam -list_curves
- When that is done, you can generate a key using the created parameters (several
- keys can be produced from the same parameters):
- openssl genpkey -des3 -paramfile prime256v1.pem -out private.key
- With this variant, you will be prompted for a password to protect your key.
- If you don't want your key to be protected by a password, remove the flag
- '-des3' from the command line above.
- You can also directly generate the key in one step:
- openssl ecparam -genkey -name prime256v1 -out private.key
- or
- openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256
- 5. To generate an ML-DSA key
- An ML-DSA key can be used for signing (and verification via the public key)
- only.
- Generating a key for the ML-DSA algorithm is a one-step process.
- openssl genpkey -algorithm ML-DSA-44 -out key.pem
- openssl genpkey -algorithm ML-DSA-65 -out key.pem
- openssl genpkey -algorithm ML-DSA-87 -out key.pem
- See L<EVP_PKEY-ML-DSA(7)> for more detail.
- 6. To generate an ML-KEM key
- An ML-KEM key can be used for decapsulation (and encapsulation via the public
- key) only.
- Generating a key for the ML-KEM algorithm is a one-step process.
- openssl genpkey -algorithm ML-KEM-512 -out key.pem
- openssl genpkey -algorithm ML-KEM-768 -out key.pem
- openssl genpkey -algorithm ML-KEM-1024 -out key.pem
- See L<EVP_PKEY-ML-KEM(7)> for more detail.
- 7. NOTE
- If you intend to use the key together with a server certificate,
- it may be reasonable to avoid protecting it with a password, since
- otherwise someone would have to type in the password every time the
- server needs to access the key.
- X25519, X448, Ed25519 and Ed448 are treated as distinct algorithms and not as
- one of the EC curves listed with 'ecparam -list_curves' option. You can use the
- following command to generate an X25519 key:
- openssl genpkey -algorithm X25519 -out xkey.pem
|