1 1.1 christos =pod 2 1.1 christos 3 1.1 christos =head1 NAME 4 1.1 christos 5 1.1 christos openssl-rsa, 6 1.1 christos rsa - RSA key processing tool 7 1.1 christos 8 1.1 christos =head1 SYNOPSIS 9 1.1 christos 10 1.1 christos B<openssl> B<rsa> 11 1.1 christos [B<-help>] 12 1.1 christos [B<-inform PEM|DER>] 13 1.1 christos [B<-outform PEM|DER>] 14 1.1 christos [B<-in filename>] 15 1.1 christos [B<-passin arg>] 16 1.1 christos [B<-out filename>] 17 1.1 christos [B<-passout arg>] 18 1.1 christos [B<-aes128>] 19 1.1 christos [B<-aes192>] 20 1.1 christos [B<-aes256>] 21 1.1 christos [B<-aria128>] 22 1.1 christos [B<-aria192>] 23 1.1 christos [B<-aria256>] 24 1.1 christos [B<-camellia128>] 25 1.1 christos [B<-camellia192>] 26 1.1 christos [B<-camellia256>] 27 1.1 christos [B<-des>] 28 1.1 christos [B<-des3>] 29 1.1 christos [B<-idea>] 30 1.1 christos [B<-text>] 31 1.1 christos [B<-noout>] 32 1.1 christos [B<-modulus>] 33 1.1 christos [B<-check>] 34 1.1 christos [B<-pubin>] 35 1.1 christos [B<-pubout>] 36 1.1 christos [B<-RSAPublicKey_in>] 37 1.1 christos [B<-RSAPublicKey_out>] 38 1.1 christos [B<-engine id>] 39 1.1 christos 40 1.1 christos =head1 DESCRIPTION 41 1.1 christos 42 1.1 christos The B<rsa> command processes RSA keys. They can be converted between various 43 1.1 christos forms and their components printed out. B<Note> this command uses the 44 1.1 christos traditional SSLeay compatible format for private key encryption: newer 45 1.1 christos applications should use the more secure PKCS#8 format using the B<pkcs8> 46 1.1 christos utility. 47 1.1 christos 48 1.1 christos =head1 OPTIONS 49 1.1 christos 50 1.1 christos =over 4 51 1.1 christos 52 1.1 christos =item B<-help> 53 1.1 christos 54 1.1 christos Print out a usage message. 55 1.1 christos 56 1.1 christos =item B<-inform DER|PEM> 57 1.1 christos 58 1.1 christos This specifies the input format. The B<DER> option uses an ASN1 DER encoded 59 1.1 christos form compatible with the PKCS#1 RSAPrivateKey or SubjectPublicKeyInfo format. 60 1.1 christos The B<PEM> form is the default format: it consists of the B<DER> format base64 61 1.1 christos encoded with additional header and footer lines. On input PKCS#8 format private 62 1.1 christos keys are also accepted. 63 1.1 christos 64 1.1 christos =item B<-outform DER|PEM> 65 1.1 christos 66 1.1 christos This specifies the output format, the options have the same meaning and default 67 1.1 christos as the B<-inform> option. 68 1.1 christos 69 1.1 christos =item B<-in filename> 70 1.1 christos 71 1.1 christos This specifies the input filename to read a key from or standard input if this 72 1.1 christos option is not specified. If the key is encrypted a pass phrase will be 73 1.1 christos prompted for. 74 1.1 christos 75 1.1 christos =item B<-passin arg> 76 1.1 christos 77 1.1 christos The input file password source. For more information about the format of B<arg> 78 1.1 christos see L<openssl(1)/Pass Phrase Options>. 79 1.1 christos 80 1.1 christos =item B<-out filename> 81 1.1 christos 82 1.1 christos This specifies the output filename to write a key to or standard output if this 83 1.1 christos option is not specified. If any encryption options are set then a pass phrase 84 1.1 christos will be prompted for. The output filename should B<not> be the same as the input 85 1.1 christos filename. 86 1.1 christos 87 1.1 christos =item B<-passout password> 88 1.1 christos 89 1.1 christos The output file password source. For more information about the format of B<arg> 90 1.1 christos see L<openssl(1)/Pass Phrase Options>. 91 1.1 christos 92 1.1 christos =item B<-aes128>, B<-aes192>, B<-aes256>, B<-aria128>, B<-aria192>, B<-aria256>, B<-camellia128>, B<-camellia192>, B<-camellia256>, B<-des>, B<-des3>, B<-idea> 93 1.1 christos 94 1.1 christos These options encrypt the private key with the specified 95 1.1 christos cipher before outputting it. A pass phrase is prompted for. 96 1.1 christos If none of these options is specified the key is written in plain text. This 97 1.1 christos means that using the B<rsa> utility to read in an encrypted key with no 98 1.1 christos encryption option can be used to remove the pass phrase from a key, or by 99 1.1 christos setting the encryption options it can be use to add or change the pass phrase. 100 1.1 christos These options can only be used with PEM format output files. 101 1.1 christos 102 1.1 christos =item B<-text> 103 1.1 christos 104 1.1 christos Prints out the various public or private key components in 105 1.1 christos plain text in addition to the encoded version. 106 1.1 christos 107 1.1 christos =item B<-noout> 108 1.1 christos 109 1.1 christos This option prevents output of the encoded version of the key. 110 1.1 christos 111 1.1 christos =item B<-modulus> 112 1.1 christos 113 1.1 christos This option prints out the value of the modulus of the key. 114 1.1 christos 115 1.1 christos =item B<-check> 116 1.1 christos 117 1.1 christos This option checks the consistency of an RSA private key. 118 1.1 christos 119 1.1 christos =item B<-pubin> 120 1.1 christos 121 1.1 christos By default a private key is read from the input file: with this 122 1.1 christos option a public key is read instead. 123 1.1 christos 124 1.1 christos =item B<-pubout> 125 1.1 christos 126 1.1 christos By default a private key is output: with this option a public 127 1.1 christos key will be output instead. This option is automatically set if 128 1.1 christos the input is a public key. 129 1.1 christos 130 1.1 christos =item B<-RSAPublicKey_in>, B<-RSAPublicKey_out> 131 1.1 christos 132 1.1 christos Like B<-pubin> and B<-pubout> except B<RSAPublicKey> format is used instead. 133 1.1 christos 134 1.1 christos =item B<-engine id> 135 1.1 christos 136 1.1 christos Specifying an engine (by its unique B<id> string) will cause B<rsa> 137 1.1 christos to attempt to obtain a functional reference to the specified engine, 138 1.1 christos thus initialising it if needed. The engine will then be set as the default 139 1.1 christos for all available algorithms. 140 1.1 christos 141 1.1 christos =back 142 1.1 christos 143 1.1 christos =head1 NOTES 144 1.1 christos 145 1.1 christos The PEM private key format uses the header and footer lines: 146 1.1 christos 147 1.1 christos -----BEGIN RSA PRIVATE KEY----- 148 1.1 christos -----END RSA PRIVATE KEY----- 149 1.1 christos 150 1.1 christos The PEM public key format uses the header and footer lines: 151 1.1 christos 152 1.1 christos -----BEGIN PUBLIC KEY----- 153 1.1 christos -----END PUBLIC KEY----- 154 1.1 christos 155 1.1 christos The PEM B<RSAPublicKey> format uses the header and footer lines: 156 1.1 christos 157 1.1 christos -----BEGIN RSA PUBLIC KEY----- 158 1.1 christos -----END RSA PUBLIC KEY----- 159 1.1 christos 160 1.1 christos =head1 EXAMPLES 161 1.1 christos 162 1.1 christos To remove the pass phrase on an RSA private key: 163 1.1 christos 164 1.1 christos openssl rsa -in key.pem -out keyout.pem 165 1.1 christos 166 1.1 christos To encrypt a private key using triple DES: 167 1.1 christos 168 1.1 christos openssl rsa -in key.pem -des3 -out keyout.pem 169 1.1 christos 170 1.1 christos To convert a private key from PEM to DER format: 171 1.1 christos 172 1.1 christos openssl rsa -in key.pem -outform DER -out keyout.der 173 1.1 christos 174 1.1 christos To print out the components of a private key to standard output: 175 1.1 christos 176 1.1 christos openssl rsa -in key.pem -text -noout 177 1.1 christos 178 1.1 christos To just output the public part of a private key: 179 1.1 christos 180 1.1 christos openssl rsa -in key.pem -pubout -out pubkey.pem 181 1.1 christos 182 1.1 christos Output the public part of a private key in B<RSAPublicKey> format: 183 1.1 christos 184 1.1 christos openssl rsa -in key.pem -RSAPublicKey_out -out pubkey.pem 185 1.1 christos 186 1.1 christos =head1 BUGS 187 1.1 christos 188 1.1 christos There should be an option that automatically handles .key files, 189 1.1 christos without having to manually edit them. 190 1.1 christos 191 1.1 christos =head1 SEE ALSO 192 1.1 christos 193 1.1 christos L<pkcs8(1)>, L<dsa(1)>, L<genrsa(1)>, 194 1.1 christos L<gendsa(1)> 195 1.1 christos 196 1.1 christos =head1 COPYRIGHT 197 1.1 christos 198 1.1 christos Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved. 199 1.1 christos 200 1.1 christos Licensed under the OpenSSL license (the "License"). You may not use 201 1.1 christos this file except in compliance with the License. You can obtain a copy 202 1.1 christos in the file LICENSE in the source distribution or at 203 1.1 christos L<https://www.openssl.org/source/license.html>. 204 1.1 christos 205 1.1 christos =cut 206