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