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

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 PASS PHRASE ARGUMENTS

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(3)>, L<ssl(3)>, 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
