=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 10

=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<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<rand>|rand(1)>

Generate pseudo-random bytes.

=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<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 10

=item B<md2>

MD2 Digest

=item B<md5>

MD5 Digest

=item B<mdc2>

MDC2 Digest

=item B<rmd160>

RMD-160 Digest

=item B<sha>

SHA Digest

=item B<sha1>

SHA-1 Digest

=item B<sha224>

SHA-224 Digest

=item B<sha256>

SHA-256 Digest

=item B<sha384>

SHA-384 Digest

=item B<sha512>

SHA-512 Digest

=back

=head2 Encoding and Cipher Commands

=over 10

=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 10

=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.

=over 10

=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<config(5)>,
L<crl(1)>, L<crl2pkcs7(1)>, L<dgst(1)>,
L<dhparam(1)>, L<dsa(1)>, L<dsaparam(1)>,
L<enc(1)>, L<engine(1)>, L<gendsa(1)>, L<genpkey(1)>,
L<genrsa(1)>, L<nseq(1)>, L<openssl(1)>,
L<passwd(1)>,
L<pkcs12(1)>, L<pkcs7(1)>, L<pkcs8(1)>,
L<rand(1)>, L<req(1)>, L<rsa(1)>,
L<rsautl(1)>, L<s_client(1)>,
L<s_server(1)>, L<s_time(1)>,
L<smime(1)>, L<spkac(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-2016 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
