Use correct EOL in headers.
[openssl.git] / doc / apps / openssl.pod
1
2 =pod
3
4 =head1 NAME
5
6 openssl - OpenSSL command line tool
7
8 =head1 SYNOPSIS
9
10 B<openssl>
11 I<command>
12 [ I<command_opts> ]
13 [ I<command_args> ]
14
15 B<openssl> B<list> [ B<standard-commands> | B<digest-commands> | B<cipher-commands> | B<cipher-algorithms> | B<digest-algorithms> | B<public-key-algorithms>]
16
17 B<openssl> B<no->I<XXX> [ I<arbitrary options> ]
18
19 =head1 DESCRIPTION
20
21 OpenSSL is a cryptography toolkit implementing the Secure Sockets Layer (SSL
22 v2/v3) and Transport Layer Security (TLS v1) network protocols and related
23 cryptography standards required by them.
24
25 The B<openssl> program is a command line tool for using the various
26 cryptography functions of OpenSSL's B<crypto> library from the shell.
27 It can be used for
28
29  o  Creation and management of private keys, public keys and parameters
30  o  Public key cryptographic operations
31  o  Creation of X.509 certificates, CSRs and CRLs
32  o  Calculation of Message Digests
33  o  Encryption and Decryption with Ciphers
34  o  SSL/TLS Client and Server Tests
35  o  Handling of S/MIME signed or encrypted mail
36  o  Time Stamp requests, generation and verification
37
38 =head1 COMMAND SUMMARY
39
40 The B<openssl> program provides a rich variety of commands (I<command> in the
41 SYNOPSIS above), each of which often has a wealth of options and arguments
42 (I<command_opts> and I<command_args> in the SYNOPSIS).
43
44 The list parameters B<standard-commands>, B<digest-commands>,
45 and B<cipher-commands> output a list (one entry per line) of the names
46 of all standard commands, message digest commands, or cipher commands,
47 respectively, that are available in the present B<openssl> utility.
48
49 The list parameters B<cipher-algorithms> and
50 B<digest-algorithms> list all cipher and message digest names, one entry per line. Aliases are listed as:
51
52  from => to
53
54 The list parameter B<public-key-algorithms> lists all supported public
55 key algorithms.
56
57 The command B<no->I<XXX> tests whether a command of the
58 specified name is available.  If no command named I<XXX> exists, it
59 returns 0 (success) and prints B<no->I<XXX>; otherwise it returns 1
60 and prints I<XXX>.  In both cases, the output goes to B<stdout> and
61 nothing is printed to B<stderr>.  Additional command line arguments
62 are always ignored.  Since for each cipher there is a command of the
63 same name, this provides an easy way for shell scripts to test for the
64 availability of ciphers in the B<openssl> program.  (B<no->I<XXX> is
65 not able to detect pseudo-commands such as B<quit>,
66 B<list>, or B<no->I<XXX> itself.)
67
68 =head2 STANDARD COMMANDS
69
70 =over 10
71
72 =item L<B<asn1parse>|asn1parse(1)>
73
74 Parse an ASN.1 sequence.
75
76 =item L<B<ca>|ca(1)>
77
78 Certificate Authority (CA) Management.
79
80 =item L<B<ciphers>|ciphers(1)>
81
82 Cipher Suite Description Determination.
83
84 =item L<B<cms>|cms(1)>
85
86 CMS (Cryptographic Message Syntax) utility
87
88 =item L<B<crl>|crl(1)>
89
90 Certificate Revocation List (CRL) Management.
91
92 =item L<B<crl2pkcs7>|crl2pkcs7(1)>
93
94 CRL to PKCS#7 Conversion.
95
96 =item L<B<dgst>|dgst(1)>
97
98 Message Digest Calculation.
99
100 =item B<dh>
101
102 Diffie-Hellman Parameter Management.
103 Obsoleted by L<B<dhparam>|dhparam(1)>.
104
105 =item L<B<dhparam>|dhparam(1)>
106
107 Generation and Management of Diffie-Hellman Parameters. Superseded by
108 L<B<genpkey>|genpkey(1)> and L<B<pkeyparam>|pkeyparam(1)>
109
110
111 =item L<B<dsa>|dsa(1)>
112
113 DSA Data Management.
114
115 =item L<B<dsaparam>|dsaparam(1)>
116
117 DSA Parameter Generation and Management. Superseded by
118 L<B<genpkey>|genpkey(1)> and L<B<pkeyparam>|pkeyparam(1)>
119
120 =item L<B<ec>|ec(1)>
121
122 EC (Elliptic curve) key processing
123
124 =item L<B<ecparam>|ecparam(1)>
125
126 EC parameter manipulation and generation
127
128 =item L<B<enc>|enc(1)>
129
130 Encoding with Ciphers.
131
132 =item L<B<engine>|engine(1)>
133
134 Engine (loadable module) information and manipulation.
135
136 =item L<B<errstr>|errstr(1)>
137
138 Error Number to Error String Conversion.
139
140 =item B<gendh>
141
142 Generation of Diffie-Hellman Parameters.
143 Obsoleted by L<B<dhparam>|dhparam(1)>.
144
145 =item L<B<gendsa>|gendsa(1)>
146
147 Generation of DSA Private Key from Parameters. Superseded by
148 L<B<genpkey>|genpkey(1)> and L<B<pkey>|pkey(1)>
149
150 =item L<B<genpkey>|genpkey(1)>
151
152 Generation of Private Key or Parameters.
153
154 =item L<B<genrsa>|genrsa(1)>
155
156 Generation of RSA Private Key. Superseded by L<B<genpkey>|genpkey(1)>.
157
158 =item L<B<nseq>|nseq(1)>
159
160 Create or examine a netscape certificate sequence
161
162 =item L<B<ocsp>|ocsp(1)>
163
164 Online Certificate Status Protocol utility.
165
166 =item L<B<passwd>|passwd(1)>
167
168 Generation of hashed passwords.
169
170 =item L<B<pkcs12>|pkcs12(1)>
171
172 PKCS#12 Data Management.
173
174 =item L<B<pkcs7>|pkcs7(1)>
175
176 PKCS#7 Data Management.
177
178 =item L<B<pkey>|pkey(1)>
179
180 Public and private key management.
181
182 =item L<B<pkeyparam>|pkeyparam(1)>
183
184 Public key algorithm parameter management.
185
186 =item L<B<pkeyutl>|pkeyutl(1)>
187
188 Public key algorithm cryptographic operation utility.
189
190 =item L<B<rand>|rand(1)>
191
192 Generate pseudo-random bytes.
193
194 =item L<B<req>|req(1)>
195
196 PKCS#10 X.509 Certificate Signing Request (CSR) Management.
197
198 =item L<B<rsa>|rsa(1)>
199
200 RSA key management.
201
202
203 =item L<B<rsautl>|rsautl(1)>
204
205 RSA utility for signing, verification, encryption, and decryption. Superseded
206 by  L<B<pkeyutl>|pkeyutl(1)>
207
208 =item L<B<s_client>|s_client(1)>
209
210 This implements a generic SSL/TLS client which can establish a transparent
211 connection to a remote server speaking SSL/TLS. It's intended for testing
212 purposes only and provides only rudimentary interface functionality but
213 internally uses mostly all functionality of the OpenSSL B<ssl> library.
214
215 =item L<B<s_server>|s_server(1)>
216
217 This implements a generic SSL/TLS server which accepts connections from remote
218 clients speaking SSL/TLS. It's intended for testing purposes only and provides
219 only rudimentary interface functionality but internally uses mostly all
220 functionality of the OpenSSL B<ssl> library.  It provides both an own command
221 line oriented protocol for testing SSL functions and a simple HTTP response
222 facility to emulate an SSL/TLS-aware webserver.
223
224 =item L<B<s_time>|s_time(1)>
225
226 SSL Connection Timer.
227
228 =item L<B<sess_id>|sess_id(1)>
229
230 SSL Session Data Management.
231
232 =item L<B<smime>|smime(1)>
233
234 S/MIME mail processing.
235
236 =item L<B<speed>|speed(1)>
237
238 Algorithm Speed Measurement.
239
240 =item L<B<spkac>|spkac(1)>
241
242 SPKAC printing and generating utility
243
244 =item L<B<ts>|ts(1)>
245
246 Time Stamping Authority tool (client/server)
247
248 =item L<B<verify>|verify(1)>
249
250 X.509 Certificate Verification.
251
252 =item L<B<version>|version(1)>
253
254 OpenSSL Version Information.
255
256 =item L<B<x509>|x509(1)>
257
258 X.509 Certificate Data Management.
259
260 =back
261
262 =head2 MESSAGE DIGEST COMMANDS
263
264 =over 10
265
266 =item B<md2>
267
268 MD2 Digest
269
270 =item B<md5>
271
272 MD5 Digest
273
274 =item B<mdc2>
275
276 MDC2 Digest
277
278 =item B<rmd160>
279
280 RMD-160 Digest
281
282 =item B<sha>
283
284 SHA Digest
285
286 =item B<sha1>
287
288 SHA-1 Digest
289
290 =item B<sha224>
291
292 SHA-224 Digest
293
294 =item B<sha256>
295
296 SHA-256 Digest
297
298 =item B<sha384>
299
300 SHA-384 Digest
301
302 =item B<sha512>
303
304 SHA-512 Digest
305
306 =back
307
308 =head2 ENCODING AND CIPHER COMMANDS
309
310 =over 10
311
312 =item B<base64>
313
314 Base64 Encoding
315
316 =item B<bf bf-cbc bf-cfb bf-ecb bf-ofb>
317
318 Blowfish Cipher
319
320 =item B<cast cast-cbc>
321
322 CAST Cipher
323
324 =item B<cast5-cbc cast5-cfb cast5-ecb cast5-ofb>
325
326 CAST5 Cipher
327
328 =item B<des des-cbc des-cfb des-ecb des-ede des-ede-cbc des-ede-cfb des-ede-ofb des-ofb>
329
330 DES Cipher
331
332 =item B<des3 desx des-ede3 des-ede3-cbc des-ede3-cfb des-ede3-ofb>
333
334 Triple-DES Cipher
335
336 =item B<idea idea-cbc idea-cfb idea-ecb idea-ofb>
337
338 IDEA Cipher
339
340 =item B<rc2 rc2-cbc rc2-cfb rc2-ecb rc2-ofb>
341
342 RC2 Cipher
343
344 =item B<rc4>
345
346 RC4 Cipher
347
348 =item B<rc5 rc5-cbc rc5-cfb rc5-ecb rc5-ofb>
349
350 RC5 Cipher
351
352 =back
353
354 =head1 PASS PHRASE ARGUMENTS
355
356 Several commands accept password arguments, typically using B<-passin>
357 and B<-passout> for input and output passwords respectively. These allow
358 the password to be obtained from a variety of sources. Both of these
359 options take a single argument whose format is described below. If no
360 password argument is given and a password is required then the user is
361 prompted to enter one: this will typically be read from the current
362 terminal with echoing turned off.
363
364 =over 10
365
366 =item B<pass:password>
367
368 the actual password is B<password>. Since the password is visible
369 to utilities (like 'ps' under Unix) this form should only be used
370 where security is not important.
371
372 =item B<env:var>
373
374 obtain the password from the environment variable B<var>. Since
375 the environment of other processes is visible on certain platforms
376 (e.g. ps under certain Unix OSes) this option should be used with caution.
377
378 =item B<file:pathname>
379
380 the first line of B<pathname> is the password. If the same B<pathname>
381 argument is supplied to B<-passin> and B<-passout> arguments then the first
382 line will be used for the input password and the next line for the output
383 password. B<pathname> need not refer to a regular file: it could for example
384 refer to a device or named pipe.
385
386 =item B<fd:number>
387
388 read the password from the file descriptor B<number>. This can be used to
389 send the data via a pipe for example.
390
391 =item B<stdin>
392
393 read the password from standard input.
394
395 =back
396
397 =head1 SEE ALSO
398
399 L<asn1parse(1)>, L<ca(1)>, L<config(5)>,
400 L<crl(1)>, L<crl2pkcs7(1)>, L<dgst(1)>,
401 L<dhparam(1)>, L<dsa(1)>, L<dsaparam(1)>,
402 L<enc(1)>, L<engine(1)>, L<gendsa(1)>, L<genpkey(1)>,
403 L<genrsa(1)>, L<nseq(1)>, L<openssl(1)>,
404 L<passwd(1)>,
405 L<pkcs12(1)>, L<pkcs7(1)>, L<pkcs8(1)>,
406 L<rand(1)>, L<req(1)>, L<rsa(1)>,
407 L<rsautl(1)>, L<s_client(1)>,
408 L<s_server(1)>, L<s_time(1)>,
409 L<smime(1)>, L<spkac(1)>,
410 L<verify(1)>, L<version(1)>, L<x509(1)>,
411 L<crypto(3)>, L<ssl(3)>, L<x509v3_config(5)>
412
413 =head1 HISTORY
414
415 The B<list->I<XXX>B<-algorithms> pseudo-commands were added in OpenSSL 1.0.0;
416 For notes on the availability of other commands, see their individual
417 manual pages.
418
419 =cut
420
421 =head1 COPYRIGHT
422
423 Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
424
425 Licensed under the OpenSSL license (the "License").  You may not use
426 this file except in compliance with the License.  You can obtain a copy
427 in the file LICENSE in the source distribution or at
428 L<https://www.openssl.org/source/license.html>.
429
430 =cut