To generate Rivest, Shamir, and Adelman (RSA) key pairs, use thecrypto key generate rsa commandinglobal configuration mode.
crypto key generate rsa [ general-keys |usage-keys | signature | encryption ] [ label key-label ] [exportable] [ modulus modulus-size ] [ storage devicename : ] [redundancy] [ on devicename : ]
Syntax Description
Command History
Release | Modification |
---|---|
11.3 | This command was introduced. |
12.2(8)T | The key-label argumentwas added. |
12.2(15)T | The exportable keyword was added. |
12.2(18)SXD | This command was integrated into Cisco IOS Release12.2(18)SXD. |
12.4(4)T | The storagekeyword and devicename : argument were added. |
12.2(33)SRA | This command was integrated into Cisco IOS Release12.2(33)SRA. |
12.4(11)T | The storagekeyword and devicename : argument were implemented on the Cisco7200VXR NPE-G2 platform. The signature, encryption and on keywords and devicename : argument were added. |
12.4(24)T | Support for IPv6 Secure Neighbor Discovery (SeND) was added. |
XE 2.4 | The maximum RSA key size was expanded from 2048 to 4096 bits forprivate key operations. |
15.0(1)M | This command was modified. The redundancy keyword was introduced. |
15.1(1)T | This command was modified. The range value for the modulus keyword value isextended from 360 to 2048 bits to 360 to 4096 bits. |
Usage Guidelines
Note | Security threats, as well as the cryptographic technologies tohelp protect against them, are constantly changing. For moreinformation about the latest Cisco cryptographic recommendations,see the Next Generation Encryption (NGE) whitepaper. |
Use this command to generate RSA key pairs for your Cisco device(such as a router).
RSA keys are generated in pairs--one public RSA key and oneprivate RSA key.
If your router already has RSA keys when you issue this command,you will be warned and prompted to replace the existing keys withnew keys.
Note | Before issuing this command, ensure that your router has ahostname and IP domain name configured (with the hostname and ip domain-name commands). You will be unable tocomplete the crypto key generate rsa commandwithout a hostname and IP domain name. (This situation is not truewhen you generate only a named key pair.) |
Note | Secure Shell (SSH) may generate an additional RSA key pair ifyou generate a key pair on a router having no RSA keys. Theadditional key pair is used only by SSH and will have a name suchas {router_FQDN }.server. For example, if a router name is“router1.cisco.com,” the key name is“router1.cisco.com.server.” |
This command is not saved in the router configuration; however,the RSA keys generated by this command are saved in the privateconfiguration in NVRAM (which is never displayed to the user orbacked up to another device) the next time the configuration iswritten to NVRAM.
Note | If the configuration is not saved to NVRAM, the generated keysare lost on the next reload of the router. |
There are two mutually exclusive types of RSA key pairs:special-usage keys and general-purpose keys. When you generate RSAkey pairs, you will be prompted to select either special-usage keysor general-purpose keys.
Special-Usage Keys
If you generate special-usage keys, two pairs of RSA keys willbe generated. One pair will be used with any Internet Key Exchange(IKE) policy that specifies RSA signatures as the authenticationmethod, and the other pair will be used with any IKE policy thatspecifies RSA encrypted keys as the authentication method.
A CA is used only with IKE policies specifying RSA signatures,not with IKE policies specifying RSA-encrypted nonces. (However,you could specify more than one IKE policy and have RSA signaturesspecified in one policy and RSA-encrypted nonces in anotherpolicy.)
If you plan to have both types of RSA authentication methods inyour IKE policies, you may prefer to generate special-usage keys.With special-usage keys, each key is not unnecessarily exposed.(Without special-usage keys, one key is used for bothauthentication methods, increasing the exposure of that key.)
General-Purpose Keys
If you generate general-purpose keys, only one pair of RSA keyswill be generated. This pair will be used with IKE policiesspecifying either RSA signatures or RSA encrypted keys. Therefore,a general-purpose key pair might get used more frequently than aspecial-usage key pair.
Named Key Pairs
If you generate a named key pair using the key-labelargument, you mustalso specify the usage-keys keyword or the general-keys keyword. Namedkey pairs allow you to have multiple RSA key pairs, enabling theCisco IOS software to maintain a different key pair for eachidentity certificate.
Modulus Length
When you generate RSA keys, you will be prompted to enter amodulus length. The longer the modulus, the stronger the security.However a longer modules takes longer to generate (see the tablebelow for sample times) and takes longer to use.
Router | 360 bits | 512 bits | 1024 bits | 2048 bits (maximum) |
---|---|---|---|---|
Cisco 2500 | 11 seconds | 20 seconds | 4 minutes, 38 seconds | More than 1 hour |
Cisco 4700 | Less than 1 second | 1 second | 4 seconds | 50 seconds |
Cisco IOS software does not support a modulus greater than 4096bits. A length of less than 512 bits is normally not recommended.In certain situations, the shorter modulus may not functionproperly with IKE, so we recommend using a minimum modulus of 2048bits.
Note | As of Cisco IOS Release 12.4(11)T, peer public RSA keymodulus values up to 4096 bits are automatically supported. Thelargest private RSA key modulus is 4096 bits. Therefore, thelargest RSA private key a router may generate or import is 4096bits. However, RFC 2409 restricts the private key size to 2048 bitsor less for RSA encryption. The recommended modulus for a CA is2048 bits; the recommended modulus for a client is 2048 bits. |
Additional limitations may apply when RSA keys are generated bycryptographic hardware. For example, when RSA keys are generated bythe Cisco VPN Services Port Adapter (VSPA), the RSA key modulusmust be a minimum of 384 bits and must be a multiple of 64.
Specifying a Storage Location for RSA Keys
When you issue the crypto key generate rsa commandwith the storage devicename : keyword and argument, the RSA keys will bestored on the specified device. This location will supersede anycrypto key storage commandsettings.
Specifying a Device for RSA Key Generation
As of Cisco IOS Release 12.4(11)T and later releases, you mayspecify the device where RSA keys are generated. Devices supportedinclude NVRAM, local disks, and USB tokens. If your router has aUSB token configured and available, the USB token can be used ascryptographic device in addition to a storage device. Using a USBtoken as a cryptographic device allows RSA operations such as keygeneration, signing, and authentication of credentials to beperformed on the token. The private key never leaves the USB tokenand is not exportable. The public key is exportable.
RSA keys may be generated on a configured and available USBtoken, by the use of the on devicename : keyword and argument. Keys that reside on aUSB token are saved to persistent token storage when they aregenerated. The number of keys that can be generated on a USB tokenis limited by the space available. If you attempt to generate keyson a USB token and it is full you will receive the followingmessage:
% Error in generating keys:no available resources
Key deletion will remove the keys stored on the token frompersistent storage immediately. (Keys that do not reside on a tokenare saved to or deleted from nontoken storage locations when thecopyor similarcommand is issued.)
For information on configuring a USB token, see “ Storing PKICredentials ” chapter in the Cisco IOS Security ConfigurationGuide, Release 12.4T. For information on using on-token RSAcredentials, see the “ Configuring and Managing a Cisco IOSCertificate Server for PKI Deployment ” chapter in the Cisco IOSSecurity Configuration Guide , Release 12.4T.
Specifying RSA Key Redundancy Generation on aDevice
You can specify redundancy for existing keys only if they areexportable.
Examples
The following example generates a general-usage 1024-bit RSA keypair on a USB token with the label “ms2” with crypto enginedebugging messages shown:
Router(config)# crypto key generate rsa label ms2 modulus 2048 on usbtoken0:The name for the keys will be: ms2 % The key modulus size is 2048 bits % Generating 1024 bit RSA keys, keys will be on-token, non-exportable... Jan 7 02:41:40.895: crypto_engine: Generate public/private keypair [OK] Jan 7 02:44:09.623: crypto_engine: Create signature Jan 7 02:44:10.467: crypto_engine: Verify signature Jan 7 02:44:10.467: CryptoEngine0: CRYPTO_ISA_RSA_CREATE_PUBKEY(hw)(ipsec) Jan 7 02:44:10.467: CryptoEngine0: CRYPTO_ISA_RSA_PUB_DECRYPT(hw)(ipsec)
Now, the on-token keys labeled “ms2” may be used forenrollment.
The following example generates special-usage RSA keys:
Router(config)# crypto key generate rsa usage-keysThe name for the keys will be: myrouter.example.comChoose the size of the key modulus in the range of 360 to 2048 for your Signature Keys. Choosing a key modulus greater than 512 may take a few minutes.How many bits in the modulus[512]? <return>Generating RSA keys.... [OK].Choose the size of the key modulus in the range of 360 to 2048 for your Encryption Keys. Choosing a key modulus greater than 512 may take a few minutes.How many bits in the modulus[512]? <return>Generating RSA keys.... [OK].
The following example generates general-purpose RSA keys:
Note | You cannot generate both special-usage and general-purpose keys;you can generate only one or the other. |
Router(config)# crypto key generate rsa general-keysThe name for the keys will be: myrouter.example.comChoose the size of the key modulus in the range of 360 to 2048 for your General Purpose Keys. Choosing a key modulus greater than 512 may take a few minutes.How many bits in the modulus[512]? <return>Generating RSA keys.... [OK].
The following example generates the general-purpose RSA key pair“exampleCAkeys”:
crypto key generate rsa general-keys label exampleCAkeyscrypto ca trustpoint exampleCAkeys enroll url http://exampleCAkeys/certsrv/mscep/mscep.dll rsakeypair exampleCAkeys 1024 1024
The following example specifies the RSA key storage location of“usbtoken0:” for “tokenkey1”:
crypto key generate rsa general-keys label tokenkey1 storageusbtoken0:
The following example specifies the redundancy keyword:
Router(config)# crypto key generate rsa label MYKEYS redundancy
The name for the keys will be: MYKEYS
Choose the size of the key modulus in the range of 360 to 2048for your
General Purpose Keys. Choosing a key modulus greater than 512may take
a few minutes.
How many bits in the modulus [512]:
% Generating 512 bit RSA keys, keys will be non-exportable withredundancy...[OK]
Related Commands
Command | Description |
---|---|
copy | Copies any file from a source to a destination, use the copycommand in privileged EXEC mode. |
crypto key storage | Sets the default storage location for RSA key pairs. |
debug crypto engine | Displays debug messages about crypto engines. |
hostname | Specifies or modifies the hostname for the network server. |
ip domain-name | Defines a default domain name to complete unqualified hostnames(names without a dotted-decimal domain name). |
show crypto key mypubkey rsa | Displays the RSA public keys of your router. |
show crypto pki certificates | Displays information about your PKI certificate, certificationauthority, and any registration authority certificates. |