How to use the command `openssl genpkey` (with examples)
This article will illustrate various use cases of the openssl genpkey
command, which is used to generate asymmetric key pairs. The openssl genpkey
command is part of the OpenSSL toolkit and provides a flexible way to generate keys using different algorithms and parameters.
Use case 1: Generate an RSA private key of 2048 bits
Code:
openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits:2048 -out filename.key
Motivation:
Generating an RSA private key with a key size of 2048 bits is considered secure for most general-purpose applications. This use case will generate a new RSA private key and save it to the file filename.key
.
Explanation:
genpkey
: Thegenpkey
subcommand is used to generate an asymmetric key pair.-algorithm rsa
: Specifies the algorithm to be used for key generation, in this case, RSA.-pkeyopt rsa_keygen_bits:2048
: Sets the key size to 2048 bits using thersa_keygen_bits
option.-out filename.key
: Specifies the output file where the generated private key will be saved.
Example Output:
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAr8FjwCfWJ87CUmo2NUUFj5KmSkQac8QWTloVLVOqqwQ8b3dh
...
...
-----END RSA PRIVATE KEY-----
Use case 2: Generate an elliptic curve private key using curve prime256v1
Code:
openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:prime256v1 -out filename.key
Motivation:
Elliptic curve cryptography is becoming more popular due to its smaller key sizes and stronger security compared to traditional RSA. This use case generates a new EC private key using the prime256v1
curve, also known as secp256r1 or P-256.
Explanation:
genpkey
: Thegenpkey
subcommand is used to generate an asymmetric key pair.-algorithm EC
: Specifies the algorithm to be used for key generation, in this case, elliptic curve.-pkeyopt ec_paramgen_curve:prime256v1
: Sets the curve toprime256v1
using theec_paramgen_curve
option.-out filename.key
: Specifies the output file where the generated private key will be saved.
Example Output:
-----BEGIN EC PRIVATE KEY-----
MHcCAQEEIOYmgkkoYD7BdGlDKERbVUINhbERiC96xDS/ttxiUZEGoAoGCCqGSM49
...
...
-----END EC PRIVATE KEY-----
Use case 3: Generate an ED25519
elliptic curve private key
Code:
openssl genpkey -algorithm ED25519 -out filename.key
Motivation: ED25519 is an elliptic curve digital signature algorithm that provides strong security and high performance. This use case generates a new ED25519 private key, which is suitable for various cryptographic operations, including digital signatures.
Explanation:
genpkey
: Thegenpkey
subcommand is used to generate an asymmetric key pair.-algorithm ED25519
: Specifies the algorithm to be used for key generation, in this case, ED25519.-out filename.key
: Specifies the output file where the generated private key will be saved.
Example Output:
-----BEGIN PRIVATE KEY-----
MC4CAQAwBQYDK2VwBCIEIPNyo83J/4gg6cB3hFkgfXUpW/3eBl9Mr2A7EOt8jdz9
...
...
-----END PRIVATE KEY-----
Conclusion
The openssl genpkey
command is a powerful tool for generating asymmetric key pairs. It offers flexibility to choose different algorithms and parameters based on the specific requirements of the application. The examples provided in this article demonstrate how to generate RSA keys, elliptic curve keys using the prime256v1
curve, and ED25519 keys. By understanding the use cases and options of the openssl genpkey
command, users can generate secure and appropriate keys for their cryptographic needs.