
=pod

=head1 NAME

openssl - OpenSSL command line tool

=head1 SYNOPSIS

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

B<openssl> [ B<list-standard-commands> | B<list-message-digest-commands> | B<list-cipher-commands> | B<list-cipher-algorithms> | B<list-message-digest-algorithms> | B<list-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 pseudo-commands B<list-standard-commands>, B<list-message-digest-commands>,
and B<list-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 pseudo-commands B<list-cipher-algorithms> and
B<list-message-digest-algorithms> list all cipher and message digest names, one entry per line. Aliases are listed as:

 from => to

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

The pseudo-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->I<...>B<-commands>, 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 (loadble 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. Superceded 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)|asn1parse(1)>, L<ca(1)|ca(1)>, L<config(5)|config(5)>,
L<crl(1)|crl(1)>, L<crl2pkcs7(1)|crl2pkcs7(1)>, L<dgst(1)|dgst(1)>,
L<dhparam(1)|dhparam(1)>, L<dsa(1)|dsa(1)>, L<dsaparam(1)|dsaparam(1)>,
L<enc(1)|enc(1)>, L<gendsa(1)|gendsa(1)>, L<genpkey(1)|genpkey(1)>,
L<genrsa(1)|genrsa(1)>, L<nseq(1)|nseq(1)>, L<openssl(1)|openssl(1)>,
L<passwd(1)|passwd(1)>,
L<pkcs12(1)|pkcs12(1)>, L<pkcs7(1)|pkcs7(1)>, L<pkcs8(1)|pkcs8(1)>,
L<rand(1)|rand(1)>, L<req(1)|req(1)>, L<rsa(1)|rsa(1)>,
L<rsautl(1)|rsautl(1)>, L<s_client(1)|s_client(1)>,
L<s_server(1)|s_server(1)>, L<s_time(1)|s_time(1)>,
L<smime(1)|smime(1)>, L<spkac(1)|spkac(1)>,
L<verify(1)|verify(1)>, L<version(1)|version(1)>, L<x509(1)|x509(1)>,
L<crypto(3)|crypto(3)>, L<ssl(3)|ssl(3)>, L<x509v3_config(5)|x509v3_config(5)> 

=head1 HISTORY

The openssl(1) document appeared in OpenSSL 0.9.2.
The B<list->I<XXX>B<-commands> pseudo-commands were added in OpenSSL 0.9.3;
The B<list->I<XXX>B<-algorithms> pseudo-commands were added in OpenSSL 1.0.0;
the B<no->I<XXX> pseudo-commands were added in OpenSSL 0.9.5a.
For notes on the availability of other commands, see their individual
manual pages.

=cut
