=pod

=head1 NAME

openssl - OpenSSL command line tool

=head1 SYNOPSIS

B<openssl>
I<command>
[ I<command_opts> ]
[ I<command_args> ]

B<openssl> B<list> [ B<standard-commands> | B<digest-commands> | B<cipher-commands> | B<cipher-algorithms> | B<digest-algorithms> | B<public-key-algorithms>]

B<openssl> B<no->I<XXX> [ I<arbitrary options> ]

=head1 DESCRIPTION

OpenSSL is a cryptography toolkit implementing the Secure Sockets Layer (SSL
v2/v3) and Transport Layer Security (TLS v1) network protocols and related
cryptography standards required by them.

The B<openssl> program is a command line tool for using the various
cryptography functions of OpenSSL's B<crypto> library from the shell.
It can be used for

 o  Creation and management of private keys, public keys and parameters
 o  Public key cryptographic operations
 o  Creation of X.509 certificates, CSRs and CRLs
 o  Calculation of Message Digests
 o  Encryption and Decryption with Ciphers
 o  SSL/TLS Client and Server Tests
 o  Handling of S/MIME signed or encrypted mail
 o  Time Stamp requests, generation and verification

=head1 COMMAND SUMMARY

The B<openssl> program provides a rich variety of commands (I<command> in the
SYNOPSIS above), each of which often has a wealth of options and arguments
(I<command_opts> and I<command_args> in the SYNOPSIS).

Many commands use an external configuration file for some or all of their
arguments and have a B<-config> option to specify that file.
The environment variable B<OPENSSL_CONF> can be used to specify
the location of the file.
If the environment variable is not specified, then the file is named
B<openssl.cnf> in the default certificate storage area, whose value
depends on the configuration flags specified when the OpenSSL
was built.

The list parameters B<standard-commands>, B<digest-commands>,
and B<cipher-commands> output a list (one entry per line) of the names
of all standard commands, message digest commands, or cipher commands,
respectively, that are available in the present B<openssl> utility.

The list parameters B<cipher-algorithms> and
B<digest-algorithms> list all cipher and message digest names, one entry per line. Aliases are listed as:

 from => to

The list parameter B<public-key-algorithms> lists all supported public
key algorithms.

The command B<no->I<XXX> tests whether a command of the
specified name is available.  If no command named I<XXX> exists, it
returns 0 (success) and prints B<no->I<XXX>; otherwise it returns 1
and prints I<XXX>.  In both cases, the output goes to B<stdout> and
nothing is printed to B<stderr>.  Additional command line arguments
are always ignored.  Since for each cipher there is a command of the
same name, this provides an easy way for shell scripts to test for the
availability of ciphers in the B<openssl> program.  (B<no->I<XXX> is
not able to detect pseudo-commands such as B<quit>,
B<list>, or B<no->I<XXX> itself.)

=head2 Standard Commands

=over 4

=item L<B<asn1parse>|asn1parse(1)>

Parse an ASN.1 sequence.

=item L<B<ca>|ca(1)>

Certificate Authority (CA) Management.

=item L<B<ciphers>|ciphers(1)>

Cipher Suite Description Determination.

=item L<B<cms>|cms(1)>

CMS (Cryptographic Message Syntax) utility.

=item L<B<crl>|crl(1)>

Certificate Revocation List (CRL) Management.

=item L<B<crl2pkcs7>|crl2pkcs7(1)>

CRL to PKCS#7 Conversion.

=item L<B<dgst>|dgst(1)>

Message Digest Calculation.

=item B<dh>

Diffie-Hellman Parameter Management.
Obsoleted by L<B<dhparam>|dhparam(1)>.

=item L<B<dhparam>|dhparam(1)>

Generation and Management of Diffie-Hellman Parameters. Superseded by
L<B<genpkey>|genpkey(1)> and L<B<pkeyparam>|pkeyparam(1)>.

=item L<B<dsa>|dsa(1)>

DSA Data Management.

=item L<B<dsaparam>|dsaparam(1)>

DSA Parameter Generation and Management. Superseded by
L<B<genpkey>|genpkey(1)> and L<B<pkeyparam>|pkeyparam(1)>.

=item L<B<ec>|ec(1)>

EC (Elliptic curve) key processing.

=item L<B<ecparam>|ecparam(1)>

EC parameter manipulation and generation.

=item L<B<enc>|enc(1)>

Encoding with Ciphers.

=item L<B<engine>|engine(1)>

Engine (loadable module) information and manipulation.

=item L<B<errstr>|errstr(1)>

Error Number to Error String Conversion.

=item B<gendh>

Generation of Diffie-Hellman Parameters.
Obsoleted by L<B<dhparam>|dhparam(1)>.

=item L<B<gendsa>|gendsa(1)>

Generation of DSA Private Key from Parameters. Superseded by
L<B<genpkey>|genpkey(1)> and L<B<pkey>|pkey(1)>.

=item L<B<genpkey>|genpkey(1)>

Generation of Private Key or Parameters.

=item L<B<genrsa>|genrsa(1)>

Generation of RSA Private Key. Superseded by L<B<genpkey>|genpkey(1)>.

=item L<B<nseq>|nseq(1)>

Create or examine a Netscape certificate sequence.

=item L<B<ocsp>|ocsp(1)>

Online Certificate Status Protocol utility.

=item L<B<passwd>|passwd(1)>

Generation of hashed passwords.

=item L<B<pkcs12>|pkcs12(1)>

PKCS#12 Data Management.

=item L<B<pkcs7>|pkcs7(1)>

PKCS#7 Data Management.

=item L<B<pkcs8>|pkcs8(1)>

PKCS#8 format private key conversion tool.

=item L<B<pkey>|pkey(1)>

Public and private key management.

=item L<B<pkeyparam>|pkeyparam(1)>

Public key algorithm parameter management.

=item L<B<pkeyutl>|pkeyutl(1)>

Public key algorithm cryptographic operation utility.

=item L<B<prime>|prime(1)>

Compute prime numbers.

=item L<B<rand>|rand(1)>

Generate pseudo-random bytes.

=item L<B<rehash>|rehash(1)>

Create symbolic links to certificate and CRL files named by the hash values.

=item L<B<req>|req(1)>

PKCS#10 X.509 Certificate Signing Request (CSR) Management.

=item L<B<rsa>|rsa(1)>

RSA key management.


=item L<B<rsautl>|rsautl(1)>

RSA utility for signing, verification, encryption, and decryption. Superseded
by  L<B<pkeyutl>|pkeyutl(1)>.

=item L<B<s_client>|s_client(1)>

This implements a generic SSL/TLS client which can establish a transparent
connection to a remote server speaking SSL/TLS. It's intended for testing
purposes only and provides only rudimentary interface functionality but
internally uses mostly all functionality of the OpenSSL B<ssl> library.

=item L<B<s_server>|s_server(1)>

This implements a generic SSL/TLS server which accepts connections from remote
clients speaking SSL/TLS. It's intended for testing purposes only and provides
only rudimentary interface functionality but internally uses mostly all
functionality of the OpenSSL B<ssl> library.  It provides both an own command
line oriented protocol for testing SSL functions and a simple HTTP response
facility to emulate an SSL/TLS-aware webserver.

=item L<B<s_time>|s_time(1)>

SSL Connection Timer.

=item L<B<sess_id>|sess_id(1)>

SSL Session Data Management.

=item L<B<smime>|smime(1)>

S/MIME mail processing.

=item L<B<speed>|speed(1)>

Algorithm Speed Measurement.

=item L<B<spkac>|spkac(1)>

SPKAC printing and generating utility.

=item L<B<srp>|srp(1)>

Maintain SRP password file.

=item L<B<storeutl>|storeutl(1)>

Utility to list and display certificates, keys, CRLs, etc.

=item L<B<ts>|ts(1)>

Time Stamping Authority tool (client/server).

=item L<B<verify>|verify(1)>

X.509 Certificate Verification.

=item L<B<version>|version(1)>

OpenSSL Version Information.

=item L<B<x509>|x509(1)>

X.509 Certificate Data Management.

=back

=head2 Message Digest Commands

=over 4

=item B<blake2b512>

BLAKE2b-512 Digest

=item B<blake2s256>

BLAKE2s-256 Digest

=item B<md2>

MD2 Digest

=item B<md4>

MD4 Digest

=item B<md5>

MD5 Digest

=item B<mdc2>

MDC2 Digest

=item B<rmd160>

RMD-160 Digest

=item B<sha1>

SHA-1 Digest

=item B<sha224>

SHA-2 224 Digest

=item B<sha256>

SHA-2 256 Digest

=item B<sha384>

SHA-2 384 Digest

=item B<sha512>

SHA-2 512 Digest

=item B<sha3-224>

SHA-3 224 Digest

=item B<sha3-256>

SHA-3 256 Digest

=item B<sha3-384>

SHA-3 384 Digest

=item B<sha3-512>

SHA-3 512 Digest

=item B<shake128>

SHA-3 SHAKE128 Digest

=item B<shake256>

SHA-3 SHAKE256 Digest

=item B<sm3>

SM3 Digest

=back

=head2 Encoding and Cipher Commands

=over 4

=item B<base64>

Base64 Encoding

=item B<bf bf-cbc bf-cfb bf-ecb bf-ofb>

Blowfish Cipher

=item B<cast cast-cbc>

CAST Cipher

=item B<cast5-cbc cast5-cfb cast5-ecb cast5-ofb>

CAST5 Cipher

=item B<des des-cbc des-cfb des-ecb des-ede des-ede-cbc des-ede-cfb des-ede-ofb des-ofb>

DES Cipher

=item B<des3 desx des-ede3 des-ede3-cbc des-ede3-cfb des-ede3-ofb>

Triple-DES Cipher

=item B<idea idea-cbc idea-cfb idea-ecb idea-ofb>

IDEA Cipher

=item B<rc2 rc2-cbc rc2-cfb rc2-ecb rc2-ofb>

RC2 Cipher

=item B<rc4>

RC4 Cipher

=item B<rc5 rc5-cbc rc5-cfb rc5-ecb rc5-ofb>

RC5 Cipher

=back

=head1 OPTIONS

Details of which options are available depend on the specific command.
This section describes some common options with common behavior.

=head2 Common Options

=over 4

=item B<-help>

Provides a terse summary of all options.

=back

=head2 Pass Phrase Options

Several commands accept password arguments, typically using B<-passin>
and B<-passout> for input and output passwords respectively. These allow
the password to be obtained from a variety of sources. Both of these
options take a single argument whose format is described below. If no
password argument is given and a password is required then the user is
prompted to enter one: this will typically be read from the current
terminal with echoing turned off.

Note that character encoding may be relevant, please see
L<passphrase-encoding(7)>.

=over 4

=item B<pass:password>

The actual password is B<password>. Since the password is visible
to utilities (like 'ps' under Unix) this form should only be used
where security is not important.

=item B<env:var>

Obtain the password from the environment variable B<var>. Since
the environment of other processes is visible on certain platforms
(e.g. ps under certain Unix OSes) this option should be used with caution.

=item B<file:pathname>

The first line of B<pathname> is the password. If the same B<pathname>
argument is supplied to B<-passin> and B<-passout> arguments then the first
line will be used for the input password and the next line for the output
password. B<pathname> need not refer to a regular file: it could for example
refer to a device or named pipe.

=item B<fd:number>

Read the password from the file descriptor B<number>. This can be used to
send the data via a pipe for example.

=item B<stdin>

Read the password from standard input.

=back

=head1 SEE ALSO

L<asn1parse(1)>, L<ca(1)>, L<ciphers(1)>, L<cms(1)>, L<config(5)>,
L<crl(1)>, L<crl2pkcs7(1)>, L<dgst(1)>,
L<dhparam(1)>, L<dsa(1)>, L<dsaparam(1)>,
L<ec(1)>, L<ecparam(1)>,
L<enc(1)>, L<engine(1)>, L<errstr(1)>, L<gendsa(1)>, L<genpkey(1)>,
L<genrsa(1)>, L<nseq(1)>, L<ocsp(1)>,
L<passwd(1)>,
L<pkcs12(1)>, L<pkcs7(1)>, L<pkcs8(1)>,
L<pkey(1)>, L<pkeyparam(1)>, L<pkeyutl(1)>, L<prime(1)>,
L<rand(1)>, L<rehash(1)>, L<req(1)>, L<rsa(1)>,
L<rsautl(1)>, L<s_client(1)>,
L<s_server(1)>, L<s_time(1)>, L<sess_id(1)>,
L<smime(1)>, L<speed(1)>, L<spkac(1)>, L<srp(1)>, L<storeutl(1)>,
L<ts(1)>,
L<verify(1)>, L<version(1)>, L<x509(1)>,
L<crypto(7)>, L<ssl(7)>, L<x509v3_config(5)>

=head1 HISTORY

The B<list->I<XXX>B<-algorithms> pseudo-commands were added in OpenSSL 1.0.0;
For notes on the availability of other commands, see their individual
manual pages.

=head1 COPYRIGHT

Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License").  You may not use
this file except in compliance with the License.  You can obtain a copy
in the file LICENSE in the source distribution or at
L<https://www.openssl.org/source/license.html>.

=cut
