5f6f8d3bbf9059c3c032f7255521a61d97b1c91a
[openssl.git] / doc / man1 / openssl.pod
1 =pod
2
3 =head1 NAME
4
5 openssl - OpenSSL command line tool
6
7 =head1 SYNOPSIS
8
9 B<openssl>
10 I<command>
11 [ I<command_opts> ]
12 [ I<command_args> ]
13
14 B<openssl> B<list> [ B<standard-commands> | B<digest-commands> | B<cipher-commands> | B<cipher-algorithms> | B<digest-algorithms> | B<mac-algorithms> | B<public-key-algorithms>]
15
16 B<openssl> B<no->I<XXX> [ I<arbitrary options> ]
17
18 =head1 DESCRIPTION
19
20 OpenSSL is a cryptography toolkit implementing the Secure Sockets Layer (SSL
21 v2/v3) and Transport Layer Security (TLS v1) network protocols and related
22 cryptography standards required by them.
23
24 The B<openssl> program is a command line tool for using the various
25 cryptography functions of OpenSSL's B<crypto> library from the shell.
26 It can be used for
27
28  o  Creation and management of private keys, public keys and parameters
29  o  Public key cryptographic operations
30  o  Creation of X.509 certificates, CSRs and CRLs
31  o  Calculation of Message Digests and Message Authentication Codes
32  o  Encryption and Decryption with Ciphers
33  o  SSL/TLS Client and Server Tests
34  o  Handling of S/MIME signed or encrypted mail
35  o  Time Stamp requests, generation and verification
36
37 =head1 COMMAND SUMMARY
38
39 The B<openssl> program provides a rich variety of commands (I<command> in the
40 SYNOPSIS above), each of which often has a wealth of options and arguments
41 (I<command_opts> and I<command_args> in the SYNOPSIS).
42
43 Detailed documentation and use cases for most standard subcommands are available
44 (e.g., L<x509(1)> or L<openssl-x509(1)>).
45
46 Many commands use an external configuration file for some or all of their
47 arguments and have a B<-config> option to specify that file.
48 The environment variable B<OPENSSL_CONF> can be used to specify
49 the location of the file.
50 If the environment variable is not specified, then the file is named
51 B<openssl.cnf> in the default certificate storage area, whose value
52 depends on the configuration flags specified when the OpenSSL
53 was built.
54
55 The list parameters B<standard-commands>, B<digest-commands>,
56 and B<cipher-commands> output a list (one entry per line) of the names
57 of all standard commands, message digest commands, or cipher commands,
58 respectively, that are available in the present B<openssl> utility.
59
60 The list parameters B<cipher-algorithms>, B<digest-algorithms>,
61 and B<mac-algorithms> list all cipher, message digest, and message
62 authentication code names, one entry per line. Aliases are listed as:
63
64  from => to
65
66 The list parameter B<public-key-algorithms> lists all supported public
67 key algorithms.
68
69 The command B<no->I<XXX> tests whether a command of the
70 specified name is available.  If no command named I<XXX> exists, it
71 returns 0 (success) and prints B<no->I<XXX>; otherwise it returns 1
72 and prints I<XXX>.  In both cases, the output goes to B<stdout> and
73 nothing is printed to B<stderr>.  Additional command line arguments
74 are always ignored.  Since for each cipher there is a command of the
75 same name, this provides an easy way for shell scripts to test for the
76 availability of ciphers in the B<openssl> program.  (B<no->I<XXX> is
77 not able to detect pseudo-commands such as B<quit>,
78 B<list>, or B<no->I<XXX> itself.)
79
80 =head2 Standard Commands
81
82 =over 4
83
84 =item B<asn1parse>
85
86 Parse an ASN.1 sequence.
87
88 =item B<ca>
89
90 Certificate Authority (CA) Management.
91
92 =item B<ciphers>
93
94 Cipher Suite Description Determination.
95
96 =item B<cms>
97
98 CMS (Cryptographic Message Syntax) utility.
99
100 =item B<crl>
101
102 Certificate Revocation List (CRL) Management.
103
104 =item B<crl2pkcs7>
105
106 CRL to PKCS#7 Conversion.
107
108 =item B<dgst>
109
110 Message Digest calculation. MAC calculations are superseded by
111 L<mac(1)>.
112
113 =item B<dh>
114
115 Diffie-Hellman Parameter Management.
116 Obsoleted by L<dhparam(1)>.
117
118 =item B<dhparam>
119
120 Generation and Management of Diffie-Hellman Parameters. Superseded by
121 L<genpkey(1)> and L<pkeyparam(1)>.
122
123 =item B<dsa>
124
125 DSA Data Management.
126
127 =item B<dsaparam>
128
129 DSA Parameter Generation and Management. Superseded by
130 L<genpkey(1)> and L<pkeyparam(1)>.
131
132 =item B<ec>
133
134 EC (Elliptic curve) key processing.
135
136 =item B<ecparam>
137
138 EC parameter manipulation and generation.
139
140 =item B<enc>
141
142 Encoding with Ciphers.
143
144 =item B<engine>
145
146 Engine (loadable module) information and manipulation.
147
148 =item B<errstr>
149
150 Error Number to Error String Conversion.
151
152 =item B<gendh>
153
154 Generation of Diffie-Hellman Parameters.
155 Obsoleted by L<dhparam(1)>.
156
157 =item B<gendsa>
158
159 Generation of DSA Private Key from Parameters. Superseded by
160 L<genpkey(1)> and L<pkey(1)>.
161
162 =item B<genpkey>
163
164 Generation of Private Key or Parameters.
165
166 =item B<genrsa>
167
168 Generation of RSA Private Key. Superseded by L<genpkey(1)>.
169
170 =item B<mac>
171
172 Message Authentication Code Calculation.
173
174 =item B<nseq>
175
176 Create or examine a Netscape certificate sequence.
177
178 =item B<ocsp>
179
180 Online Certificate Status Protocol utility.
181
182 =item B<passwd>
183
184 Generation of hashed passwords.
185
186 =item B<pkcs12>
187
188 PKCS#12 Data Management.
189
190 =item B<pkcs7>
191
192 PKCS#7 Data Management.
193
194 =item B<pkcs8>
195
196 PKCS#8 format private key conversion tool.
197
198 =item B<pkey>
199
200 Public and private key management.
201
202 =item B<pkeyparam>
203
204 Public key algorithm parameter management.
205
206 =item B<pkeyutl>
207
208 Public key algorithm cryptographic operation utility.
209
210 =item B<prime>
211
212 Compute prime numbers.
213
214 =item B<rand>
215
216 Generate pseudo-random bytes.
217
218 =item B<rehash>
219
220 Create symbolic links to certificate and CRL files named by the hash values.
221
222 =item B<req>
223
224 PKCS#10 X.509 Certificate Signing Request (CSR) Management.
225
226 =item B<rsa>
227
228 RSA key management.
229
230 =item B<rsautl>
231
232 RSA utility for signing, verification, encryption, and decryption. Superseded
233 by  L<pkeyutl(1)>.
234
235 =item B<s_client>
236
237 This implements a generic SSL/TLS client which can establish a transparent
238 connection to a remote server speaking SSL/TLS. It's intended for testing
239 purposes only and provides only rudimentary interface functionality but
240 internally uses mostly all functionality of the OpenSSL B<ssl> library.
241
242 =item B<s_server>
243
244 This implements a generic SSL/TLS server which accepts connections from remote
245 clients speaking SSL/TLS. It's intended for testing purposes only and provides
246 only rudimentary interface functionality but internally uses mostly all
247 functionality of the OpenSSL B<ssl> library.  It provides both an own command
248 line oriented protocol for testing SSL functions and a simple HTTP response
249 facility to emulate an SSL/TLS-aware webserver.
250
251 =item B<s_time>
252
253 SSL Connection Timer.
254
255 =item B<sess_id>
256
257 SSL Session Data Management.
258
259 =item B<smime>
260
261 S/MIME mail processing.
262
263 =item B<speed>
264
265 Algorithm Speed Measurement.
266
267 =item B<spkac>
268
269 SPKAC printing and generating utility.
270
271 =item B<srp>
272
273 Maintain SRP password file.
274
275 =item B<storeutl>
276
277 Utility to list and display certificates, keys, CRLs, etc.
278
279 =item B<ts>
280
281 Time Stamping Authority tool (client/server).
282
283 =item B<verify>
284
285 X.509 Certificate Verification.
286
287 =item B<version>
288
289 OpenSSL Version Information.
290
291 =item B<x509>
292
293 X.509 Certificate Data Management.
294
295 =back
296
297 =head2 Message Digest Commands
298
299 =over 4
300
301 =item B<blake2b512>
302
303 BLAKE2b-512 Digest
304
305 =item B<blake2s256>
306
307 BLAKE2s-256 Digest
308
309 =item B<md2>
310
311 MD2 Digest
312
313 =item B<md4>
314
315 MD4 Digest
316
317 =item B<md5>
318
319 MD5 Digest
320
321 =item B<mdc2>
322
323 MDC2 Digest
324
325 =item B<rmd160>
326
327 RMD-160 Digest
328
329 =item B<sha1>
330
331 SHA-1 Digest
332
333 =item B<sha224>
334
335 SHA-2 224 Digest
336
337 =item B<sha256>
338
339 SHA-2 256 Digest
340
341 =item B<sha384>
342
343 SHA-2 384 Digest
344
345 =item B<sha512>
346
347 SHA-2 512 Digest
348
349 =item B<sha3-224>
350
351 SHA-3 224 Digest
352
353 =item B<sha3-256>
354
355 SHA-3 256 Digest
356
357 =item B<sha3-384>
358
359 SHA-3 384 Digest
360
361 =item B<sha3-512>
362
363 SHA-3 512 Digest
364
365 =item B<shake128>
366
367 SHA-3 SHAKE128 Digest
368
369 =item B<shake256>
370
371 SHA-3 SHAKE256 Digest
372
373 =item B<sm3>
374
375 SM3 Digest
376
377 =back
378
379 =head2 Encoding and Cipher Commands
380
381 The following aliases provide convenient access to the most used encodings
382 and ciphers.
383
384 Depending on how OpenSSL was configured and built, not all ciphers listed
385 here may be present. See L<enc(1)> for more information and command usage.
386
387 =over 4
388
389 =item B<aes128>, B<aes-128-cbc>, B<aes-128-cfb>, B<aes-128-ctr>, B<aes-128-ecb>, B<aes-128-ofb>
390
391 AES-128 Cipher
392
393 =item B<aes192>, B<aes-192-cbc>, B<aes-192-cfb>, B<aes-192-ctr>, B<aes-192-ecb>, B<aes-192-ofb>
394
395 AES-192 Cipher
396
397 =item B<aes256>, B<aes-256-cbc>, B<aes-256-cfb>, B<aes-256-ctr>, B<aes-256-ecb>, B<aes-256-ofb>
398
399 AES-256 Cipher
400
401 =item B<aria128>, B<aria-128-cbc>, B<aria-128-cfb>, B<aria-128-ctr>, B<aria-128-ecb>, B<aria-128-ofb>
402
403 Aria-128 Cipher
404
405 =item B<aria192>, B<aria-192-cbc>, B<aria-192-cfb>, B<aria-192-ctr>, B<aria-192-ecb>, B<aria-192-ofb>
406
407 Aria-192 Cipher
408
409 =item B<aria256>, B<aria-256-cbc>, B<aria-256-cfb>, B<aria-256-ctr>, B<aria-256-ecb>, B<aria-256-ofb>
410
411 Aria-256 Cipher
412
413 =item B<base64>
414
415 Base64 Encoding
416
417 =item B<bf>, B<bf-cbc>, B<bf-cfb>, B<bf-ecb>, B<bf-ofb>
418
419 Blowfish Cipher
420
421 =item B<camellia128>, B<camellia-128-cbc>, B<camellia-128-cfb>, B<camellia-128-ctr>, B<camellia-128-ecb>, B<camellia-128-ofb>
422
423 Camellia-128 Cipher
424
425 =item B<camellia192>, B<camellia-192-cbc>, B<camellia-192-cfb>, B<camellia-192-ctr>, B<camellia-192-ecb>, B<camellia-192-ofb>
426
427 Camellia-192 Cipher
428
429 =item B<camellia256>, B<camellia-256-cbc>, B<camellia-256-cfb>, B<camellia-256-ctr>, B<camellia-256-ecb>, B<camellia-256-ofb>
430
431 Camellia-256 Cipher
432
433 =item B<cast>, B<cast-cbc>
434
435 CAST Cipher
436
437 =item B<cast5-cbc>, B<cast5-cfb>, B<cast5-ecb>, B<cast5-ofb>
438
439 CAST5 Cipher
440
441 =item B<chacha20>
442
443 Chacha20 Cipher
444
445 =item B<des>, B<des-cbc>, B<des-cfb>, B<des-ecb>, B<des-ede>, B<des-ede-cbc>, B<des-ede-cfb>, B<des-ede-ofb>, B<des-ofb>
446
447 DES Cipher
448
449 =item B<des3>, B<desx>, B<des-ede3>, B<des-ede3-cbc>, B<des-ede3-cfb>, B<des-ede3-ofb>
450
451 Triple-DES Cipher
452
453 =item B<idea>, B<idea-cbc>, B<idea-cfb>, B<idea-ecb>, B<idea-ofb>
454
455 IDEA Cipher
456
457 =item B<rc2>, B<rc2-cbc>, B<rc2-cfb>, B<rc2-ecb>, B<rc2-ofb>
458
459 RC2 Cipher
460
461 =item B<rc4>
462
463 RC4 Cipher
464
465 =item B<rc5>, B<rc5-cbc>, B<rc5-cfb>, B<rc5-ecb>, B<rc5-ofb>
466
467 RC5 Cipher
468
469 =item B<seed>, B<seed-cbc>, B<seed-cfb>, B<seed-ecb>, B<seed-ofb>
470
471 SEED Cipher
472
473 =item B<sm4>, B<sm4-cbc>, B<sm4-cfb>, B<sm4-ctr>, B<sm4-ecb>, B<sm4-ofb>
474
475 SM4 Cipher
476
477 =back
478
479 =head1 OPTIONS
480
481 Details of which options are available depend on the specific command.
482 This section describes some common options with common behavior.
483
484 =head2 Common Options
485
486 =over 4
487
488 =item B<-help>
489
490 Provides a terse summary of all options.
491
492 =back
493
494 =head2 Pass Phrase Options
495
496 Several commands accept password arguments, typically using B<-passin>
497 and B<-passout> for input and output passwords respectively. These allow
498 the password to be obtained from a variety of sources. Both of these
499 options take a single argument whose format is described below. If no
500 password argument is given and a password is required then the user is
501 prompted to enter one: this will typically be read from the current
502 terminal with echoing turned off.
503
504 Note that character encoding may be relevant, please see
505 L<passphrase-encoding(7)>.
506
507 =over 4
508
509 =item B<pass:password>
510
511 The actual password is B<password>. Since the password is visible
512 to utilities (like 'ps' under Unix) this form should only be used
513 where security is not important.
514
515 =item B<env:var>
516
517 Obtain the password from the environment variable B<var>. Since
518 the environment of other processes is visible on certain platforms
519 (e.g. ps under certain Unix OSes) this option should be used with caution.
520
521 =item B<file:pathname>
522
523 The first line of B<pathname> is the password. If the same B<pathname>
524 argument is supplied to B<-passin> and B<-passout> arguments then the first
525 line will be used for the input password and the next line for the output
526 password. B<pathname> need not refer to a regular file: it could for example
527 refer to a device or named pipe.
528
529 =item B<fd:number>
530
531 Read the password from the file descriptor B<number>. This can be used to
532 send the data via a pipe for example.
533
534 =item B<stdin>
535
536 Read the password from standard input.
537
538 =back
539
540 =head1 ENVIRONMENT
541
542 =over 4
543
544 =item B<OPENSSL_TRACE=>I<name,...>
545
546 Enable tracing output of OpenSSL library, by name.
547 This output will only make sense if you know OpenSSL internals well.
548 Also, it might not give you any output at all, depending on how
549 OpenSSL was built.
550
551 The value is a comma separated list of names, with the following
552 available:
553
554 =over 4
555
556 =item B<TRACE>
557
558 The tracing functionality.
559
560 =item B<TLS>
561
562 General SSL/TLS.
563
564 =item B<TLS_CIPHER>
565
566 SSL/TLS cipher.
567
568 =item B<ENGINE_CONF>
569
570 ENGINE configuration.
571
572 =item B<ENGINE_TABLE>
573
574 The function that is used by RSA, DSA (etc) code to select registered
575 ENGINEs, cache defaults and functional references (etc), will generate
576 debugging summaries.
577
578 =item B<ENGINE_REF_COUNT>
579
580 Reference counts in the ENGINE structure will be monitored with a line
581 of generated for each change.
582
583 =item B<PKCS5V2>
584
585 PKCS#5 v2 keygen.
586
587 =item B<PKCS12_KEYGEN>
588
589 PKCS#12 key generation.
590
591 =item B<PKCS12_DECRYPT>
592
593 PKCS#12 decryption.
594
595 =item B<X509V3_POLICY>
596
597 Generates the complete policy tree at various point during X.509 v3
598 policy evaluation.
599
600 =item B<BN_CTX>
601
602 BIGNUM context.
603
604 =back
605
606 =back
607
608 =head1 SEE ALSO
609
610 L<asn1parse(1)>, L<ca(1)>, L<ciphers(1)>, L<cms(1)>, L<config(5)>,
611 L<crl(1)>, L<crl2pkcs7(1)>, L<dgst(1)>,
612 L<dhparam(1)>, L<dsa(1)>, L<dsaparam(1)>,
613 L<ec(1)>, L<ecparam(1)>,
614 L<enc(1)>, L<engine(1)>, L<errstr(1)>, L<gendsa(1)>, L<genpkey(1)>,
615 L<genrsa(1)>, L<mac(1)>, L<nseq(1)>, L<ocsp(1)>,
616 L<passwd(1)>,
617 L<pkcs12(1)>, L<pkcs7(1)>, L<pkcs8(1)>,
618 L<pkey(1)>, L<pkeyparam(1)>, L<pkeyutl(1)>, L<prime(1)>,
619 L<rand(1)>, L<rehash(1)>, L<req(1)>, L<rsa(1)>,
620 L<rsautl(1)>, L<s_client(1)>,
621 L<s_server(1)>, L<s_time(1)>, L<sess_id(1)>,
622 L<smime(1)>, L<speed(1)>, L<spkac(1)>, L<srp(1)>, L<storeutl(1)>,
623 L<ts(1)>,
624 L<verify(1)>, L<version(1)>, L<x509(1)>,
625 L<crypto(7)>, L<ssl(7)>, L<x509v3_config(5)>
626
627 =head1 HISTORY
628
629 The B<list->I<XXX>B<-algorithms> pseudo-commands were added in OpenSSL 1.0.0;
630 For notes on the availability of other commands, see their individual
631 manual pages.
632
633 =head1 COPYRIGHT
634
635 Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved.
636
637 Licensed under the Apache License 2.0 (the "License").  You may not use
638 this file except in compliance with the License.  You can obtain a copy
639 in the file LICENSE in the source distribution or at
640 L<https://www.openssl.org/source/license.html>.
641
642 =cut