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