You need to programmatically create a public/private key pair using the RSA algorithm with a minimumkey strength of 2048 bits. The method you use to generate this key pair may differ depending onplatform and programming language.
Generating a public/private key pair by using OpenSSL library
Generate RSA Key Pair with openssl genpkey OpenSSL is a giant command-line binary capable of a lot of various security related utilities. Each utility is easily broken down via the first argument of openssl. For instance, to generate an RSA key, the command to use will be openssl genpkey.
- Openssl genrsa -out rsa.private 1024 4. The private key is generated and saved in a file named 'rsa.private' located in the same folder. NOTE The number '1024' in the above command indicates the size of the private key. You can choose one of five sizes: 512, 758, 1024, 1536 or 2048 (these numbers represent bits).
- The key will have two primes (i.e. It will not be a multi-prime key), and public exponent 65537, which are by far the most interoperable parameters. Unless you have special requirements, generate a 2048-bit key. The key's algorithm identifier is rsaEncryption (1.2.840.113549.1.1.1), which is the most interoperable form.
- Generating keys using OpenSSL. There are two ways of getting private keys into a YubiKey: You can either generate the keys directly on the YubiKey, or generate them outside of the device, and then importing them into the YubiKey. Reasons for importing keys include wanting to make a backup of a private key (generated keys are non-exportable.
- Getting the public key corresponding to a particular private key, through the methods provided for by OpenSSL, is a bit cumbersome. An easier way to do it is to use phpseclib, a pure PHP RSA implementation.
- OpenSSL can generate several kinds of public/private keypairs. RSA is the most common kind of keypair generation. Other popular ways of generating RSA public key / private key pairs include PuTTYgen and ssh-keygen.
The steps below are an example of the process for generating a public/private key pair for key exchange,using OpenSSL. To execute the following commands, you will need an OpenSSL runtime installed (whichyou can download and install from the OpenSSL website, or install one from your operating system’spackage management system).
- Generate an RSA key pair with a 2048 bit private key, by executing the following command:
'openssl genrsa - out private_key.pem 2048'
The following sample shows the command: - Extract the public key from the RSA key pair, by executing the following command:
'openssl rsa -pubout -in private_key.pem -out public_key.pem'
The following sample shows the command:A new file, public_key.pem , is created with the public key. - Follow the instructions in the next (Validating your private key) section to confirm that your key meets the required criteria.
Validating your private key
When a private key has been generated, you can use the following OpenSSL command to verify that theprivate key fits the required criteria.
![Generation Generation](/uploads/1/2/5/7/125716790/159922976.png)
Rsa
- Execute the following command:
'openssl rsa -in private_key_sample.pem -text' - Verify that the first line of the output includes the private key strength:
Private Key: (2048 bit)
If the first line of output states “ unable to load Private Key ,” your private key is not a valid RSA private key.
Several tools exist to generate SSH public/private key pairs. The following sections show how to generate an SSH key pair on UNIX, UNIX-like and Windows platforms.
Openssl Rsa Public Key
Generating an SSH Key Pair on UNIX and UNIX-Like Platforms Using the ssh-keygen Utility
UNIX and UNIX-like platforms (including Solaris and Linux) include the ssh-keygen utility to generate SSH key pairs.
Openssl Rsa Key Pair Generation 2
To generate an SSH key pair on UNIX and UNIX-like platforms using the ssh-keygen utility:
Openssl Generate Rsa Private Key
- Navigate to your home directory:
- Run the ssh-keygen utility, providing as
filename
your choice of file name for the private key:The ssh-keygen utility prompts you for a passphrase for the private key. - Enter a passphrase for the private key, or press Enter to create a private key without a passphrase:Note:While a passphrase is not required, you should specify one as a security measure to protect the private key from unauthorized use. When you specify a passphrase, a user must enter the passphrase every time the private key is used.The ssh-keygen utility prompts you to enter the passphrase again.
- Enter the passphrase again, or press Enter again to continue creating a private key without a passphrase:
- The ssh-keygen utility displays a message indicating that the private key has been saved as
filename
and the public key has been saved asfilename
.pub
. It also displays information about the key fingerprint and randomart image.
Generating an SSH Key Pair on Windows Using the PuTTYgen Program
The PuTTYgen program is part of PuTTY, an open source networking client for the Windows platform.
To generate an SSH key pair on Windows using the PuTTYgen program:
- Download and install PuTTY or PuTTYgen.To download PuTTY or PuTTYgen, go to http://www.putty.org/ and click the You can download PuTTY here link.
- Run the PuTTYgen program.
- Set the Type of key to generate option to SSH-2 RSA.
- In the Number of bits in a generated key box, enter 2048.
- Click Generate to generate a public/private key pair.As the key is being generated, move the mouse around the blank area as directed.
- (Optional) Enter a passphrase for the private key in the Key passphrase box and reenter it in the Confirm passphrase box.Note:While a passphrase is not required, you should specify one as a security measure to protect the private key from unauthorized use. When you specify a passphrase, a user must enter the passphrase every time the private key is used.
- Click Save private key to save the private key to a file. To adhere to file-naming conventions, you should give the private key file an extension of
.ppk
(PuTTY private key).Note:The.ppk
file extension indicates that the private key is in PuTTY's proprietary format. You must use a key of this format when using PuTTY as your SSH client. It cannot be used with other SSH client tools. Refer to the PuTTY documentation to convert a private key in this format to a different format. - Select all of the characters in the Public key for pasting into OpenSSH authorized_keys file box.Make sure you select all the characters, not just the ones you can see in the narrow window. If a scroll bar is next to the characters, you aren't seeing all the characters.
- Right-click somewhere in the selected text and select Copy from the menu.
- Open a text editor and paste the characters, just as you copied them. Start at the first character in the text editor, and do not insert any line breaks.
- Save the text file in the same folder where you saved the private key, using the
.pub
extension to indicate that the file contains a public key. - If you or others are going to use an SSH client that requires the OpenSSH format for private keys (such as the
ssh
utility on Linux), export the private key:- On the Conversions menu, choose Export OpenSSH key.
- Save the private key in OpenSSH format in the same folder where you saved the private key in
.ppk
format, using an extension such as.openssh
to indicate the file's content.