123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- <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. 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.
- For X25519 and X448, it's treated as a distinct algorithm but not as one of
- the 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
|