Very preliminary POD format documentation for some
of the openssl utility commands...
This commit is contained in:
parent
0d9cfe1ae7
commit
aba3e65f2c
3
CHANGES
3
CHANGES
@ -4,6 +4,9 @@
|
|||||||
|
|
||||||
Changes between 0.9.4 and 0.9.5 [xx XXX 1999]
|
Changes between 0.9.4 and 0.9.5 [xx XXX 1999]
|
||||||
|
|
||||||
|
*) Add a few manpages for some of the openssl commands.
|
||||||
|
[Steve Henson]
|
||||||
|
|
||||||
*) Fix the -revoke option in ca. It was freeing up memory twice,
|
*) Fix the -revoke option in ca. It was freeing up memory twice,
|
||||||
leaking and not finding already revoked certificates.
|
leaking and not finding already revoked certificates.
|
||||||
[Steve Henson]
|
[Steve Henson]
|
||||||
|
11
doc/man/README
Normal file
11
doc/man/README
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
This is *very* preliminiary documentation for some
|
||||||
|
of the main commands in the openssl utility. The
|
||||||
|
information reflects the way the commands may work
|
||||||
|
when OpenSSL 0.9.5 is released. They are subject
|
||||||
|
to change though.
|
||||||
|
|
||||||
|
The stuff is in POD format and has just been tested
|
||||||
|
with pod2man where is looks passable. It may well
|
||||||
|
look odd in html or other formats. Feel free to tidy
|
||||||
|
up, reformat or convert to a completely different
|
||||||
|
format if so desired...
|
129
doc/man/asn1parse.pod
Normal file
129
doc/man/asn1parse.pod
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
=pod
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
asn1parse - ASN.1 parsing tool
|
||||||
|
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
=item B<openssl> B<asn1parse>
|
||||||
|
[B<-inform PEM|DER>]
|
||||||
|
[B<-in filename>]
|
||||||
|
[B<-out filename>]
|
||||||
|
[B<-noout>]
|
||||||
|
[B<-offset number>]
|
||||||
|
[B<-length number>]
|
||||||
|
[B<-i>]
|
||||||
|
[B<-oid filename>]
|
||||||
|
[B<-strparse offset>]
|
||||||
|
|
||||||
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
The B<asn1parse> command is a diagnostic utility that can parse ASN.1
|
||||||
|
structures. It can also be used to extract data from ASN.1 formatted data.
|
||||||
|
|
||||||
|
=head1 OPTIONS
|
||||||
|
|
||||||
|
=over 4
|
||||||
|
|
||||||
|
=item B<-inform> B<DER|PEM>
|
||||||
|
|
||||||
|
the input format. B<DER> is binary format and B<PEM> (the default) is base64
|
||||||
|
encoded.
|
||||||
|
|
||||||
|
=item B<-in filename>
|
||||||
|
|
||||||
|
the input file, default is standard input
|
||||||
|
|
||||||
|
=item B<-out filename>
|
||||||
|
|
||||||
|
output file to place the DER encoded data into. If this
|
||||||
|
option is not present then no data will be output. This is most useful when
|
||||||
|
combined with the B<-strparse> option.
|
||||||
|
|
||||||
|
=item B<-noout>
|
||||||
|
|
||||||
|
don't ouput the parsed version of the input file.
|
||||||
|
|
||||||
|
=item B<-offset number>
|
||||||
|
|
||||||
|
starting offset to begin parsing, default is start of file.
|
||||||
|
|
||||||
|
=item B<-length number>
|
||||||
|
|
||||||
|
number of bytes to parse, default is until end of file.
|
||||||
|
|
||||||
|
=item B<-i>
|
||||||
|
|
||||||
|
indents the output according to the "depth" of the structures.
|
||||||
|
|
||||||
|
=item B<-oid filename>
|
||||||
|
|
||||||
|
a file containing additional OBJECT IDENTIFIERs (OIDs). The format of this
|
||||||
|
file is described in the NOTES section below.
|
||||||
|
|
||||||
|
=item B<-strparse offset>
|
||||||
|
|
||||||
|
parse the contents octets of the ASN.1 object starting at B<offset>. This
|
||||||
|
option can be used multiple times to "drill down" into a nested structure.
|
||||||
|
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head2 OUTPUT
|
||||||
|
|
||||||
|
The output will typically contain lines like this:
|
||||||
|
|
||||||
|
0:d=0 hl=4 l= 681 cons: SEQUENCE
|
||||||
|
|
||||||
|
.....
|
||||||
|
|
||||||
|
229:d=3 hl=3 l= 141 prim: BIT STRING
|
||||||
|
373:d=2 hl=3 l= 162 cons: cont [ 3 ]
|
||||||
|
376:d=3 hl=3 l= 159 cons: SEQUENCE
|
||||||
|
379:d=4 hl=2 l= 29 cons: SEQUENCE
|
||||||
|
381:d=5 hl=2 l= 3 prim: OBJECT :X509v3 Subject Key Identifier
|
||||||
|
386:d=5 hl=2 l= 22 prim: OCTET STRING
|
||||||
|
410:d=4 hl=2 l= 112 cons: SEQUENCE
|
||||||
|
412:d=5 hl=2 l= 3 prim: OBJECT :X509v3 Authority Key Identifier
|
||||||
|
417:d=5 hl=2 l= 105 prim: OCTET STRING
|
||||||
|
524:d=4 hl=2 l= 12 cons: SEQUENCE
|
||||||
|
|
||||||
|
.....
|
||||||
|
|
||||||
|
This example is part of a self signed certificate. Each line starts with the
|
||||||
|
offset in decimal. B<d=XX> specifies the current depth. The depth is increased
|
||||||
|
within the scope of any SET or SEQUENCE. B<hl=XX> gives the header length
|
||||||
|
(tag and length octets) of the current type. B<l=XX> gives the length of
|
||||||
|
the contents octets.
|
||||||
|
|
||||||
|
The B<-i> option can be used to make the output more readable.
|
||||||
|
|
||||||
|
Some knowledge of the ASN.1 structure is needed to interpret the output.
|
||||||
|
|
||||||
|
In this example the BIT STRING at offset 229 is the certificate public key.
|
||||||
|
The contents octets of this will contain the public key information. This can
|
||||||
|
be examined using the option B<-strparse 229> to yield:
|
||||||
|
|
||||||
|
0:d=0 hl=3 l= 137 cons: SEQUENCE
|
||||||
|
3:d=1 hl=3 l= 129 prim: INTEGER :E5D21E1F5C8D208EA7A2166C7FAF9F6BDF2059669C60876DDB70840F1A5AAFA59699FE471F379F1DD6A487E7D5409AB6A88D4A9746E24B91D8CF55DB3521015460C8EDE44EE8A4189F7A7BE77D6CD3A9AF2696F486855CF58BF0EDF2B4068058C7A947F52548DDF7E15E96B385F86422BEA9064A3EE9E1158A56E4A6F47E5897
|
||||||
|
135:d=1 hl=2 l= 3 prim: INTEGER :010001
|
||||||
|
|
||||||
|
=head1 NOTES
|
||||||
|
|
||||||
|
If an OID is not part of OpenSSL's internal table it will be represented in
|
||||||
|
numerical form (for example 1.2.3.4). The file passed to the B<-oid> option
|
||||||
|
allows additional OIDs to be included. Each line consists of three columns,
|
||||||
|
the first column is the OID in numerical format and should be followed by white
|
||||||
|
space. The second column is the "short name" which is a single word followed
|
||||||
|
by white space. The final column is the rest of the line and is the
|
||||||
|
"long name". B<asn1parse> displays the long name. Example:
|
||||||
|
|
||||||
|
C<1.2.3.4 shortName A long name>
|
||||||
|
|
||||||
|
=head1 BUGS
|
||||||
|
|
||||||
|
There should be options to change the format of input lines. The output of some
|
||||||
|
ASN.1 types is not well handled (if at all).
|
||||||
|
|
||||||
|
=cut
|
456
doc/man/ca.pod
Normal file
456
doc/man/ca.pod
Normal file
@ -0,0 +1,456 @@
|
|||||||
|
|
||||||
|
=pod
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
ca - sample minimal CA application
|
||||||
|
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
B<openssl> B<ca>
|
||||||
|
[B<-verbose>]
|
||||||
|
[B<-config filename>]
|
||||||
|
[B<-name section>]
|
||||||
|
[B<-gencrl>]
|
||||||
|
[B<-revoke file>]
|
||||||
|
[B<-crldays days>]
|
||||||
|
[B<-crlhours hours>]
|
||||||
|
[B<-crlexts section>]
|
||||||
|
[B<-startdate date>]
|
||||||
|
[B<-enddate date>]
|
||||||
|
[B<-days arg>]
|
||||||
|
[B<-md arg>]
|
||||||
|
[B<-policy arg>]
|
||||||
|
[B<-keyfile arg>]
|
||||||
|
[B<-key arg>]
|
||||||
|
[B<-cert file>]
|
||||||
|
[B<-in file>]
|
||||||
|
[B<-out file>]
|
||||||
|
[B<-outdir dir>]
|
||||||
|
[B<-infiles>]
|
||||||
|
[B<-spkac file>]
|
||||||
|
[B<-ss_cert file>]
|
||||||
|
[B<-preserveDN>]
|
||||||
|
[B<-batch>]
|
||||||
|
[B<-msie_hack>]
|
||||||
|
[B<-extensions section>]
|
||||||
|
|
||||||
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
The B<ca> command is a minimal CA application. It can be used
|
||||||
|
to sign certificate requests in a variety of forms and generate
|
||||||
|
CRLs it also maintains a text database of issued certificates
|
||||||
|
and their status.
|
||||||
|
|
||||||
|
The options descriptions will be divided into each purpose.
|
||||||
|
|
||||||
|
=head1 CA OPTIONS
|
||||||
|
|
||||||
|
=over 4
|
||||||
|
|
||||||
|
=item B<-config filename>
|
||||||
|
|
||||||
|
specifies the configuration file to use.
|
||||||
|
|
||||||
|
=item B<-in filename>
|
||||||
|
|
||||||
|
an input filename containing a single certificate request to be
|
||||||
|
signed by the CA.
|
||||||
|
|
||||||
|
=item B<-ss_cert filename>
|
||||||
|
|
||||||
|
a single self signed certificate to be signed by the CA.
|
||||||
|
|
||||||
|
=item B<-spkac filename>
|
||||||
|
|
||||||
|
a file containing a single Netscape signed public key and challenge
|
||||||
|
and additional field values to be signed by the CA. See the B<NOTES>
|
||||||
|
section for information on the required format.
|
||||||
|
|
||||||
|
=item B<-infiles>
|
||||||
|
|
||||||
|
if present this should be the last option, all subsequent arguments
|
||||||
|
are assumed to the the names of files containing certificate requests.
|
||||||
|
|
||||||
|
=item B<-out filename>
|
||||||
|
|
||||||
|
the output file to output certificates to. The default is standard
|
||||||
|
output. The certificate details will also be printed out to this
|
||||||
|
file.
|
||||||
|
|
||||||
|
=item B<-outdir directory>
|
||||||
|
|
||||||
|
the directory to output certificates to. The certificate will be
|
||||||
|
written to a filename consisting of the serial number in hex with
|
||||||
|
".pem" appended.
|
||||||
|
|
||||||
|
=item B<-cert>
|
||||||
|
|
||||||
|
the CA certificate file.
|
||||||
|
|
||||||
|
=item B<-keyfile filename>
|
||||||
|
|
||||||
|
the private key to sign requests with.
|
||||||
|
|
||||||
|
=item B<-key password>
|
||||||
|
|
||||||
|
the password used to encrrypt the private key. Since on some
|
||||||
|
systems the command line arguments are visible (e.g. Unix with
|
||||||
|
the 'ps' utility) this option should be used with caution.
|
||||||
|
|
||||||
|
=item B<-verbose>
|
||||||
|
|
||||||
|
this prints extra details about the operations being performed.
|
||||||
|
|
||||||
|
=item B<-startdate date>
|
||||||
|
|
||||||
|
this allows the start date to be explicitly set. The format of the
|
||||||
|
date is YYMMDDHHMMSSZ (the same as an ASN1 UTCTime structure).
|
||||||
|
|
||||||
|
=item B<-enddate date>
|
||||||
|
|
||||||
|
this allows the expiry date to be explicitly set. The format of the
|
||||||
|
date is YYMMDDHHMMSSZ (the same as an ASN1 UTCTime structure).
|
||||||
|
|
||||||
|
=item B<-days arg>
|
||||||
|
|
||||||
|
the number of days to certify the certificate for.
|
||||||
|
|
||||||
|
=item B<-md alg>
|
||||||
|
|
||||||
|
the message digest to use. Possible values include md5, sha1 and mdc2.
|
||||||
|
This option also applies to CRLs.
|
||||||
|
|
||||||
|
=item B<-policy arg>
|
||||||
|
|
||||||
|
this option defines the CA "policy" to use. This is a section in
|
||||||
|
the configuration file which decides which fields should be mandatory
|
||||||
|
or match the CA certificate. Check out the B<POLICY FORMAT> section
|
||||||
|
for more information.
|
||||||
|
|
||||||
|
=item B<-msie_hack>
|
||||||
|
|
||||||
|
this is a legacy option for compatability with very old versions of
|
||||||
|
the IE certificate enrollment control "certenr3". It used UniversalStrings
|
||||||
|
for almost everything. Since the old control has various security bugs
|
||||||
|
its use is strongly discouraged. The newer control "Xenroll" does not
|
||||||
|
need this option.
|
||||||
|
|
||||||
|
=item B<-preserveDN>
|
||||||
|
|
||||||
|
this option is also for compatability with the older IE enrollment
|
||||||
|
control. It only accepts certificates if their DNs match the
|
||||||
|
order of the request. This is not needed for Xenroll.
|
||||||
|
|
||||||
|
=item B<-batch>
|
||||||
|
|
||||||
|
this sets the batch mode. In this mode no questions will be asked
|
||||||
|
and all certificates will be certified automatically.
|
||||||
|
|
||||||
|
=item B<-extensions section>
|
||||||
|
|
||||||
|
the section of the configuration file containing certificate extensions
|
||||||
|
to be added when a certificate is issued. If no extension section is
|
||||||
|
present then a V1 certificate is created. If the extension section
|
||||||
|
is present (even if it is empty) then a V3 certificate is created.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head1 CRL OPTIONS
|
||||||
|
|
||||||
|
=over 4
|
||||||
|
|
||||||
|
=item B<-gencrl>
|
||||||
|
|
||||||
|
this option generates a CRL based on information in the index file.
|
||||||
|
|
||||||
|
=item B<-crldays num>
|
||||||
|
|
||||||
|
the number of days before the next CRL is due. That is the days from
|
||||||
|
now to place in the CRL nextUpdate field.
|
||||||
|
|
||||||
|
=item B<-crlhours num>
|
||||||
|
|
||||||
|
the number of hours before the next CRL is due.
|
||||||
|
|
||||||
|
=item B<-revoke filename>
|
||||||
|
|
||||||
|
a filename containing a certificate to revoke.
|
||||||
|
|
||||||
|
=item B<-crlexts section>
|
||||||
|
|
||||||
|
the section of the configuration file containing CRL extensions to
|
||||||
|
include. If no CRL extension section is present then a V1 CRL is
|
||||||
|
created, if the CRL extension section is present (even if it is
|
||||||
|
empty) then a V2 CRL is created. The CRL extensions specified are
|
||||||
|
CRL extensions and B<not> CRL entry extensions. It should be noted
|
||||||
|
that some software (for example Netscape) can't handle V2 CRLs.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head1 CONFIGURATION FILE OPTIONS
|
||||||
|
|
||||||
|
The options for B<ca> are contained in the B<ca> section of the
|
||||||
|
configuration file. Many of these are identical to command line
|
||||||
|
options. Where the option is present in the configuration file
|
||||||
|
and the command line the command line value is used. Where an
|
||||||
|
option is described as mandatory then it must be present in
|
||||||
|
the configuration file or the command line equivalent (if
|
||||||
|
any) used.
|
||||||
|
|
||||||
|
=over 4
|
||||||
|
|
||||||
|
=item B<new_certs_dir>
|
||||||
|
|
||||||
|
the same as the B<-outdir> command line option. It specifies
|
||||||
|
the directory where new certificates will be placed. Mandatory.
|
||||||
|
|
||||||
|
=item B<certificate>
|
||||||
|
|
||||||
|
the same as B<-cert>. It gives the file containing the CA
|
||||||
|
certificate. Mandatory.
|
||||||
|
|
||||||
|
=item B<private_key>
|
||||||
|
|
||||||
|
same as the B<-keyfile> option. The file containing the
|
||||||
|
CA private key. Mandatory.
|
||||||
|
|
||||||
|
=item B<RANDFILE>
|
||||||
|
|
||||||
|
a file used to read and write random number seed information.
|
||||||
|
|
||||||
|
=item B<default_days>
|
||||||
|
|
||||||
|
the same as the B<-days> option. The number of days to certify
|
||||||
|
a certificate for.
|
||||||
|
|
||||||
|
=item B<default_startdate>
|
||||||
|
|
||||||
|
the same as the B<-startdate> option. The start date to certify
|
||||||
|
a certificate for. If not set the current time is used.
|
||||||
|
|
||||||
|
=item B<default_enddate>
|
||||||
|
|
||||||
|
the same as the B<-enddate> option. Either this option or
|
||||||
|
B<default_days> (or the command line equivalents) must be
|
||||||
|
present.
|
||||||
|
|
||||||
|
=item B<default_crl_hours default_crl_days>
|
||||||
|
|
||||||
|
the same as the B<-crlhours> and the B<-crldays> options. These
|
||||||
|
will only be used if neither command line option is present. At
|
||||||
|
least one of these must be present to generate a CRL.
|
||||||
|
|
||||||
|
=item B<default_md>
|
||||||
|
|
||||||
|
the same as the B<-md> option. The message digest to use. Mandatory.
|
||||||
|
|
||||||
|
=item B<database>
|
||||||
|
|
||||||
|
the text database file to use. Mandatory. This file must be present
|
||||||
|
though initially it will be empty.
|
||||||
|
|
||||||
|
=item B<serialfile>
|
||||||
|
|
||||||
|
a text file containing the next serial number to use in hex. Mandatory.
|
||||||
|
This file must be present and contain a valid serial number.
|
||||||
|
|
||||||
|
=item B<x509_extensions>
|
||||||
|
|
||||||
|
the same as B<-extensions>.
|
||||||
|
|
||||||
|
=item B<crl_extensions>
|
||||||
|
|
||||||
|
the same as B<-crlexts>.
|
||||||
|
|
||||||
|
=item B<preserve>
|
||||||
|
|
||||||
|
the same as B<-preserveDN>
|
||||||
|
|
||||||
|
=item B<msie_hack>
|
||||||
|
|
||||||
|
the same as B<-msie_hack>
|
||||||
|
|
||||||
|
=item B<policy>
|
||||||
|
|
||||||
|
the same as B<-policy>. Mandatory. See the B<POLICY FORMAT> section
|
||||||
|
for more information.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head1 POLICY FORMAT
|
||||||
|
|
||||||
|
The policy section consists of a set of variables corresponding to
|
||||||
|
certificate DN fields. If the value is "match" then the field value
|
||||||
|
must match the same field in the CA certificate. If the value is
|
||||||
|
"supplied" then it must be present. If the value is "optional" then
|
||||||
|
it may be present. Any fields not mentioned in the policy section
|
||||||
|
are silently deleted, unless the B<-preserveDN> option is set but
|
||||||
|
this can be regarded more of a quirk than intended behaviour.
|
||||||
|
|
||||||
|
=head1 SPKAC FORMAT
|
||||||
|
|
||||||
|
The input to the B<-spkac> command line option is a Netscape
|
||||||
|
signed public key and challenge. This will usually come from
|
||||||
|
the B<KEYGEN> tag in an HTML form to create a new private key.
|
||||||
|
It is however possible to create SPKACs using the B<spkac> utility.
|
||||||
|
|
||||||
|
The file should contain the variable SPKAC set to the value of
|
||||||
|
the SPKAC and also the required DN components as name value pairs.
|
||||||
|
If you need to include the same component twice then it can be
|
||||||
|
preceded by a number and a '.'.
|
||||||
|
|
||||||
|
=head1 EXAMPLES
|
||||||
|
|
||||||
|
Note: these examples assume that the B<ca> directory structure is
|
||||||
|
already set up and the relevant files already exist. This usually
|
||||||
|
involves creating a CA certificate and private key with B<req>, a
|
||||||
|
serial number file and an empty index file and placing them in
|
||||||
|
the relevant directories.
|
||||||
|
|
||||||
|
To use the sample configuration file below the directories demoCA,
|
||||||
|
demoCA/private and demoCA/newcerts would be created. The CA
|
||||||
|
certificate would be copied to demoCA/cacert.pem and its private
|
||||||
|
key to demoCA/private/cakey.pem. A file demoCA/serial would be
|
||||||
|
created containing for example "01" and the empty index file
|
||||||
|
demoCA/index.txt.
|
||||||
|
|
||||||
|
|
||||||
|
Sign a certificate request:
|
||||||
|
|
||||||
|
openssl ca -in req.pem -out newcert.pem
|
||||||
|
|
||||||
|
Generate a CRL
|
||||||
|
|
||||||
|
openssl ca -gencrl -out crl.pem
|
||||||
|
|
||||||
|
Sign several requests:
|
||||||
|
|
||||||
|
openssl ca -infiles req1.pem req2.pem req3.pem
|
||||||
|
|
||||||
|
Certify a Netscape SPKAC:
|
||||||
|
|
||||||
|
openssl ca -spkac spkac.txt
|
||||||
|
|
||||||
|
A sample SPKAC file (the SPKAC line has been truncated for clarity):
|
||||||
|
|
||||||
|
SPKAC=MIG0MGAwXDANBgkqhkiG9w0BAQEFAANLADBIAkEAn7PDhCeV/xIxUg8V70YRxK2A5
|
||||||
|
CN=Steve Test
|
||||||
|
emailAddress=steve@openssl.org
|
||||||
|
0.OU=OpenSSL Group
|
||||||
|
1.OU=Another Group
|
||||||
|
|
||||||
|
A sample configuration file with the relevant sections for B<ca>:
|
||||||
|
|
||||||
|
[ ca ]
|
||||||
|
default_ca = CA_default # The default ca section
|
||||||
|
|
||||||
|
[ CA_default ]
|
||||||
|
|
||||||
|
dir = ./demoCA # top dir
|
||||||
|
database = $dir/index.txt # index file.
|
||||||
|
new_certs_dir = $dir/newcerts # new certs dir
|
||||||
|
|
||||||
|
certificate = $dir/cacert.pem # The CA cert
|
||||||
|
serial = $dir/serial # serial no file
|
||||||
|
private_key = $dir/private/cakey.pem# CA private key
|
||||||
|
RANDFILE = $dir/private/.rand # random number file
|
||||||
|
|
||||||
|
default_days = 365 # how long to certify for
|
||||||
|
default_crl_days= 30 # how long before next CRL
|
||||||
|
default_md = md5 # md to use
|
||||||
|
|
||||||
|
policy = policy_any # default policy
|
||||||
|
|
||||||
|
[ policy_any ]
|
||||||
|
countryName = supplied
|
||||||
|
stateOrProvinceName = optional
|
||||||
|
organizationName = optional
|
||||||
|
organizationalUnitName = optional
|
||||||
|
commonName = supplied
|
||||||
|
emailAddress = optional
|
||||||
|
|
||||||
|
=head1 WARNINGS
|
||||||
|
|
||||||
|
The B<ca> command is quirky and at times downright unfriendly.
|
||||||
|
|
||||||
|
The B<ca> utility was originally meant as an example of how to do things
|
||||||
|
in a CA. It was not supposed be be used as a full blown CA itself:
|
||||||
|
nevertheless some people are using it for this purpose.
|
||||||
|
|
||||||
|
The B<ca> command is effectively a single user command: no locking is
|
||||||
|
done on the various files and attempts to run more than one B<ca> command
|
||||||
|
on the same database can have unpredictable results.
|
||||||
|
|
||||||
|
=head1 FILES
|
||||||
|
|
||||||
|
Note: the location of all files can change either by compile time options,
|
||||||
|
configration file entries, environment variables or command line options.
|
||||||
|
The values below reflect the default values.
|
||||||
|
|
||||||
|
/usr/local/ssl/lib/openssl.cnf - master configuration file
|
||||||
|
./demoCA - main CA directory
|
||||||
|
./demoCA/cacert.pem - CA certificate
|
||||||
|
./demoCA/private/cakey.pem - CA private key
|
||||||
|
./demoCA/serial - CA serial number file
|
||||||
|
./demoCA/serial.old - CA serial number backup file
|
||||||
|
./demoCA/index.txt - CA text database file
|
||||||
|
./demoCA/index.txt.old - CA text database backup file
|
||||||
|
./demoCA/certs - certificate output file
|
||||||
|
./demoCA/.rnd - CA random seed information
|
||||||
|
|
||||||
|
=head1 ENVIRONMENT VARIABLES
|
||||||
|
|
||||||
|
B<OPENSSL_CONF> reflects the location of master configuration file it can
|
||||||
|
be overridden by the B<-config> command line option.
|
||||||
|
|
||||||
|
=head1 RESTRICTIONS
|
||||||
|
|
||||||
|
The text database index file is a critical part of the process and
|
||||||
|
if corrupted it can be difficult to fix. It is theoretically possible
|
||||||
|
to rebuild the index file from all the issued certificates and a current
|
||||||
|
CRL: however there is no option to do this.
|
||||||
|
|
||||||
|
CRL entry extensions cannot currently be created: only CRL extensions
|
||||||
|
can be added.
|
||||||
|
|
||||||
|
V2 CRL features like delta CRL support and CRL numbers are not currently
|
||||||
|
supported.
|
||||||
|
|
||||||
|
Although several requests can be input and handled at once it is only
|
||||||
|
possible to include one SPKAC or self signed certificate.
|
||||||
|
|
||||||
|
=head1 BUGS
|
||||||
|
|
||||||
|
The use of an in memory text database can cause problems when large
|
||||||
|
numbers of certificates are present because, as the name implies
|
||||||
|
the database has to be kept in memory.
|
||||||
|
|
||||||
|
Certificate request extensions are ignored: some kind of "policy" should
|
||||||
|
be included to use certain static extensions and certain extensions
|
||||||
|
from the request.
|
||||||
|
|
||||||
|
It is not possible to certify two certificates with the same DN: this
|
||||||
|
is a side effect of how the text database is indexed and it cannot easily
|
||||||
|
be fixed without introducing other problems. Netscape apparently can use
|
||||||
|
two certificates with the same DN for separate signing and encryption
|
||||||
|
keys.
|
||||||
|
|
||||||
|
The B<ca> command really needs rewriting or the required functionality
|
||||||
|
exposed at either a command or interface level so a more friendly utility
|
||||||
|
(perl script or GUI) can handle things properly. The scripts B<CA.sh> and
|
||||||
|
B<CA.pl> help a little but not very much.
|
||||||
|
|
||||||
|
Any fields in a request that are not present in a policy are silently
|
||||||
|
deleted. This does not happen if the B<-preserveDN> option is used but
|
||||||
|
the extra fields are not displayed when the user is asked to certify
|
||||||
|
a request. The behaviour should be more friendly and configurable.
|
||||||
|
|
||||||
|
Cancelling some commands by refusing to certify a certificate can
|
||||||
|
create an empty file.
|
||||||
|
|
||||||
|
=head1 SEE ALSO
|
||||||
|
|
||||||
|
req(1), spkac(1), x509(1), CA.pl(1), config(5)
|
||||||
|
|
||||||
|
=cut
|
138
doc/man/config.pod
Normal file
138
doc/man/config.pod
Normal file
@ -0,0 +1,138 @@
|
|||||||
|
|
||||||
|
=pod
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
config - OpenSSL CONF library configuaration files
|
||||||
|
|
||||||
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
The OpenSSL CONF library can be used to read confiuration files.
|
||||||
|
It is used for the OpenSSL master configuration file B<openssl.cnf>
|
||||||
|
and in a few other places like B<SPKAC> files and certificate extension
|
||||||
|
files for the B<x509> utility.
|
||||||
|
|
||||||
|
A configuration file is divided into a number of sections. Each section
|
||||||
|
starts with a line B<[ section_name ]> and ends when a new section is
|
||||||
|
started or end of file is reached. A section name can consist of
|
||||||
|
alphanumeric characters and underscores.
|
||||||
|
|
||||||
|
The first section of a configuration file is special and is referred
|
||||||
|
to as the B<default> section this is usually unnamed and is from the
|
||||||
|
start of file until the first named section. When a name is being looked up
|
||||||
|
it is first looked up in a named section (if any) and then the
|
||||||
|
default section.
|
||||||
|
|
||||||
|
The environment is mapped onto a section called B<ENV>.
|
||||||
|
|
||||||
|
Comments can be included by preceding them with the B<#> character
|
||||||
|
|
||||||
|
Each section in a configuration file consists of a number of name and
|
||||||
|
value pairs of the form B<name=value>
|
||||||
|
|
||||||
|
The B<name> string can contain any alphanumeric characters as well as
|
||||||
|
a few punctuation symbols such as B<.> B<,> B<;> and B<_>.
|
||||||
|
|
||||||
|
The B<value> string consists of the string following the B<=> character
|
||||||
|
until end of line with any leading and trailing white space removed.
|
||||||
|
|
||||||
|
The value string undergoes variable expansion. This can be done by
|
||||||
|
including the form B<$var> or B<${var}>: this will substitute the value
|
||||||
|
of the named variable in the current section. It is also possible to
|
||||||
|
substitute a value from another section using the syntax B<$section::name>
|
||||||
|
or B<${section::name}>. By using the form B<$ENV::name> environement
|
||||||
|
variables can be substituted. It is also possible to assign values to
|
||||||
|
environment variables by using the name B<ENV::name>, this will work
|
||||||
|
if the program looks up environment variables using the B<CONF> library
|
||||||
|
instead of calling B<getenv()> directly.
|
||||||
|
|
||||||
|
It is possible to escape certain characters by using any kind of quote
|
||||||
|
or the B<\> character. By making the last character of a line a B<\>
|
||||||
|
a B<value> string can be spread across multiple lines. In addition
|
||||||
|
the sequences B<\n>, B<\r>, B<\b> and B<\t> are recognised.
|
||||||
|
|
||||||
|
=head1 NOTES
|
||||||
|
|
||||||
|
If a configuration file attempts to expand a varible that doesn't exist
|
||||||
|
then an error is flagged and the file will not load. This can happen
|
||||||
|
if an attempt is made to expand an environment variable that doesn't
|
||||||
|
exist. For example the default OpenSSL master configuration file used
|
||||||
|
the value of B<HOME> which may not be defined on non Unix systems.
|
||||||
|
|
||||||
|
This can be worked around by including a B<default> section to provide
|
||||||
|
a default value: then if the environment lookup fails the default value
|
||||||
|
will be used instead. For this to work properly the default value must
|
||||||
|
be defined earlier in the configuration file than the expansion. See
|
||||||
|
the B<EXAMPLES> section for an example of how to do this.
|
||||||
|
|
||||||
|
If the same variable exists in the same section then all but the last
|
||||||
|
value will be silently ignored. In certain circumstances such as with
|
||||||
|
DNs the same field may occur multiple times. This is usually worked
|
||||||
|
around by ignoring any characters before an initial B<.> e.g.
|
||||||
|
|
||||||
|
1.OU="My first OU"
|
||||||
|
2.OU="My Second OU"
|
||||||
|
|
||||||
|
=head1 EXAMPLES
|
||||||
|
|
||||||
|
Here is a sample configuration file using some of the features
|
||||||
|
mentioned above.
|
||||||
|
|
||||||
|
# This is the default section.
|
||||||
|
|
||||||
|
HOME=/temp
|
||||||
|
RANDFILE= ${ENV::HOME}/.rnd
|
||||||
|
configdir=$ENV::HOME/config
|
||||||
|
|
||||||
|
[ section_one ]
|
||||||
|
|
||||||
|
# We are now in section one.
|
||||||
|
|
||||||
|
# Quotes permit leading and trailing whitespace
|
||||||
|
any = " any variable name "
|
||||||
|
|
||||||
|
other = A string that can \
|
||||||
|
cover several lines \
|
||||||
|
by including \\ characters
|
||||||
|
|
||||||
|
message = Hello World\n
|
||||||
|
|
||||||
|
[ section_two ]
|
||||||
|
|
||||||
|
greeting = $section_one::message
|
||||||
|
|
||||||
|
This next example shows how to expand environment variables safely.
|
||||||
|
|
||||||
|
Suppose you want a variable called B<tmpfile> to refer to a
|
||||||
|
temporary filename. The directory it is placed in can determined by
|
||||||
|
the the B<TEMP> or B<TMP> environment variables but they may not be
|
||||||
|
set to any value at all. If you just include the environment variable
|
||||||
|
names and the variable doesn't exist then this will cause an error when
|
||||||
|
an attempt is made to load the configuration file. By making use of the
|
||||||
|
default section both values can be looked up with B<TEMP> taking
|
||||||
|
priority and B</tmp> used if neither is defined:
|
||||||
|
|
||||||
|
TMP=/tmp
|
||||||
|
# The above value is used if TMP isn't in the environment
|
||||||
|
TEMP=$ENV::TMP
|
||||||
|
# The above value is used if TEMP isn't in the environment
|
||||||
|
tmpfile=${ENV::TEMP}/tmp.filename
|
||||||
|
|
||||||
|
=head1 BUGS
|
||||||
|
|
||||||
|
Currently there is no way to include characters using the octal B<\nnn>
|
||||||
|
form. Strings are all null terminated so nulls cannot form part of
|
||||||
|
the value.
|
||||||
|
|
||||||
|
The escaping isn't quite right: if you want to use sequences like B<\n>
|
||||||
|
you can't use any quote escaping on the same line.
|
||||||
|
|
||||||
|
Files are loaded in a single pass. This means that an variable expansion
|
||||||
|
will only work if the variables referenced are defined earlier in the
|
||||||
|
file.
|
||||||
|
|
||||||
|
=head1 SEE ALSO
|
||||||
|
|
||||||
|
x509(1), req(1), ca(1)
|
||||||
|
|
||||||
|
=cut
|
48
doc/man/dgst.pod
Normal file
48
doc/man/dgst.pod
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
=pod
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
dgst, md5, md2, sha1, sha, mdc2, ripemd160 - message digests
|
||||||
|
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
[B<dgst>]
|
||||||
|
[B<-md5|-md2|-sha1|-sha|mdc2|-ripemd160>]
|
||||||
|
[B<-c>]
|
||||||
|
[B<-d>]
|
||||||
|
[B<file...>]
|
||||||
|
|
||||||
|
[B<md5|md2|sha1|sha|mdc2|ripemd160>]
|
||||||
|
[B<-c>]
|
||||||
|
[B<-d>]
|
||||||
|
[B<file...>]
|
||||||
|
|
||||||
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
The digest functions print out the message digest of a supplied file or files
|
||||||
|
in hexadecimal form.
|
||||||
|
|
||||||
|
=head1 OPTIONS
|
||||||
|
|
||||||
|
=over 4
|
||||||
|
|
||||||
|
=item B<-c>
|
||||||
|
|
||||||
|
print out the digest in two digit groups separated by colons.
|
||||||
|
|
||||||
|
=item B<-d>
|
||||||
|
|
||||||
|
print out BIO debugging information.
|
||||||
|
|
||||||
|
=item B<file...>
|
||||||
|
|
||||||
|
file or files to digest. If no files are specified then standard input is
|
||||||
|
used.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head1 NOTES
|
||||||
|
|
||||||
|
The digest of choice for all new applications is SHA1. Other digests are
|
||||||
|
however still widely used.
|
||||||
|
|
||||||
|
=cut
|
124
doc/man/dsa.pod
Normal file
124
doc/man/dsa.pod
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
=pod
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
dsa - DSA key processing
|
||||||
|
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
B<openssl> B<dsa>
|
||||||
|
[B<-inform PEM|DER>]
|
||||||
|
[B<-outform PEM|DER>]
|
||||||
|
[B<-in filename>]
|
||||||
|
[B<-out filename>]
|
||||||
|
[B<-des>]
|
||||||
|
[B<-des3>]
|
||||||
|
[B<-idea>]
|
||||||
|
[B<-text>]
|
||||||
|
[B<-noout>]
|
||||||
|
[B<-modulus>]
|
||||||
|
[B<-pubin>]
|
||||||
|
[B<-pubout>]
|
||||||
|
|
||||||
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
The B<dsa> command processes DSA keys. They can be converted between various
|
||||||
|
forms and their components printed out. B<Note> This command uses the
|
||||||
|
traditional SSLeay compatible format for private key encryption: newer
|
||||||
|
applications should use the more secure PKCS#8 format using the B<pkcs8>
|
||||||
|
|
||||||
|
=head1 COMMAND OPTIONS
|
||||||
|
|
||||||
|
=over 4
|
||||||
|
|
||||||
|
=item B<-inform DER|PEM>
|
||||||
|
|
||||||
|
This specifies the input format. The B<DER> option with a private key uses
|
||||||
|
an ASN1 DER encoded form of an ASN.1 SEQUENCE consisting of the values of
|
||||||
|
version (currently zero), p, q, g, the public and private key components
|
||||||
|
respectively as ASN.1 INTEGERs. When used with a public key it outputs a
|
||||||
|
SEQUENCE of the public key component, p, q and g respectively.
|
||||||
|
|
||||||
|
The B<PEM> form is the default format: it consists of the B<DER> format base64
|
||||||
|
encoded with additional header and footer lines.
|
||||||
|
|
||||||
|
=item B<-outform DER|PEM>
|
||||||
|
|
||||||
|
This specifies the output format, the options have the same meaning as the
|
||||||
|
B<-inform> option.
|
||||||
|
|
||||||
|
=item B<-in filename>
|
||||||
|
|
||||||
|
This specifies the input filename to read a key from or standard input if this
|
||||||
|
option is not specified. If the key is encrypted a pass phrase will be
|
||||||
|
prompted for.
|
||||||
|
|
||||||
|
=item B<-out filename>
|
||||||
|
|
||||||
|
This specifies the output filename to write a key to or standard output by
|
||||||
|
is not specified. If any encryption options are set then a pass phrase will be
|
||||||
|
prompted for. The output filename should B<not> be the same as the input
|
||||||
|
filename.
|
||||||
|
|
||||||
|
=item B<-des|-des3|-idea>
|
||||||
|
|
||||||
|
These options encrypt the private key with the DES, triple DES, or the
|
||||||
|
IDEA ciphers respectively before outputting it. A pass phrase is prompted for.
|
||||||
|
If none of these options is specified the key is written in plain text. This
|
||||||
|
means that using the B<rsa> utility to read in an encrypted key with no
|
||||||
|
encryption option can be used to remove the pass phrase from a key, or by
|
||||||
|
setting the encryption options it can be use to add or change the pass phrase.
|
||||||
|
These options can only be used with PEM format output files.
|
||||||
|
|
||||||
|
=item B<-text>
|
||||||
|
|
||||||
|
prints out the public, private key components and parameters.
|
||||||
|
|
||||||
|
=item B<-noout>
|
||||||
|
|
||||||
|
this option prevents output of the encoded version of the key.
|
||||||
|
|
||||||
|
=item B<-modulus>
|
||||||
|
|
||||||
|
this option prints out the value of the public key component of the key.
|
||||||
|
|
||||||
|
=item B<-pubin>
|
||||||
|
|
||||||
|
by default a private key is input file with this option a public key is input
|
||||||
|
instead.
|
||||||
|
|
||||||
|
=item B<-pubout>
|
||||||
|
|
||||||
|
by default a private key is output. With this option a public
|
||||||
|
key will be output instead. This option is automatically set if the input is
|
||||||
|
a public key.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head1 EXAMPLES
|
||||||
|
|
||||||
|
To remove the pass phrase on a DSA private key:
|
||||||
|
|
||||||
|
C<openssl dsa -in key.pem -out keyout.pem>
|
||||||
|
|
||||||
|
To encrypt a private key using triple DES:
|
||||||
|
|
||||||
|
C<openssl dsa -in key.pem -des3 -out keyout.pem>
|
||||||
|
|
||||||
|
To convert a private key from PEM to DER format:
|
||||||
|
|
||||||
|
C<openssl dsa -in key.pem -outform DER -out keyout.der>
|
||||||
|
|
||||||
|
To print out the components of a private key to standard output:
|
||||||
|
|
||||||
|
C<openssl dsa -in key.pem -text -noout>
|
||||||
|
|
||||||
|
To just output the public part of a private key:
|
||||||
|
|
||||||
|
C<openssl dsa -in key.pem -pubout -out pubkey.pem>
|
||||||
|
|
||||||
|
=head1 SEE ALSO
|
||||||
|
|
||||||
|
dsaparam(1), gendsa(1), rsa(1), genrsa(1)
|
||||||
|
|
||||||
|
=cut
|
92
doc/man/dsaparam.pod
Normal file
92
doc/man/dsaparam.pod
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
=pod
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
dsaparam - DSA parameter manipulation and generation
|
||||||
|
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
B<openssl dsaparam>
|
||||||
|
[B<-inform DER|PEM>]
|
||||||
|
[B<-outform DER|PEM>]
|
||||||
|
[B<-in filename>]
|
||||||
|
[B<-out filename>]
|
||||||
|
[B<-noout>]
|
||||||
|
[B<-text>]
|
||||||
|
[B<-C>]
|
||||||
|
[B<-rand file:file>]
|
||||||
|
[B<-genkey>]
|
||||||
|
[B<numbits>]
|
||||||
|
|
||||||
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
This command is used to manipulate or generate DSA parameter files.
|
||||||
|
|
||||||
|
=head1 OPTIONS
|
||||||
|
|
||||||
|
=over 4
|
||||||
|
|
||||||
|
=item B<-inform DER|PEM>
|
||||||
|
|
||||||
|
This specifies the input format. The B<DER> option uses an ASN1 DER encoded
|
||||||
|
form compatible with RFC2459 (PKIX) DSS-Parms that is a SEQUENCE consisting
|
||||||
|
of p, q and g respectively. The PEM form is the default format: it consists
|
||||||
|
of the B<DER> format base64 encoded with additional header and footer lines.
|
||||||
|
|
||||||
|
=item B<-outform DER|PEM>
|
||||||
|
|
||||||
|
This specifies the output format, the options have the same meaning as the
|
||||||
|
B<-inform> option.
|
||||||
|
|
||||||
|
=item B<-in filename>
|
||||||
|
|
||||||
|
This specifies the input filename to read parameters from or standard input if
|
||||||
|
this option is not specified. If the B<numbits> parameter is included then
|
||||||
|
this option will be ignored.
|
||||||
|
|
||||||
|
=item B<-out filename>
|
||||||
|
|
||||||
|
This specifies the output filename parameters to. Standard output is used
|
||||||
|
if this option is not present. The output filename should B<not> be the same
|
||||||
|
as the input filename.
|
||||||
|
|
||||||
|
=item B<-noout>
|
||||||
|
|
||||||
|
this option inhibits the output of the encoded version of the parameters.
|
||||||
|
|
||||||
|
=item B<-text>
|
||||||
|
|
||||||
|
this option prints out the DSA parameters in human readable form.
|
||||||
|
|
||||||
|
=item B<-C>
|
||||||
|
|
||||||
|
this option converts the parameters into C code. The parameters can then
|
||||||
|
be loaded by calling the B<get_dsaXXX()> function.
|
||||||
|
|
||||||
|
=item B<-genkey>
|
||||||
|
|
||||||
|
this option will generate a DSA either using the specified or generated
|
||||||
|
parameters.
|
||||||
|
|
||||||
|
=item B<-rand file:file>
|
||||||
|
|
||||||
|
a file or files containing random data used to seed the random number
|
||||||
|
generator. Multiple files can be specified separated by B<:>.
|
||||||
|
|
||||||
|
=item B<numbits>
|
||||||
|
|
||||||
|
this option specifies that a parameter set should be generated of size
|
||||||
|
B<numbits>. It must be the last option. If this option is included then
|
||||||
|
the input file (if any) is ignored.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head1 NOTES
|
||||||
|
|
||||||
|
DSA parameter generation is a slow process and as a result the same set of
|
||||||
|
DSA parameters is often used to generate several distinct keys.
|
||||||
|
|
||||||
|
=head1 SEE ALSO
|
||||||
|
|
||||||
|
gendsa(1), dsa(1), genrsa(1), rsa(1)
|
||||||
|
|
||||||
|
=cut
|
54
doc/man/gendsa.pod
Normal file
54
doc/man/gendsa.pod
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
=pod
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
gendsa - generate a DSA private key from a set of parameters
|
||||||
|
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
B<openssl> B<gendsa>
|
||||||
|
[B<-out filename>]
|
||||||
|
[B<-des>]
|
||||||
|
[B<-des3>]
|
||||||
|
[B<-idea>]
|
||||||
|
[B<-rand file:file>]
|
||||||
|
[B<paramfile>]
|
||||||
|
|
||||||
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
The B<gendsa> command generates a DSA private key from a DSA parameter file
|
||||||
|
(which will be typically generated by the B<openssl dsaparam> command).
|
||||||
|
|
||||||
|
=head1 OPTIONS
|
||||||
|
|
||||||
|
=over 4
|
||||||
|
|
||||||
|
=item B<-des|-des3|-idea>
|
||||||
|
|
||||||
|
These options encrypt the private key with the DES, triple DES, or the
|
||||||
|
IDEA ciphers respectively before outputting it. A pass phrase is prompted for.
|
||||||
|
If none of these options is specified no encryption is used.
|
||||||
|
|
||||||
|
=item B<-rand file:file>
|
||||||
|
|
||||||
|
a file or files containing random data used to seed the random number
|
||||||
|
generator. Multiple files can be specified separated by B<:>.
|
||||||
|
|
||||||
|
=item B<paramfile>
|
||||||
|
|
||||||
|
This option specifies the DSA parameter file to use. The parameters in this
|
||||||
|
file determine the size of the private key. DSA parameters can be generated
|
||||||
|
and examined using the B<openssl dsaparam> command.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head1 NOTES
|
||||||
|
|
||||||
|
DSA key generation is little more than random number generation so it is
|
||||||
|
much quicker that RSA key generation for example.
|
||||||
|
|
||||||
|
=head1 SEE ALSO
|
||||||
|
|
||||||
|
dsaparam(1), dsa(1), genrsa(1), rsa(1)
|
||||||
|
|
||||||
|
=cut
|
70
doc/man/genrsa.pod
Normal file
70
doc/man/genrsa.pod
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
=pod
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
genrsa - generate an RSA private key
|
||||||
|
|
||||||
|
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
B<openssl> B<genrsa>
|
||||||
|
[B<-out filename>]
|
||||||
|
[B<-des>]
|
||||||
|
[B<-des3>]
|
||||||
|
[B<-idea>]
|
||||||
|
[B<-f4>]
|
||||||
|
[B<-3>]
|
||||||
|
[B<-rand file:file>]
|
||||||
|
[B<numbits>]
|
||||||
|
|
||||||
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
The B<genrsa> command generates an RSA private key.
|
||||||
|
|
||||||
|
=head1 OPTIONS
|
||||||
|
|
||||||
|
=over 4
|
||||||
|
|
||||||
|
=item B<-des|-des3|-idea>
|
||||||
|
|
||||||
|
These options encrypt the private key with the DES, triple DES, or the
|
||||||
|
IDEA ciphers respectively before outputting it. A pass phrase is prompted for.
|
||||||
|
If none of these options is specified no encryption is used.
|
||||||
|
|
||||||
|
=item B<-F4|-3>
|
||||||
|
|
||||||
|
the public exponent to use, either 65537 or 3. The default is 65537.
|
||||||
|
|
||||||
|
=item B<-rand file:file>
|
||||||
|
|
||||||
|
a file or files containing random data used to seed the random number
|
||||||
|
generator. Multiple files can be specified separated by B<:>.
|
||||||
|
|
||||||
|
=item B<numbits>
|
||||||
|
|
||||||
|
the size of the private key to generate in bits. This must be the last option
|
||||||
|
specified. The default is 512.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head1 NOTES
|
||||||
|
|
||||||
|
RSA private key generation essentially involves the generation of two prime
|
||||||
|
numbers. When generating a private key various symbols will be output to
|
||||||
|
indicate the progress of the generation. A B<.> represents each number tested.
|
||||||
|
A B<+> means a number has passed a single primality test. A newline means that
|
||||||
|
the number has passed all the prime tests (currently set to 5 single tests).
|
||||||
|
|
||||||
|
Because key generation is a random process the time taken to generate a key
|
||||||
|
may vary somewhat.
|
||||||
|
|
||||||
|
=head1 BUGS
|
||||||
|
|
||||||
|
A quirk of the prime generation algorithm is that it cannot generate small
|
||||||
|
primes. Therefore the number of bits should not be less that 64. For typical
|
||||||
|
private keys this will not matter because for security reasons they will
|
||||||
|
be much larger (typically 1024 bits).
|
||||||
|
|
||||||
|
=head1 SEE ALSO
|
||||||
|
|
||||||
|
gendsa(1)
|
236
doc/man/openssl.pod
Normal file
236
doc/man/openssl.pod
Normal file
@ -0,0 +1,236 @@
|
|||||||
|
|
||||||
|
=pod
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
openssl - OpenSSL command line tool
|
||||||
|
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
B<openssl>
|
||||||
|
I<command>
|
||||||
|
[ I<command_opts> ]
|
||||||
|
[ I<command_args> ]
|
||||||
|
|
||||||
|
=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 of RSA, DH and DSA key parameters
|
||||||
|
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
|
||||||
|
|
||||||
|
=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).
|
||||||
|
|
||||||
|
=head2 STANDARD COMMANDS
|
||||||
|
|
||||||
|
=over 10
|
||||||
|
|
||||||
|
=item B<asn1parse>
|
||||||
|
|
||||||
|
Parse an ASN.1 sequence.
|
||||||
|
|
||||||
|
=item B<ca>
|
||||||
|
|
||||||
|
Certificate Authority (CA) Management.
|
||||||
|
|
||||||
|
=item B<ciphers>
|
||||||
|
|
||||||
|
Cipher Suite Description Determination.
|
||||||
|
|
||||||
|
=item B<crl>
|
||||||
|
|
||||||
|
Certificate Revocation List (CRL) Management.
|
||||||
|
|
||||||
|
=item B<crl2pkcs7>
|
||||||
|
|
||||||
|
CRL to PKCS#7 Conversion.
|
||||||
|
|
||||||
|
=item B<dgst>
|
||||||
|
|
||||||
|
Message Digest Calculation.
|
||||||
|
|
||||||
|
=item B<dh>
|
||||||
|
|
||||||
|
Diffie-Hellman Data Management.
|
||||||
|
|
||||||
|
=item B<dsa>
|
||||||
|
|
||||||
|
DSA Data Management.
|
||||||
|
|
||||||
|
=item B<dsaparam>
|
||||||
|
|
||||||
|
DSA Parameter Generation.
|
||||||
|
|
||||||
|
=item B<enc>
|
||||||
|
|
||||||
|
Encoding with Ciphers.
|
||||||
|
|
||||||
|
=item B<errstr>
|
||||||
|
|
||||||
|
Error Number to Error String Conversion.
|
||||||
|
|
||||||
|
=item B<gendh>
|
||||||
|
|
||||||
|
Generation of Diffie-Hellman Parameters.
|
||||||
|
|
||||||
|
=item B<gendsa>
|
||||||
|
|
||||||
|
Generation of DSA Parameters.
|
||||||
|
|
||||||
|
=item B<genrsa>
|
||||||
|
|
||||||
|
Generation of RSA Parameters.
|
||||||
|
|
||||||
|
=item B<pkcs7>
|
||||||
|
|
||||||
|
PKCS#7 Data Management.
|
||||||
|
|
||||||
|
=item B<req>
|
||||||
|
|
||||||
|
X.509 Certificate Signing Request (CSR) Management.
|
||||||
|
|
||||||
|
=item B<rsa>
|
||||||
|
|
||||||
|
RSA Data Management.
|
||||||
|
|
||||||
|
=item B<s_client>
|
||||||
|
|
||||||
|
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 B<s_server>
|
||||||
|
|
||||||
|
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 B<s_time>
|
||||||
|
|
||||||
|
SSL Connection Timer.
|
||||||
|
|
||||||
|
=item B<sess_id>
|
||||||
|
|
||||||
|
SSL Session Data Management.
|
||||||
|
|
||||||
|
=item B<speed>
|
||||||
|
|
||||||
|
Algorithm Speed Measurement.
|
||||||
|
|
||||||
|
=item B<verify>
|
||||||
|
|
||||||
|
X.509 Certificate Verification.
|
||||||
|
|
||||||
|
=item B<version>
|
||||||
|
|
||||||
|
OpenSSL Version Information.
|
||||||
|
|
||||||
|
=item B<x509>
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
=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 SEE ALSO
|
||||||
|
|
||||||
|
crypto(3), ssl(3)
|
||||||
|
|
||||||
|
=head1 HISTORY
|
||||||
|
|
||||||
|
The openssl(3) document appeared in OpenSSL 0.9.2
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
133
doc/man/pkcs8.pod
Normal file
133
doc/man/pkcs8.pod
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
=pod
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
pkcs8 - PKCS#8 format private key processing tool
|
||||||
|
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
B<openssl> B<pkcs8>
|
||||||
|
[B<-topk8>]
|
||||||
|
[B<-inform PEM|DER>]
|
||||||
|
[B<-outform PEM|DER>]
|
||||||
|
[B<-in filename>]
|
||||||
|
[B<-out filename>]
|
||||||
|
[B<-noiter>]
|
||||||
|
[B<-nocrypt>]
|
||||||
|
[B<-nooct>]
|
||||||
|
[B<-v2 alg>]
|
||||||
|
|
||||||
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
The B<pkcs8> command processes private keys in PKCS#8 format. It can handle
|
||||||
|
both unencrypted PKCS#8 PrivateKeyInfo format and EncryptedPrivateKeyInfo
|
||||||
|
format with a variety of PKCS#5 (v1.5 and v2.0) and PKCS#12 algorithms.
|
||||||
|
|
||||||
|
=head1 COMMAND OPTIONS
|
||||||
|
|
||||||
|
=over 4
|
||||||
|
|
||||||
|
=item B<-topk8>
|
||||||
|
|
||||||
|
Normally a PKCS#8 private key is expected on input and a "traditional" format
|
||||||
|
private key will be written. With the B<-topk8> option the situation is
|
||||||
|
reversed: it reads a traditional format private key and writes a PKCS#8
|
||||||
|
format key.
|
||||||
|
|
||||||
|
=item B<-inform DER|PEM>
|
||||||
|
|
||||||
|
This specifies the input format. If a PKCS#8 format key is expected on input
|
||||||
|
then either a B<DER> or B<PEM> encoded version of a PKCS#8 key will be
|
||||||
|
expected. Otherwise the B<DER> or B<PEM> format of the "traditional" format
|
||||||
|
private key is used.
|
||||||
|
|
||||||
|
=item B<-outform DER|NET|PEM>
|
||||||
|
|
||||||
|
This specifies the output format, the options have the same meaning as the
|
||||||
|
B<-inform> option.
|
||||||
|
|
||||||
|
=item B<-in filename>
|
||||||
|
|
||||||
|
This specifies the input filename to read a key from or standard input if this
|
||||||
|
option is not specified. If the key is encrypted a pass phrase will be
|
||||||
|
prompted for.
|
||||||
|
|
||||||
|
=item B<-out filename>
|
||||||
|
|
||||||
|
This specifies the output filename to write a key to or standard output by
|
||||||
|
is not specified. If any encryption options are set then a pass phrase will be
|
||||||
|
prompted for. The output filename should B<not> be the same as the input
|
||||||
|
filename.
|
||||||
|
|
||||||
|
=item B<-des|-des3|-idea>
|
||||||
|
|
||||||
|
These options encrypt the private key with the DES, triple DES, or the
|
||||||
|
IDEA ciphers respectively before outputting it. A pass phrase is prompted for.
|
||||||
|
If none of these options is specified the key is written in plain text. This
|
||||||
|
means that using the B<rsa> utility to read in an encrypted key with no
|
||||||
|
encryption option can be used to remove the pass phrase from a key, or by
|
||||||
|
setting the encryption options it can be use to add or change the pass phrase.
|
||||||
|
These options can only be used with PEM format output files.
|
||||||
|
|
||||||
|
=item B<-text>
|
||||||
|
|
||||||
|
prints out the various public or private key components in
|
||||||
|
plain text in addition to the encoded version.
|
||||||
|
|
||||||
|
=item B<-noout>
|
||||||
|
|
||||||
|
this option prevents output of the encoded version of the key.
|
||||||
|
|
||||||
|
=item B<-modulus>
|
||||||
|
|
||||||
|
this option prints out the value of the modulus of the key.
|
||||||
|
|
||||||
|
=item B<-check>
|
||||||
|
|
||||||
|
this option checks the consistency of an RSA private key.
|
||||||
|
|
||||||
|
=item B<-pubin>
|
||||||
|
|
||||||
|
by default a private key is input file with this option a public key is input
|
||||||
|
instead.
|
||||||
|
|
||||||
|
=item B<-pubout>
|
||||||
|
|
||||||
|
by default a private key is output with this option a public
|
||||||
|
key will be output instead. This option is automatically set if the input is
|
||||||
|
a public key.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head1 EXAMPLES
|
||||||
|
|
||||||
|
To remove the pass phrase on an RSA private key:
|
||||||
|
|
||||||
|
C<openssl rsa -in key.pem -out keyout.pem>
|
||||||
|
|
||||||
|
To encrypt a private key using triple DES:
|
||||||
|
|
||||||
|
C<openssl rsa -in key.pem -des3 -out keyout.pem>
|
||||||
|
|
||||||
|
To convert a private key from PEM to DER format:
|
||||||
|
|
||||||
|
C<openssl rsa -in key.pem -outform DER -out keyout.der>
|
||||||
|
|
||||||
|
To print out the components of a private key to standard output:
|
||||||
|
|
||||||
|
C<openssl rsa -in key.pem -text -noout>
|
||||||
|
|
||||||
|
To just output the public part of a private key:
|
||||||
|
|
||||||
|
C<openssl rsa -in key.pem -pubout -out pubkey.pem>
|
||||||
|
|
||||||
|
=head1 BUGS
|
||||||
|
|
||||||
|
It should be possible to read or produce PKCS#8 format encrypted RSA keys:
|
||||||
|
at present it isn't.
|
||||||
|
|
||||||
|
=head1 SEE ALSO
|
||||||
|
|
||||||
|
L<pkcs8>, dsa(1), genrsa(1), gendsa(1)
|
||||||
|
|
||||||
|
=cut
|
403
doc/man/req.pod
Normal file
403
doc/man/req.pod
Normal file
@ -0,0 +1,403 @@
|
|||||||
|
|
||||||
|
=pod
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
req - PKCS#10 certificate and certificate generating utility.
|
||||||
|
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
B<openssl> B<req>
|
||||||
|
[B<-inform PEM|DER>]
|
||||||
|
[B<-outform PEM|DER>]
|
||||||
|
[B<-in filename>]
|
||||||
|
[B<-out filename>]
|
||||||
|
[B<-text>]
|
||||||
|
[B<-noout>]
|
||||||
|
[B<-verify>]
|
||||||
|
[B<-modulus>]
|
||||||
|
[B<-new>]
|
||||||
|
[B<-newkey rsa:bits>]
|
||||||
|
[B<-newkey dsa:file>]
|
||||||
|
[B<-nodes>]
|
||||||
|
[B<-key filename>]
|
||||||
|
[B<-keyform PEM|DER>]
|
||||||
|
[B<-keyout filename>]
|
||||||
|
[B<-[md5|sha1|md2|mdc2]>]
|
||||||
|
[B<-config filename>]
|
||||||
|
[B<-x509>]
|
||||||
|
[B<-days n>]
|
||||||
|
[B<-noasn1-kludge>]
|
||||||
|
[B<-extensions section>]
|
||||||
|
[B<-reqexts section>]
|
||||||
|
|
||||||
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
The B<req> command primarily creates and processes certificate requests
|
||||||
|
in PKCS#10 format. It can additionally create self signed certificates
|
||||||
|
for use as root CAs for example.
|
||||||
|
|
||||||
|
=head1 COMMAND OPTIONS
|
||||||
|
|
||||||
|
=over 4
|
||||||
|
|
||||||
|
=item B<-inform DER|PEM>
|
||||||
|
|
||||||
|
This specifies the input format. The B<DER> option uses an ASN1 DER encoded
|
||||||
|
form compatible with the PKCS#10. The B<PEM> form is the default format: it
|
||||||
|
consists of the B<DER> format base64 encoded with additional header and
|
||||||
|
footer lines.
|
||||||
|
|
||||||
|
=item B<-outform DER|PEM>
|
||||||
|
|
||||||
|
This specifies the output format, the options have the same meaning as the
|
||||||
|
B<-inform> option.
|
||||||
|
|
||||||
|
=item B<-in filename>
|
||||||
|
|
||||||
|
This specifies the input filename to read a request from or standard input
|
||||||
|
if this option is not specified. A request is only read if the creation
|
||||||
|
options (B<-new> and B<-newkey>) are not specified.
|
||||||
|
|
||||||
|
=item B<-out filename>
|
||||||
|
|
||||||
|
This specifies the output filename to write to or standard output by
|
||||||
|
default.
|
||||||
|
|
||||||
|
=item B<-text>
|
||||||
|
|
||||||
|
prints out the certificate request in text form.
|
||||||
|
|
||||||
|
=item B<-noout>
|
||||||
|
|
||||||
|
this option prevents output of the encoded version of the request.
|
||||||
|
|
||||||
|
=item B<-modulus>
|
||||||
|
|
||||||
|
this option prints out the value of the modulus of the public key
|
||||||
|
contained in the request.
|
||||||
|
|
||||||
|
=item B<-verify>
|
||||||
|
|
||||||
|
verifies the signature on the request.
|
||||||
|
|
||||||
|
=item B<-new>
|
||||||
|
|
||||||
|
this option generates a new certificate request. It will prompt
|
||||||
|
the user for the relevant field values. The actual fields
|
||||||
|
prompted for and their maximum and minimum sizes are specified
|
||||||
|
in the configuration file and any requested extensions.
|
||||||
|
|
||||||
|
If the B<-key> option is not used it will generate a new RSA private
|
||||||
|
key using information specified in the configuration file.
|
||||||
|
|
||||||
|
=item B<-newkey arg>
|
||||||
|
|
||||||
|
this option creates a new certificate request and a new private
|
||||||
|
key. The argument takes one of two forms. B<rsa:nbits>, where
|
||||||
|
B<nbits> is the number of bits, generates an RSA key B<nbits>
|
||||||
|
in size. B<dsa:filename> generates a DSA key using the parameters
|
||||||
|
in the file B<filename>.
|
||||||
|
|
||||||
|
=item B<-key filename>
|
||||||
|
|
||||||
|
This specifies the file to read the private key from. It also
|
||||||
|
accepts PKCS#8 format private keys for PEM format files.
|
||||||
|
|
||||||
|
=item B<-keyform PEM|DER>
|
||||||
|
|
||||||
|
the format of the private key file specified in the B<-key>
|
||||||
|
argument. PEM is the default.
|
||||||
|
|
||||||
|
=item B<-keyout filename>
|
||||||
|
|
||||||
|
this gives the filename to write the newly created private key to.
|
||||||
|
If this option is not specified then the filename present in the
|
||||||
|
configuration file is used.
|
||||||
|
|
||||||
|
=item B<-nodes>
|
||||||
|
|
||||||
|
if this option is specified then if a private key is created it
|
||||||
|
will not be encrypted.
|
||||||
|
|
||||||
|
=item B<-[md5|sha1|md2|mdc2]>
|
||||||
|
|
||||||
|
this specifies the message digest to sign the request with. This
|
||||||
|
overrides the digest algorithm specified in the configuration file.
|
||||||
|
This option is ignore for DSA requests: they always use SHA1.
|
||||||
|
|
||||||
|
=item B<-config filename>
|
||||||
|
|
||||||
|
this allows an alternative configuration file to be specified,
|
||||||
|
this overrides the compile time filename or any specified in
|
||||||
|
the B<OPENSSL_CONF> environment variable.
|
||||||
|
|
||||||
|
=item B<-x509>
|
||||||
|
|
||||||
|
this option outputs a self signed certificate instead of a certificate
|
||||||
|
request. This is typically used to generate a test certificate or
|
||||||
|
a self signed root CA. The extensions added to the certificate
|
||||||
|
(if any) are specified in the configuration file.
|
||||||
|
|
||||||
|
=item B<-days n>
|
||||||
|
|
||||||
|
when the B<-x509> option is being used this specifies the number of
|
||||||
|
days to certify the certificate for. The default is 30 days.
|
||||||
|
|
||||||
|
=item B<-extensions section>
|
||||||
|
=item B<-reqexts section>
|
||||||
|
|
||||||
|
these options specify alternative sections to include certificate
|
||||||
|
extensions (if the B<-x509> option is present) or certificate
|
||||||
|
request extensions. This allows several different sections to
|
||||||
|
be used in the same configuration file to specify requests for
|
||||||
|
a variety of purposes.
|
||||||
|
|
||||||
|
=item B<-asn1-kludge>
|
||||||
|
|
||||||
|
by default the B<req> command outputs certificate requests containing
|
||||||
|
no attributes in the correct PKCS#10 format. However certain CAs will only
|
||||||
|
accept requests containing no attributes in an invalid form: this
|
||||||
|
option produces this invalid format.
|
||||||
|
|
||||||
|
More precisely the B<Attributes> in a PKCS#10 certificate request
|
||||||
|
are defined as a B<SET OF Attribute>. They are B<not OPTIONAL> so
|
||||||
|
if no attributes are present then they should be encoded as an
|
||||||
|
empty B<SET OF>. The invalid form does not include the empty
|
||||||
|
B<SET OF> whereas the correct form does.
|
||||||
|
|
||||||
|
It should be noted that very few CAs still require the use of this option.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head1 CONFIGURATION FILE FORMAT
|
||||||
|
|
||||||
|
The configuation options are specified in the B<req> section of
|
||||||
|
the configuration file. As with all configuration files if no
|
||||||
|
value is specified in the specific section (i.e. B<req>) then
|
||||||
|
the initial unnamed or B<default> section is searched too.
|
||||||
|
|
||||||
|
The options available are described in detail below.
|
||||||
|
|
||||||
|
=over 4
|
||||||
|
|
||||||
|
=item B<default_bits>
|
||||||
|
|
||||||
|
This specifies the default key size in bits. If not specified then
|
||||||
|
512 is used. It is used if the B<-new> option is used. It can be
|
||||||
|
overriden by using the B<-newkey> option.
|
||||||
|
|
||||||
|
=item B<default_keyfile>
|
||||||
|
|
||||||
|
This is the default filename to write a private key to. If not
|
||||||
|
specified the key is written to standard output. This can be
|
||||||
|
overriden by the B<-keyout> option.
|
||||||
|
|
||||||
|
=item B<oid_file>
|
||||||
|
|
||||||
|
This specifies a file containing additional B<OBJECT IDENTIFIERS>.
|
||||||
|
Each line of the file should consist of the numerical form of the
|
||||||
|
object identifier followed by white space then the short name followed
|
||||||
|
by white space and finally the long name.
|
||||||
|
|
||||||
|
=item B<oid_section>
|
||||||
|
|
||||||
|
This specifies a section in the configuration file containing extra
|
||||||
|
object identifiers. Each line should consist of the numerical form
|
||||||
|
of the object identifier followed by B<=> and its name. The short
|
||||||
|
and long names are the same when this option is used.
|
||||||
|
|
||||||
|
=item B<RANDFILE>
|
||||||
|
|
||||||
|
This specifies a filename in which random number seed information is
|
||||||
|
placed and read from. It is used for private key generation.
|
||||||
|
|
||||||
|
=item B<encrypt_rsa_key|encrypt_key>
|
||||||
|
|
||||||
|
If this is set to B<no> then if a private key is generated it is
|
||||||
|
B<not> encrypted. This is equivalent to the B<-nodes> command line
|
||||||
|
option.
|
||||||
|
|
||||||
|
=item B<default_md>
|
||||||
|
|
||||||
|
This option specifies the digest algorithm to use. Possible values
|
||||||
|
include B<md5 sha1 mdc2>. If not present then MD5 is used. This
|
||||||
|
option can be overridden on the command line.
|
||||||
|
|
||||||
|
=item B<dirstring_type>
|
||||||
|
|
||||||
|
This option specifies which string types are permissible in a
|
||||||
|
B<DirectoryString>. Most users will not need to change this option.
|
||||||
|
|
||||||
|
It can be set to several values B<default> which is also the default
|
||||||
|
option uses PrintableStrings, T61Strings and BMPStrings if the
|
||||||
|
B<pkix> value is used then only PrintableStrings and BMPStrings will
|
||||||
|
be used. This follows the PKIX recommendation in RFC2459. If the
|
||||||
|
B<utf8only> option is used then only UTF8Strings will be used: this
|
||||||
|
is the PKIX recommendation in RFC2459 after 2003. Finally the B<nobmp>
|
||||||
|
option just uses PrintableStrings and T61Strings: certain software has
|
||||||
|
problems with BMPStrings.
|
||||||
|
|
||||||
|
=item B<req_extensions>
|
||||||
|
|
||||||
|
this specifies the configuration file section containing a list of
|
||||||
|
extensions to add to the certificate request. It can be overridden
|
||||||
|
by the B<-reqexts> command line switch.
|
||||||
|
|
||||||
|
=item B<x509_extensions>
|
||||||
|
|
||||||
|
this specifies the configuration file section containing a list of
|
||||||
|
extensions to add to certificate generated when the B<-x509> switch
|
||||||
|
is used. It can be overridden by the B<-extensions> command line switch.
|
||||||
|
|
||||||
|
=item B<attributes>
|
||||||
|
|
||||||
|
this specifies the section containing any request attributes: its format
|
||||||
|
is the same as B<distinguished_name> described below. Typically these
|
||||||
|
may contain the challengePassword or unstructuredName types. They are
|
||||||
|
currently ignored by OpenSSLs request signing utilities but some CAs might want
|
||||||
|
want them.
|
||||||
|
|
||||||
|
=item B<distinguished_name>
|
||||||
|
|
||||||
|
This specifies the section containing the distiguished name fields to
|
||||||
|
prompt for when generating a certificate or certificate request. This
|
||||||
|
consists of lines of the form:
|
||||||
|
|
||||||
|
fieldName="prompt"
|
||||||
|
fieldName_default="default field value"
|
||||||
|
fieldName_min= 2
|
||||||
|
fieldName_max= 4
|
||||||
|
|
||||||
|
"fieldName" is the field name being used, for example commonName.
|
||||||
|
The "prompt" string is used to ask the user to enter the relvant
|
||||||
|
details. If the user enters nothing then the default value is used if no
|
||||||
|
default value is present then the field is omitted. A field can
|
||||||
|
still be omitted if a default value is present if the user just
|
||||||
|
enters the '.' character.
|
||||||
|
|
||||||
|
The number of characters entered must be between the fieldName_min and
|
||||||
|
fieldName_max limits: there may be additional restrictions based
|
||||||
|
on the field being used (for example countryName can only ever be
|
||||||
|
two characters long and must fit in a PrintableString).
|
||||||
|
|
||||||
|
Some fields (such as organizationName) can be used more than once
|
||||||
|
in a DN. This presents a problem because configuration files will
|
||||||
|
not recognise the same name occurring twice. To avoid this problem
|
||||||
|
if the fieldName contains an some characters followed by a full stop
|
||||||
|
they will be ignored. So for example a second organizationName can
|
||||||
|
be input by calling it "1.organizationName".
|
||||||
|
|
||||||
|
The actual permitted field names are any object identifier short or
|
||||||
|
long names. These are compiled into OpenSSL and include the usual
|
||||||
|
values such as commonName, countryName, localityName, organizationName,
|
||||||
|
organizationUnitName, stateOrPrivinceName. Additionally emailAddress
|
||||||
|
is include as well as name, surname, givenName initials and dnQualifier
|
||||||
|
are supported.
|
||||||
|
|
||||||
|
Additional object identifiers can be defined with the B<oid_file> or
|
||||||
|
B<oid_section> options in the configuration file. Any additional fields
|
||||||
|
will be treated as though they were a DirectoryString.
|
||||||
|
|
||||||
|
=head1 EXAMPLES
|
||||||
|
|
||||||
|
Examine and verify certificate request:
|
||||||
|
|
||||||
|
openssl req -in req.pem -text -verify -noout
|
||||||
|
|
||||||
|
Create a private key and then generate a certificate request from it:
|
||||||
|
|
||||||
|
openssl genrsa -out key.pem 1024
|
||||||
|
openssl req -new -key key.pem -out req.pem
|
||||||
|
|
||||||
|
The same but just using req:
|
||||||
|
|
||||||
|
openssl req -newkey rsa:1024 -keyout key.pem -out req.pem
|
||||||
|
|
||||||
|
Generate a self signed root certificate:
|
||||||
|
|
||||||
|
openssl req -x509 -newkey rsa:1024 -keyout key.pem -out req.pem
|
||||||
|
|
||||||
|
=head1 NOTES
|
||||||
|
|
||||||
|
The header and footer lines in the B<PEM> format contain the words
|
||||||
|
B<BEGIN CERTIFICATE REQUEST> and B<END CERTIFICATE REQUEST> some software
|
||||||
|
(for example some versions of Netscape certificate server) requires the
|
||||||
|
words B<BEGIN NEW CERTIFICATE REQUEST> and B<END NEW CERTIFICATE REQUEST>
|
||||||
|
instead.
|
||||||
|
|
||||||
|
The certificate requests generated by B<Xenroll> with MSIE have extensions
|
||||||
|
added. It includes the B<keyUsage> extension which determines the type of
|
||||||
|
key (signature only or general purpose) and any additional OIDs entered
|
||||||
|
by the script in an extendedKeyUsage extension.
|
||||||
|
|
||||||
|
=head1 DIAGNOSTICS
|
||||||
|
|
||||||
|
The following messages are frequently asked about:
|
||||||
|
|
||||||
|
Using configuration from /some/path/openssl.cnf
|
||||||
|
Unable to load config info
|
||||||
|
|
||||||
|
This is followed some time later by...
|
||||||
|
|
||||||
|
unable to find 'distinguished_name' in config
|
||||||
|
problems making Certificate Request
|
||||||
|
|
||||||
|
The first error message is the clue: it can't find the configuration
|
||||||
|
file! Certain operations (like examining a certificate request) don't
|
||||||
|
need a configuration file so its use isn't enforced. Generation of
|
||||||
|
certficates or requests however does need a configuration file. This
|
||||||
|
could be regarded as a bug.
|
||||||
|
|
||||||
|
Another puzzling message is this:
|
||||||
|
|
||||||
|
Attributes:
|
||||||
|
a0:00
|
||||||
|
|
||||||
|
this is displayed when no attributes are present and the request includes
|
||||||
|
the correct empty B<SET OF> structure (the DER encoding of which is 0xa0
|
||||||
|
0x00). If you just see:
|
||||||
|
|
||||||
|
Attributes:
|
||||||
|
|
||||||
|
then the B<SET OF> is missing and the encoding is technically invalid (but
|
||||||
|
it is tolerated). See the description of the command line option B<-asn1-kludge>
|
||||||
|
for more information.
|
||||||
|
|
||||||
|
=head1 ENVIRONMENT VARIABLES
|
||||||
|
|
||||||
|
The variable B<OPENSSL_CONF> if defined allows an alternative configuration
|
||||||
|
file location to be specified, it will be overridden by the B<-config> command
|
||||||
|
line switch if it is present. For compatability reasons the B<SSLEAY_CONF>
|
||||||
|
environment variable serves the same purpose but its use is discouraged.
|
||||||
|
|
||||||
|
=head1 BUGS
|
||||||
|
|
||||||
|
OpenSSLs handling of T61Strings (aka TeletexStrings) is broken: it effectively
|
||||||
|
treats them as ISO-8859-1 (latin 1), Netscape and MSIE have similar behaviour.
|
||||||
|
This can cause problems if you need characters that aren't available in
|
||||||
|
PrintableStrings and you don't want to or can't use BMPStrings.
|
||||||
|
|
||||||
|
As a consequence of the T61String handling the only correct way to represent
|
||||||
|
accented characters in OpenSSL is to use a BMPString: unfortunately Netscape
|
||||||
|
currently chokes on these. If you have to use accented characters with Netscape
|
||||||
|
and MSIE then you currently need to use the invalid T61String form.
|
||||||
|
|
||||||
|
The current prompting is not very friendly. It exits if you get the strings
|
||||||
|
wrong and doesn't allow you to confirm what you've just entered. Other things
|
||||||
|
like extensions in certificate requests are statically defined in the configuration
|
||||||
|
file. Some of these: like an email address in subjectAltName should be input
|
||||||
|
by the user.
|
||||||
|
|
||||||
|
There should be a way to have a friendly front end (e.g. perl script or GUI)
|
||||||
|
handle all user input and then just feed a "template" file into B<req> which
|
||||||
|
then silently creates the request or certificate. This would also shift the
|
||||||
|
responsibility for handling such problems as internationalisation of characters
|
||||||
|
onto the front end: the template could then just expect valid UTF8 character
|
||||||
|
strings for example.
|
||||||
|
|
||||||
|
=head1 SEE ALSO
|
||||||
|
|
||||||
|
x509(1), ca(1), genrsa(1), gendsa(1), config(5)
|
||||||
|
|
||||||
|
=cut
|
135
doc/man/rsa.pod
Normal file
135
doc/man/rsa.pod
Normal file
@ -0,0 +1,135 @@
|
|||||||
|
|
||||||
|
=pod
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
rsa - RSA key processing tool
|
||||||
|
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
B<openssl> B<rsa>
|
||||||
|
[B<-inform PEM|NET|DER>]
|
||||||
|
[B<-outform PEM|NET|DER>]
|
||||||
|
[B<-in filename>]
|
||||||
|
[B<-out filename>]
|
||||||
|
[B<-des>]
|
||||||
|
[B<-des3>]
|
||||||
|
[B<-idea>]
|
||||||
|
[B<-text>]
|
||||||
|
[B<-noout>]
|
||||||
|
[B<-modulus>]
|
||||||
|
[B<-check>]
|
||||||
|
[B<-pubin>]
|
||||||
|
[B<-pubout>]
|
||||||
|
|
||||||
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
The B<rsa> command processes RSA keys. They can be converted between various
|
||||||
|
forms and their components printed out. B<Note> this command uses the
|
||||||
|
traditional SSLeay compatible format for private key encryption: newer
|
||||||
|
applications should use the more secure PKCS#8 format using the B<pkcs8>
|
||||||
|
utility.
|
||||||
|
|
||||||
|
=head1 COMMAND OPTIONS
|
||||||
|
|
||||||
|
=over 4
|
||||||
|
|
||||||
|
=item B<-inform DER|NET|PEM>
|
||||||
|
|
||||||
|
This specifies the input format. The B<DER> option uses an ASN1 DER encoded
|
||||||
|
form compatible with the PKCS#1 RSAPrivateKey or RSAPublicKey format. The B<PEM>
|
||||||
|
form is the default format: it consists of the B<DER> format base64 encoded with
|
||||||
|
additional header and footer lines. The B<NET> form is a format compatible
|
||||||
|
with older Netscape servers and MS IIS, this uses unsalted RC4 for its
|
||||||
|
encryption It is not very secure and so should only be used when necessary.
|
||||||
|
|
||||||
|
=item B<-outform DER|NET|PEM>
|
||||||
|
|
||||||
|
This specifies the output format, the options have the same meaning as the
|
||||||
|
B<-inform> option.
|
||||||
|
|
||||||
|
=item B<-in filename>
|
||||||
|
|
||||||
|
This specifies the input filename to read a key from or standard input if this
|
||||||
|
option is not specified. If the key is encrypted a pass phrase will be
|
||||||
|
prompted for.
|
||||||
|
|
||||||
|
=item B<-out filename>
|
||||||
|
|
||||||
|
This specifies the output filename to write a key to or standard output by
|
||||||
|
is not specified. If any encryption options are set then a pass phrase will be
|
||||||
|
prompted for. The output filename should B<not> be the same as the input
|
||||||
|
filename.
|
||||||
|
|
||||||
|
=item B<-des|-des3|-idea>
|
||||||
|
|
||||||
|
These options encrypt the private key with the DES, triple DES, or the
|
||||||
|
IDEA ciphers respectively before outputting it. A pass phrase is prompted for.
|
||||||
|
If none of these options is specified the key is written in plain text. This
|
||||||
|
means that using the B<rsa> utility to read in an encrypted key with no
|
||||||
|
encryption option can be used to remove the pass phrase from a key, or by
|
||||||
|
setting the encryption options it can be use to add or change the pass phrase.
|
||||||
|
These options can only be used with PEM format output files.
|
||||||
|
|
||||||
|
=item B<-text>
|
||||||
|
|
||||||
|
prints out the various public or private key components in
|
||||||
|
plain text in addition to the encoded version.
|
||||||
|
|
||||||
|
=item B<-noout>
|
||||||
|
|
||||||
|
this option prevents output of the encoded version of the key.
|
||||||
|
|
||||||
|
=item B<-modulus>
|
||||||
|
|
||||||
|
this option prints out the value of the modulus of the key.
|
||||||
|
|
||||||
|
=item B<-check>
|
||||||
|
|
||||||
|
this option checks the consistency of an RSA private key.
|
||||||
|
|
||||||
|
=item B<-pubin>
|
||||||
|
|
||||||
|
by default a private key is input file with this option a public key is input
|
||||||
|
instead.
|
||||||
|
|
||||||
|
=item B<-pubout>
|
||||||
|
|
||||||
|
by default a private key is output with this option a public
|
||||||
|
key will be output instead. This option is automatically set if the input is
|
||||||
|
a public key.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head1 EXAMPLES
|
||||||
|
|
||||||
|
To remove the pass phrase on an RSA private key:
|
||||||
|
|
||||||
|
C<openssl rsa -in key.pem -out keyout.pem>
|
||||||
|
|
||||||
|
To encrypt a private key using triple DES:
|
||||||
|
|
||||||
|
C<openssl rsa -in key.pem -des3 -out keyout.pem>
|
||||||
|
|
||||||
|
To convert a private key from PEM to DER format:
|
||||||
|
|
||||||
|
C<openssl rsa -in key.pem -outform DER -out keyout.der>
|
||||||
|
|
||||||
|
To print out the components of a private key to standard output:
|
||||||
|
|
||||||
|
C<openssl rsa -in key.pem -text -noout>
|
||||||
|
|
||||||
|
To just output the public part of a private key:
|
||||||
|
|
||||||
|
C<openssl rsa -in key.pem -pubout -out pubkey.pem>
|
||||||
|
|
||||||
|
=head1 CAVEATS
|
||||||
|
|
||||||
|
It should be possible to read or produce PKCS#8 format encrypted RSA keys:
|
||||||
|
at present it isn't.
|
||||||
|
|
||||||
|
=head1 SEE ALSO
|
||||||
|
|
||||||
|
pkcs8(1), dsa(1), genrsa(1), gendsa(1)
|
||||||
|
|
||||||
|
=cut
|
56
doc/man/version.pod
Normal file
56
doc/man/version.pod
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
=pod
|
||||||
|
|
||||||
|
=head 1 NAME
|
||||||
|
|
||||||
|
version - print version information
|
||||||
|
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
=item B<openssl version>
|
||||||
|
[B<-a>]
|
||||||
|
[B<-v>]
|
||||||
|
[B<-b>]
|
||||||
|
[B<-o>]
|
||||||
|
[B<-f>]
|
||||||
|
[B<-p>]
|
||||||
|
|
||||||
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
This command is used to print out version information about OpenSSL.
|
||||||
|
|
||||||
|
=head1 OPTIONS
|
||||||
|
|
||||||
|
=over 4
|
||||||
|
|
||||||
|
=item B<-a>
|
||||||
|
|
||||||
|
all information, this is the same as setting all the other flags.
|
||||||
|
|
||||||
|
=item B<-v>
|
||||||
|
|
||||||
|
the current OpenSSL version.
|
||||||
|
|
||||||
|
=item B<-b>
|
||||||
|
|
||||||
|
the date the current version of OpenSSL was built.
|
||||||
|
|
||||||
|
=item B<-o>
|
||||||
|
|
||||||
|
option information: various options set when the library was built.
|
||||||
|
|
||||||
|
=item B<-c>
|
||||||
|
|
||||||
|
compilation flags.
|
||||||
|
|
||||||
|
=item B<-p>
|
||||||
|
|
||||||
|
platform setting.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head1 NOTES
|
||||||
|
|
||||||
|
The output of B<openssl version -a> would typically be used when sending
|
||||||
|
in a bug report.
|
||||||
|
|
||||||
|
=cut
|
400
doc/man/x509.pod
Normal file
400
doc/man/x509.pod
Normal file
@ -0,0 +1,400 @@
|
|||||||
|
|
||||||
|
=pod
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
x509 - Certificate display and signing utility
|
||||||
|
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
B<openssl> B<x509>
|
||||||
|
[B<-inform DER|PEM|NET>]
|
||||||
|
[B<-outform DER|PEM|NET>]
|
||||||
|
[B<-keyform DER|PEM>]
|
||||||
|
[B<-CAform DER|PEM>]
|
||||||
|
[B<-CAkeyform DER|PEM>]
|
||||||
|
[B<-in filename>]
|
||||||
|
[B<-out filename>]
|
||||||
|
[B<-serial>]
|
||||||
|
[B<-hash>]
|
||||||
|
[B<-subject>]
|
||||||
|
[B<-issuer>]
|
||||||
|
[B<-startdate>]
|
||||||
|
[B<-enddate>]
|
||||||
|
[B<-purpose>]
|
||||||
|
[B<-dates>]
|
||||||
|
[B<-modulus>]
|
||||||
|
[B<-fingerprint>]
|
||||||
|
[B<-alias>]
|
||||||
|
[B<-noout>]
|
||||||
|
[B<-trustout>]
|
||||||
|
[B<-clrtrust>]
|
||||||
|
[B<-clrnotrust>]
|
||||||
|
[B<-addtrust arg>]
|
||||||
|
[B<-addnotrust arg>]
|
||||||
|
[B<-setalias arg>]
|
||||||
|
[B<-days arg>]
|
||||||
|
[B<-signkey filename>]
|
||||||
|
[B<-x509toreq>]
|
||||||
|
[B<-req>]
|
||||||
|
[B<-CA filename>]
|
||||||
|
[B<-CAkey filename>]
|
||||||
|
[B<-CAcreateserial>]
|
||||||
|
[B<-CAserial filename>]
|
||||||
|
[B<-text>]
|
||||||
|
[B<-C>]
|
||||||
|
[B<-md2|-md5|-sha1|-mdc2>]
|
||||||
|
[B<-clrext>]
|
||||||
|
[B<-extfile filename>]
|
||||||
|
[B<-extensions section>]
|
||||||
|
|
||||||
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
The B<x509> command is a multi purpose certificate utility. It can be
|
||||||
|
used to display certificate information, convert certificates to
|
||||||
|
various forms, sign certificate requests like a "mini CA" or edit
|
||||||
|
certificate trust settings.
|
||||||
|
|
||||||
|
Since there are a large number of options they will split up into
|
||||||
|
various sections.
|
||||||
|
|
||||||
|
|
||||||
|
=head1 INPUT AND OUTPUT OPTIONS
|
||||||
|
|
||||||
|
=over 4
|
||||||
|
|
||||||
|
=item B<-inform DER|PEM|NET>
|
||||||
|
|
||||||
|
This specifies the input format normally the command will expect an X509
|
||||||
|
certificate but this can change if other options such as B<-req> are
|
||||||
|
present. The DER format is the DER encoding of the certificate and PEM
|
||||||
|
is the base64 encoding of the DER encoding with header and footer lines
|
||||||
|
added. The NET option is an obscure Netscape server format that is now
|
||||||
|
obsolete.
|
||||||
|
|
||||||
|
=item B<-outform DER|PEM|NET>
|
||||||
|
|
||||||
|
This specifies the output format, the options have the same meaning as the
|
||||||
|
B<-inform> option.
|
||||||
|
|
||||||
|
=item B<-in filename>
|
||||||
|
|
||||||
|
This specifies the input filename to read a certificate from or standard input
|
||||||
|
if this option is not specified.
|
||||||
|
|
||||||
|
=item B<-out filename>
|
||||||
|
|
||||||
|
This specifies the output filename to write to or standard output by
|
||||||
|
default.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head1 DISPLAY OPTIONS
|
||||||
|
|
||||||
|
Note: the B<-alias> and B<-purpose> options are also display options
|
||||||
|
but are desribed in the B<TRUST OPTIONS> section.
|
||||||
|
|
||||||
|
=over 4
|
||||||
|
|
||||||
|
=item B<-text>
|
||||||
|
|
||||||
|
prints out the certificate in text form. Full details are output including the
|
||||||
|
public key, signature algorithms, issuer and subject names, serial number
|
||||||
|
any extensions present and any trust settings.
|
||||||
|
|
||||||
|
=item B<-noout>
|
||||||
|
|
||||||
|
this option prevents output of the encoded version of the request.
|
||||||
|
|
||||||
|
=item B<-modulus>
|
||||||
|
|
||||||
|
this option prints out the value of the modulus of the public key
|
||||||
|
contained in the certificate.
|
||||||
|
|
||||||
|
=item B<-serial>
|
||||||
|
|
||||||
|
outputs the certificate serial number.
|
||||||
|
|
||||||
|
=item B<-hash>
|
||||||
|
|
||||||
|
outputs the "hash" of the certificate issuer name. This is used in OpenSSL to
|
||||||
|
form an index to allow certificates in a directory to be lookup up by issuer
|
||||||
|
name.
|
||||||
|
|
||||||
|
=item B<-subject>
|
||||||
|
|
||||||
|
outputs the subject name.
|
||||||
|
|
||||||
|
=item B<-issuer>
|
||||||
|
|
||||||
|
outputs the issuer name.
|
||||||
|
|
||||||
|
=item B<-startdate>
|
||||||
|
|
||||||
|
prints out the start date of the certificate, that is the notBefore date.
|
||||||
|
|
||||||
|
=item B<-enddate>
|
||||||
|
|
||||||
|
prints out the expiry date of the certificate, that is the notAfter date.
|
||||||
|
|
||||||
|
=item B<-dates>
|
||||||
|
|
||||||
|
prints out the start and expiry dates of a certificate.
|
||||||
|
|
||||||
|
=item B<-fingerprint>
|
||||||
|
|
||||||
|
prints out the MD5 digest of the whole certificate.
|
||||||
|
|
||||||
|
=item B<-C>
|
||||||
|
|
||||||
|
this outputs the certificate in the form of a C source file.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head1 TRUST SETTINGS
|
||||||
|
|
||||||
|
Please note these options are currently experimental and may well change.
|
||||||
|
|
||||||
|
A B<trusted certificate> is an ordinary certificate which has several
|
||||||
|
additional pieces of information attached to it such as the permitted
|
||||||
|
and prohibited uses of the certificate and an "alias".
|
||||||
|
|
||||||
|
Normally when a certificate is being verified at least one certificate
|
||||||
|
must be "trusted". By default a trusted certificate must be stored
|
||||||
|
locally and must be a root CA: any certificate chain ending in this CA
|
||||||
|
is then usable for any purpose.
|
||||||
|
|
||||||
|
Adding trust settings modifies this behaviour: if a certificate is being
|
||||||
|
verified and one of the certificate chain is marked as trusted for that
|
||||||
|
specific purpose then the verify succeeds without looking up any more
|
||||||
|
certificates. Similarly if the use is prohibited then the certificate
|
||||||
|
is automatically rejected. If a purpose is neither permitted nor prohibited
|
||||||
|
then the certificate extensions are checked for consistency with the required
|
||||||
|
purpose and the process continues.
|
||||||
|
|
||||||
|
If a root CA is reached then it must be marked as trusted for the required
|
||||||
|
purpose or the verify fails.
|
||||||
|
|
||||||
|
See the description of the B<verify> utility for more information on the
|
||||||
|
meaning of trust settings.
|
||||||
|
|
||||||
|
=over 4
|
||||||
|
|
||||||
|
=item B<-trustout>
|
||||||
|
|
||||||
|
this causes B<x509> to output a B<trusted> certificate. An ordinary
|
||||||
|
or trusted certificate can be input but by default an ordinary
|
||||||
|
certificate is output and any trust settings are discarded. With the
|
||||||
|
B<-trustout> option a trusted certificate is output. A trusted
|
||||||
|
certificate is automatically output if any trust settings are modified.
|
||||||
|
|
||||||
|
=item B<-setalias arg>
|
||||||
|
|
||||||
|
sets the alias of the certificate. This will allow the certificate
|
||||||
|
to be reffered to using a nickname for example "Steve's Certificate".
|
||||||
|
|
||||||
|
=item B<-alias>
|
||||||
|
|
||||||
|
outputs the certificate alias, if any.
|
||||||
|
|
||||||
|
=item B<-clrtrust>
|
||||||
|
|
||||||
|
clears all the permitted or trusted uses of the certificate.
|
||||||
|
|
||||||
|
=item B<-clrnotrust>
|
||||||
|
|
||||||
|
clears all the prohibited or untrusted uses of the certificate.
|
||||||
|
|
||||||
|
=item B<-addtrust arg>
|
||||||
|
|
||||||
|
adds a trusted certificate use. Currently acceptable values
|
||||||
|
are all (any purpose), sslclient (SSL client use), sslserver
|
||||||
|
(SSL server use) email (S/MIME email) and objsign (Object signing).
|
||||||
|
|
||||||
|
=item B<-addnotrust arg>
|
||||||
|
|
||||||
|
adds a prohibited use. It accepts the same values as the B<-addtrust>
|
||||||
|
option.
|
||||||
|
|
||||||
|
=item B<-purpose>
|
||||||
|
|
||||||
|
this option performs tests on the certificate extensions and outputs
|
||||||
|
the results. It checks to see if the certificate can be used as an
|
||||||
|
end user or CA certificate for various purposes. Since many commercial
|
||||||
|
certificates have invalid extensions it is possible that warnings will
|
||||||
|
be output for some certificates. Known problems have work arounds added.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head1 SIGNING OPTIONS
|
||||||
|
|
||||||
|
The B<x509> utility can be used to sign certificates and requests: it
|
||||||
|
can thus behave like a "mini CA".
|
||||||
|
|
||||||
|
=over 4
|
||||||
|
|
||||||
|
=item B<-signkey filename>
|
||||||
|
|
||||||
|
this option causes the input file to be self signed using the supplied
|
||||||
|
private key.
|
||||||
|
|
||||||
|
If the input file is a certificate it sets the issuer name to the
|
||||||
|
subject name (i.e. makes it self signed) changes the public key to the
|
||||||
|
supplied value and changes the start and end dates. The start date is
|
||||||
|
set to the current time and the end date is set to a value determined
|
||||||
|
by the B<-days> option. Any certificate extensions are retained unless
|
||||||
|
the B<-clrext> option is supplied.
|
||||||
|
|
||||||
|
If the input is a certificate request then a self signed certificate
|
||||||
|
is created using the supplied private key using the subject name in
|
||||||
|
the request.
|
||||||
|
|
||||||
|
=item B<-clrext>
|
||||||
|
|
||||||
|
delete any extensions from a certificate. This option is used when a
|
||||||
|
certificate is being created from another certificate (for example with
|
||||||
|
the B<-signkey> or the B<-CA> options). Normally all extensions are
|
||||||
|
retained.
|
||||||
|
|
||||||
|
=item B<-keyform PEM|DER>
|
||||||
|
|
||||||
|
specifies the format (DER or PEM) of the private key file used in the
|
||||||
|
B<-signkey> option.
|
||||||
|
|
||||||
|
=item B<-days arg>
|
||||||
|
|
||||||
|
specifies the number of days to make a certificate valid for. The default
|
||||||
|
is 30 days.
|
||||||
|
|
||||||
|
=item B<-x509toreq>
|
||||||
|
|
||||||
|
converts a certificate into a certificate request. The B<-signkey> option
|
||||||
|
is used to pass the required private key.
|
||||||
|
|
||||||
|
=item B<-req>
|
||||||
|
|
||||||
|
by default a certificate is expected on input. With this option a
|
||||||
|
certificate request is expected instead.
|
||||||
|
|
||||||
|
=item B<-CA filename>
|
||||||
|
|
||||||
|
specifies the CA certificate to be used for signing. When this option is
|
||||||
|
present B<x509> behaves like a "mini CA". The input file is signed by this
|
||||||
|
CA using this option: that is its issuer name is set to the subject name
|
||||||
|
of the CA and it is digitally signed using the CAs private key.
|
||||||
|
|
||||||
|
This option is normally combined with the B<-req> option. Without the
|
||||||
|
B<-req> option the input is a certificate which must be self signed.
|
||||||
|
|
||||||
|
=item B<-CAkey filename>
|
||||||
|
|
||||||
|
sets the CA private key to sign a certificate with. If this option is
|
||||||
|
not specified then it is assumed that the CA private key is present in
|
||||||
|
the CA certificate file.
|
||||||
|
|
||||||
|
=item B<-CAserial filename>
|
||||||
|
|
||||||
|
sets the CA serial number file to use.
|
||||||
|
|
||||||
|
When the B<-CA> option is used to sign a certificate it uses a serial
|
||||||
|
number specified in a file. This file consist of one line containing
|
||||||
|
an even number of hex digits with the serial number to use. After each
|
||||||
|
use the serial number is incremented and written out to the file again.
|
||||||
|
|
||||||
|
The default filename consists of the CA certificate file base name with
|
||||||
|
".srl" appended. For example if the CA certificate file is called
|
||||||
|
"mycacert.pem" it expects to find a serial number file called "mycacert.srl".
|
||||||
|
|
||||||
|
=item B<-CAcreateserial filename>
|
||||||
|
|
||||||
|
with this option the CA serial number file is created if it does not exist:
|
||||||
|
it will contain the serial number "01". Normally if the B<-CA> option is
|
||||||
|
specified and the serial number file does not exist it is an error.
|
||||||
|
|
||||||
|
=item B<-md2|-md5|-sha1|-mdc2>
|
||||||
|
|
||||||
|
the digest to sign with. It affects all commands that sign a certificate
|
||||||
|
or request.
|
||||||
|
|
||||||
|
=item B<-extfile filename>
|
||||||
|
|
||||||
|
file containing certificate extensions to use. If not specified then
|
||||||
|
no extensions are added to the certificate.
|
||||||
|
|
||||||
|
=item B<-extensions section>
|
||||||
|
|
||||||
|
the section to add certificate extensions from. If this option is not
|
||||||
|
specified then the extensions should either be contained in the unnamed
|
||||||
|
(default) section or the default section should contain a variable called
|
||||||
|
"extensions" which contains the section to use.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head1 EXAMPLES
|
||||||
|
|
||||||
|
Note: in these examples the '\' means the example should be all on one
|
||||||
|
line.
|
||||||
|
|
||||||
|
Display the contents of a certificate:
|
||||||
|
|
||||||
|
openssl x509 -in cert.pem -noout -text
|
||||||
|
|
||||||
|
Displa the certificate serial number:
|
||||||
|
|
||||||
|
openssl x509 -in cert.pem -noout -serial
|
||||||
|
|
||||||
|
|
||||||
|
Convert a certificate from PEM to DER format:
|
||||||
|
|
||||||
|
openssl x509 -in cert.pem -inform PEM -out cert.der -outform DER
|
||||||
|
|
||||||
|
Convert a certificate to a certificate request:
|
||||||
|
|
||||||
|
openssl x509 -x509toreq -in cert.pem -out req.pem -signkey key.pem
|
||||||
|
|
||||||
|
Convert a certificate request into a self signed certificate using
|
||||||
|
extensions for a CA:
|
||||||
|
|
||||||
|
openssl x509 -req -in careq.pem -config openssl.cnf -extensions v3_ca \
|
||||||
|
-signkey key.pem -out cacert.pem
|
||||||
|
|
||||||
|
Sign a certificate request using the CA certifcate above and add user
|
||||||
|
certificate extensions:
|
||||||
|
|
||||||
|
openssl x509 -req -in req.pem -config openssl.cnf -extensions v3_usr \
|
||||||
|
-CA cacert.pem -CAkey key.pem -CAcreateserial
|
||||||
|
|
||||||
|
|
||||||
|
Set a certificate to be trusted for SSL client use and change set its alias to
|
||||||
|
"Steve's Class 1 CA"
|
||||||
|
|
||||||
|
openssl x509 -in cert.pem -addtrust sslclient \
|
||||||
|
-alias "Steve's Class 1 CA" -out trust.pem
|
||||||
|
|
||||||
|
=head1 BUGS
|
||||||
|
|
||||||
|
The way DNs are printed is in a "historical SSLeay" format which doesn't
|
||||||
|
follow any published standard. It should follow some standard like RFC2253
|
||||||
|
or RFC1779 with options to make the stuff more readable.
|
||||||
|
|
||||||
|
Extensions in certificates are not transferred to certificate requests and
|
||||||
|
vice versa.
|
||||||
|
|
||||||
|
It is possible to produce invalid certificates or requests by specifying the
|
||||||
|
wrong private key or using inconsistent options in some cases: these should
|
||||||
|
be checked.
|
||||||
|
|
||||||
|
There should be options to explicitly set such things are start and end
|
||||||
|
dates rather than an offset from the current time.
|
||||||
|
|
||||||
|
The code to implement the verify behaviour described in the B<TRUST SETTINGS>
|
||||||
|
is currently being developed. It thus describes the intended behavior rather
|
||||||
|
than the current behaviour. It is hoped that it will represent reality in
|
||||||
|
OpenSSL 0.9.5 and later.
|
||||||
|
|
||||||
|
|
||||||
|
=head1 SEE ALSO
|
||||||
|
|
||||||
|
req(1), ca(1), genrsa(1), gendsa(1)
|
||||||
|
|
||||||
|
=cut
|
Loading…
x
Reference in New Issue
Block a user