Blame doc/man1/req.pod

Packit Service 084de1
=pod
Packit Service 084de1
Packit Service 084de1
=head1 NAME
Packit Service 084de1
Packit Service 084de1
openssl-req,
Packit Service 084de1
req - PKCS#10 certificate request and certificate generating utility
Packit Service 084de1
Packit Service 084de1
=head1 SYNOPSIS
Packit Service 084de1
Packit Service 084de1
B<openssl> B<req>
Packit Service 084de1
[B<-help>]
Packit Service 084de1
[B<-inform PEM|DER>]
Packit Service 084de1
[B<-outform PEM|DER>]
Packit Service 084de1
[B<-in filename>]
Packit Service 084de1
[B<-passin arg>]
Packit Service 084de1
[B<-out filename>]
Packit Service 084de1
[B<-passout arg>]
Packit Service 084de1
[B<-text>]
Packit Service 084de1
[B<-pubkey>]
Packit Service 084de1
[B<-noout>]
Packit Service 084de1
[B<-verify>]
Packit Service 084de1
[B<-modulus>]
Packit Service 084de1
[B<-new>]
Packit Service 084de1
[B<-rand file...>]
Packit Service 084de1
[B<-writerand file>]
Packit Service 084de1
[B<-newkey rsa:bits>]
Packit Service 084de1
[B<-newkey alg:file>]
Packit Service 084de1
[B<-nodes>]
Packit Service 084de1
[B<-key filename>]
Packit Service 084de1
[B<-keyform PEM|DER>]
Packit Service 084de1
[B<-keyout filename>]
Packit Service 084de1
[B<-keygen_engine id>]
Packit Service 084de1
[B<-I<digest>>]
Packit Service 084de1
[B<-config filename>]
Packit Service 084de1
[B<-multivalue-rdn>]
Packit Service 084de1
[B<-x509>]
Packit Service 084de1
[B<-days n>]
Packit Service 084de1
[B<-set_serial n>]
Packit Service 084de1
[B<-newhdr>]
Packit Service 084de1
[B<-addext ext>]
Packit Service 084de1
[B<-extensions section>]
Packit Service 084de1
[B<-reqexts section>]
Packit Service 084de1
[B<-precert>]
Packit Service 084de1
[B<-utf8>]
Packit Service 084de1
[B<-nameopt>]
Packit Service 084de1
[B<-reqopt>]
Packit Service 084de1
[B<-subject>]
Packit Service 084de1
[B<-subj arg>]
Packit Service 084de1
[B<-sigopt nm:v>]
Packit Service 084de1
[B<-batch>]
Packit Service 084de1
[B<-verbose>]
Packit Service 084de1
[B<-engine id>]
Packit Service 084de1
Packit Service 084de1
=head1 DESCRIPTION
Packit Service 084de1
Packit Service 084de1
The B<req> command primarily creates and processes certificate requests
Packit Service 084de1
in PKCS#10 format. It can additionally create self signed certificates
Packit Service 084de1
for use as root CAs for example.
Packit Service 084de1
Packit Service 084de1
=head1 OPTIONS
Packit Service 084de1
Packit Service 084de1
=over 4
Packit Service 084de1
Packit Service 084de1
=item B<-help>
Packit Service 084de1
Packit Service 084de1
Print out a usage message.
Packit Service 084de1
Packit Service 084de1
=item B<-inform DER|PEM>
Packit Service 084de1
Packit Service 084de1
This specifies the input format. The B<DER> option uses an ASN1 DER encoded
Packit Service 084de1
form compatible with the PKCS#10. The B<PEM> form is the default format: it
Packit Service 084de1
consists of the B<DER> format base64 encoded with additional header and
Packit Service 084de1
footer lines.
Packit Service 084de1
Packit Service 084de1
=item B<-outform DER|PEM>
Packit Service 084de1
Packit Service 084de1
This specifies the output format, the options have the same meaning and default
Packit Service 084de1
as the B<-inform> option.
Packit Service 084de1
Packit Service 084de1
=item B<-in filename>
Packit Service 084de1
Packit Service 084de1
This specifies the input filename to read a request from or standard input
Packit Service 084de1
if this option is not specified. A request is only read if the creation
Packit Service 084de1
options (B<-new> and B<-newkey>) are not specified.
Packit Service 084de1
Packit Service 084de1
=item B<-sigopt nm:v>
Packit Service 084de1
Packit Service 084de1
Pass options to the signature algorithm during sign or verify operations.
Packit Service 084de1
Names and values of these options are algorithm-specific.
Packit Service 084de1
Packit Service 084de1
=item B<-passin arg>
Packit Service 084de1
Packit Service 084de1
The input file password source. For more information about the format of B<arg>
Packit Service 084de1
see the B<PASS PHRASE ARGUMENTS> section in L<openssl(1)>.
Packit Service 084de1
Packit Service 084de1
=item B<-out filename>
Packit Service 084de1
Packit Service 084de1
This specifies the output filename to write to or standard output by
Packit Service 084de1
default.
Packit Service 084de1
Packit Service 084de1
=item B<-passout arg>
Packit Service 084de1
Packit Service 084de1
The output file password source. For more information about the format of B<arg>
Packit Service 084de1
see the B<PASS PHRASE ARGUMENTS> section in L<openssl(1)>.
Packit Service 084de1
Packit Service 084de1
=item B<-text>
Packit Service 084de1
Packit Service 084de1
Prints out the certificate request in text form.
Packit Service 084de1
Packit Service 084de1
=item B<-subject>
Packit Service 084de1
Packit Service 084de1
Prints out the request subject (or certificate subject if B<-x509> is
Packit Service 084de1
specified)
Packit Service 084de1
Packit Service 084de1
=item B<-pubkey>
Packit Service 084de1
Packit Service 084de1
Outputs the public key.
Packit Service 084de1
Packit Service 084de1
=item B<-noout>
Packit Service 084de1
Packit Service 084de1
This option prevents output of the encoded version of the request.
Packit Service 084de1
Packit Service 084de1
=item B<-modulus>
Packit Service 084de1
Packit Service 084de1
This option prints out the value of the modulus of the public key
Packit Service 084de1
contained in the request.
Packit Service 084de1
Packit Service 084de1
=item B<-verify>
Packit Service 084de1
Packit Service 084de1
Verifies the signature on the request.
Packit Service 084de1
Packit Service 084de1
=item B<-new>
Packit Service 084de1
Packit Service 084de1
This option generates a new certificate request. It will prompt
Packit Service 084de1
the user for the relevant field values. The actual fields
Packit Service 084de1
prompted for and their maximum and minimum sizes are specified
Packit Service 084de1
in the configuration file and any requested extensions.
Packit Service 084de1
Packit Service 084de1
If the B<-key> option is not used it will generate a new RSA private
Packit Service 084de1
key using information specified in the configuration file.
Packit Service 084de1
Packit Service 084de1
=item B<-rand file...>
Packit Service 084de1
Packit Service 084de1
A file or files containing random data used to seed the random number
Packit Service 084de1
generator.
Packit Service 084de1
Multiple files can be specified separated by an OS-dependent character.
Packit Service 084de1
The separator is B<;> for MS-Windows, B<,> for OpenVMS, and B<:> for
Packit Service 084de1
all others.
Packit Service 084de1
Packit Service 084de1
=item [B<-writerand file>]
Packit Service 084de1
Packit Service 084de1
Writes random data to the specified I<file> upon exit.
Packit Service 084de1
This can be used with a subsequent B<-rand> flag.
Packit Service 084de1
Packit Service 084de1
=item B<-newkey arg>
Packit Service 084de1
Packit Service 084de1
This option creates a new certificate request and a new private
Packit Service 084de1
key. The argument takes one of several forms. B<rsa:nbits>, where
Packit Service 084de1
B<nbits> is the number of bits, generates an RSA key B<nbits>
Packit Service 084de1
in size. If B<nbits> is omitted, i.e. B<-newkey rsa> specified,
Packit Service 084de1
the default key size, specified in the configuration file is used.
Packit Service 084de1
Packit Service 084de1
All other algorithms support the B<-newkey alg:file> form, where file may be
Packit Service 084de1
an algorithm parameter file, created by the B<genpkey -genparam> command
Packit Service 084de1
or and X.509 certificate for a key with appropriate algorithm.
Packit Service 084de1
Packit Service 084de1
B<param:file> generates a key using the parameter file or certificate B<file>,
Packit Service 084de1
the algorithm is determined by the parameters. B<algname:file> use algorithm
Packit Service 084de1
B<algname> and parameter file B<file>: the two algorithms must match or an
Packit Service 084de1
error occurs. B<algname> just uses algorithm B<algname>, and parameters,
Packit Service 084de1
if necessary should be specified via B<-pkeyopt> parameter.
Packit Service 084de1
Packit Service 084de1
B<dsa:filename> generates a DSA key using the parameters
Packit Service 084de1
in the file B<filename>. B<ec:filename> generates EC key (usable both with
Packit Service 084de1
ECDSA or ECDH algorithms), B<gost2001:filename> generates GOST R
Packit Service 084de1
34.10-2001 key (requires B<ccgost> engine configured in the configuration
Packit Service 084de1
file). If just B<gost2001> is specified a parameter set should be
Packit Service 084de1
specified by B<-pkeyopt paramset:X>
Packit Service 084de1
Packit Service 084de1
Packit Service 084de1
=item B<-pkeyopt opt:value>
Packit Service 084de1
Packit Service 084de1
Set the public key algorithm option B<opt> to B<value>. The precise set of
Packit Service 084de1
options supported depends on the public key algorithm used and its
Packit Service 084de1
implementation. See B<KEY GENERATION OPTIONS> in the B<genpkey> manual page
Packit Service 084de1
for more details.
Packit Service 084de1
Packit Service 084de1
=item B<-key filename>
Packit Service 084de1
Packit Service 084de1
This specifies the file to read the private key from. It also
Packit Service 084de1
accepts PKCS#8 format private keys for PEM format files.
Packit Service 084de1
Packit Service 084de1
=item B<-keyform PEM|DER>
Packit Service 084de1
Packit Service 084de1
The format of the private key file specified in the B<-key>
Packit Service 084de1
argument. PEM is the default.
Packit Service 084de1
Packit Service 084de1
=item B<-keyout filename>
Packit Service 084de1
Packit Service 084de1
This gives the filename to write the newly created private key to.
Packit Service 084de1
If this option is not specified then the filename present in the
Packit Service 084de1
configuration file is used.
Packit Service 084de1
Packit Service 084de1
=item B<-nodes>
Packit Service 084de1
Packit Service 084de1
If this option is specified then if a private key is created it
Packit Service 084de1
will not be encrypted.
Packit Service 084de1
Packit Service 084de1
=item B<-I<digest>>
Packit Service 084de1
Packit Service 084de1
This specifies the message digest to sign the request.
Packit Service 084de1
Any digest supported by the OpenSSL B<dgst> command can be used.
Packit Service 084de1
This overrides the digest algorithm specified in
Packit Service 084de1
the configuration file.
Packit Service 084de1
Packit Service 084de1
Some public key algorithms may override this choice. For instance, DSA
Packit Service 084de1
signatures always use SHA1, GOST R 34.10 signatures always use
Packit Service 084de1
GOST R 34.11-94 (B<-md_gost94>), Ed25519 and Ed448 never use any digest.
Packit Service 084de1
Packit Service 084de1
=item B<-config filename>
Packit Service 084de1
Packit Service 084de1
This allows an alternative configuration file to be specified.
Packit Service 084de1
Optional; for a description of the default value,
Packit Service 084de1
see L<openssl(1)/COMMAND SUMMARY>.
Packit Service 084de1
Packit Service 084de1
=item B<-subj arg>
Packit Service 084de1
Packit Service 084de1
Sets subject name for new request or supersedes the subject name
Packit Service 084de1
when processing a request.
Packit Service 084de1
The arg must be formatted as I</type0=value0/type1=value1/type2=...>.
Packit Service 084de1
Keyword characters may be escaped by \ (backslash), and whitespace is retained.
Packit Service 084de1
Empty values are permitted, but the corresponding type will not be included
Packit Service 084de1
in the request.
Packit Service 084de1
Packit Service 084de1
=item B<-multivalue-rdn>
Packit Service 084de1
Packit Service 084de1
This option causes the -subj argument to be interpreted with full
Packit Service 084de1
support for multivalued RDNs. Example:
Packit Service 084de1
Packit Service 084de1
I</DC=org/DC=OpenSSL/DC=users/UID=123456+CN=John Doe>
Packit Service 084de1
Packit Service 084de1
If -multi-rdn is not used then the UID value is I<123456+CN=John Doe>.
Packit Service 084de1
Packit Service 084de1
=item B<-x509>
Packit Service 084de1
Packit Service 084de1
This option outputs a self signed certificate instead of a certificate
Packit Service 084de1
request. This is typically used to generate a test certificate or
Packit Service 084de1
a self signed root CA. The extensions added to the certificate
Packit Service 084de1
(if any) are specified in the configuration file. Unless specified
Packit Service 084de1
using the B<set_serial> option, a large random number will be used for
Packit Service 084de1
the serial number.
Packit Service 084de1
Packit Service 084de1
If existing request is specified with the B<-in> option, it is converted
Packit Service 084de1
to the self signed certificate otherwise new request is created.
Packit Service 084de1
Packit Service 084de1
=item B<-days n>
Packit Service 084de1
Packit Service 084de1
When the B<-x509> option is being used this specifies the number of
Packit Service 084de1
days to certify the certificate for, otherwise it is ignored. B<n> should
Packit Service 084de1
be a positive integer. The default is 30 days.
Packit Service 084de1
Packit Service 084de1
=item B<-set_serial n>
Packit Service 084de1
Packit Service 084de1
Serial number to use when outputting a self signed certificate. This
Packit Service 084de1
may be specified as a decimal value or a hex value if preceded by B<0x>.
Packit Service 084de1
Packit Service 084de1
=item B<-addext ext>
Packit Service 084de1
Packit Service 084de1
Add a specific extension to the certificate (if the B<-x509> option is
Packit Service 084de1
present) or certificate request.  The argument must have the form of
Packit Service 084de1
a key=value pair as it would appear in a config file.
Packit Service 084de1
Packit Service 084de1
This option can be given multiple times.
Packit Service 084de1
Packit Service 084de1
=item B<-extensions section>
Packit Service 084de1
Packit Service 084de1
=item B<-reqexts section>
Packit Service 084de1
Packit Service 084de1
These options specify alternative sections to include certificate
Packit Service 084de1
extensions (if the B<-x509> option is present) or certificate
Packit Service 084de1
request extensions. This allows several different sections to
Packit Service 084de1
be used in the same configuration file to specify requests for
Packit Service 084de1
a variety of purposes.
Packit Service 084de1
Packit Service 084de1
=item B<-precert>
Packit Service 084de1
Packit Service 084de1
A poison extension will be added to the certificate, making it a
Packit Service 084de1
"pre-certificate" (see RFC6962). This can be submitted to Certificate
Packit Service 084de1
Transparency logs in order to obtain signed certificate timestamps (SCTs).
Packit Service 084de1
These SCTs can then be embedded into the pre-certificate as an extension, before
Packit Service 084de1
removing the poison and signing the certificate.
Packit Service 084de1
Packit Service 084de1
This implies the B<-new> flag.
Packit Service 084de1
Packit Service 084de1
=item B<-utf8>
Packit Service 084de1
Packit Service 084de1
This option causes field values to be interpreted as UTF8 strings, by
Packit Service 084de1
default they are interpreted as ASCII. This means that the field
Packit Service 084de1
values, whether prompted from a terminal or obtained from a
Packit Service 084de1
configuration file, must be valid UTF8 strings.
Packit Service 084de1
Packit Service 084de1
=item B<-nameopt option>
Packit Service 084de1
Packit Service 084de1
Option which determines how the subject or issuer names are displayed. The
Packit Service 084de1
B<option> argument can be a single option or multiple options separated by
Packit Service 084de1
commas.  Alternatively the B<-nameopt> switch may be used more than once to
Packit Service 084de1
set multiple options. See the L<x509(1)> manual page for details.
Packit Service 084de1
Packit Service 084de1
=item B<-reqopt>
Packit Service 084de1
Packit Service 084de1
Customise the output format used with B<-text>. The B<option> argument can be
Packit Service 084de1
a single option or multiple options separated by commas.
Packit Service 084de1
Packit Service 084de1
See discussion of the  B<-certopt> parameter in the L<x509(1)>
Packit Service 084de1
command.
Packit Service 084de1
Packit Service 084de1
=item B<-newhdr>
Packit Service 084de1
Packit Service 084de1
Adds the word B<NEW> to the PEM file header and footer lines on the outputted
Packit Service 084de1
request. Some software (Netscape certificate server) and some CAs need this.
Packit Service 084de1
Packit Service 084de1
=item B<-batch>
Packit Service 084de1
Packit Service 084de1
Non-interactive mode.
Packit Service 084de1
Packit Service 084de1
=item B<-verbose>
Packit Service 084de1
Packit Service 084de1
Print extra details about the operations being performed.
Packit Service 084de1
Packit Service 084de1
=item B<-engine id>
Packit Service 084de1
Packit Service 084de1
Specifying an engine (by its unique B<id> string) will cause B<req>
Packit Service 084de1
to attempt to obtain a functional reference to the specified engine,
Packit Service 084de1
thus initialising it if needed. The engine will then be set as the default
Packit Service 084de1
for all available algorithms.
Packit Service 084de1
Packit Service 084de1
=item B<-keygen_engine id>
Packit Service 084de1
Packit Service 084de1
Specifies an engine (by its unique B<id> string) which would be used
Packit Service 084de1
for key generation operations.
Packit Service 084de1
Packit Service 084de1
=back
Packit Service 084de1
Packit Service 084de1
=head1 CONFIGURATION FILE FORMAT
Packit Service 084de1
Packit Service 084de1
The configuration options are specified in the B<req> section of
Packit Service 084de1
the configuration file. As with all configuration files if no
Packit Service 084de1
value is specified in the specific section (i.e. B<req>) then
Packit Service 084de1
the initial unnamed or B<default> section is searched too.
Packit Service 084de1
Packit Service 084de1
The options available are described in detail below.
Packit Service 084de1
Packit Service 084de1
=over 4
Packit Service 084de1
Packit Service 084de1
=item B<input_password output_password>
Packit Service 084de1
Packit Service 084de1
The passwords for the input private key file (if present) and
Packit Service 084de1
the output private key file (if one will be created). The
Packit Service 084de1
command line options B<passin> and B<passout> override the
Packit Service 084de1
configuration file values.
Packit Service 084de1
Packit Service 084de1
=item B<default_bits>
Packit Service 084de1
Packit Service 084de1
Specifies the default key size in bits.
Packit Service 084de1
Packit Service 084de1
This option is used in conjunction with the B<-new> option to generate
Packit Service 084de1
a new key. It can be overridden by specifying an explicit key size in
Packit Service 084de1
the B<-newkey> option. The smallest accepted key size is 512 bits. If
Packit Service 084de1
no key size is specified then 2048 bits is used.
Packit Service 084de1
Packit Service 084de1
=item B<default_keyfile>
Packit Service 084de1
Packit Service 084de1
This is the default filename to write a private key to. If not
Packit Service 084de1
specified the key is written to standard output. This can be
Packit Service 084de1
overridden by the B<-keyout> option.
Packit Service 084de1
Packit Service 084de1
=item B<oid_file>
Packit Service 084de1
Packit Service 084de1
This specifies a file containing additional B<OBJECT IDENTIFIERS>.
Packit Service 084de1
Each line of the file should consist of the numerical form of the
Packit Service 084de1
object identifier followed by white space then the short name followed
Packit Service 084de1
by white space and finally the long name.
Packit Service 084de1
Packit Service 084de1
=item B<oid_section>
Packit Service 084de1
Packit Service 084de1
This specifies a section in the configuration file containing extra
Packit Service 084de1
object identifiers. Each line should consist of the short name of the
Packit Service 084de1
object identifier followed by B<=> and the numerical form. The short
Packit Service 084de1
and long names are the same when this option is used.
Packit Service 084de1
Packit Service 084de1
=item B<RANDFILE>
Packit Service 084de1
Packit Service 084de1
At startup the specified file is loaded into the random number generator,
Packit Service 084de1
and at exit 256 bytes will be written to it.
Packit Service 084de1
It is used for private key generation.
Packit Service 084de1
Packit Service 084de1
=item B<encrypt_key>
Packit Service 084de1
Packit Service 084de1
If this is set to B<no> then if a private key is generated it is
Packit Service 084de1
B<not> encrypted. This is equivalent to the B<-nodes> command line
Packit Service 084de1
option. For compatibility B<encrypt_rsa_key> is an equivalent option.
Packit Service 084de1
Packit Service 084de1
=item B<default_md>
Packit Service 084de1
Packit Service 084de1
This option specifies the digest algorithm to use. Any digest supported by the
Packit Service 084de1
OpenSSL B<dgst> command can be used. This option can be overridden on the
Packit Service 084de1
command line. Certain signing algorithms (i.e. Ed25519 and Ed448) will ignore
Packit Service 084de1
any digest that has been set.
Packit Service 084de1
Packit Service 084de1
=item B<string_mask>
Packit Service 084de1
Packit Service 084de1
This option masks out the use of certain string types in certain
Packit Service 084de1
fields. Most users will not need to change this option.
Packit Service 084de1
Packit Service 084de1
It can be set to several values B<default> which is also the default
Packit Service 084de1
option uses PrintableStrings, T61Strings and BMPStrings if the
Packit Service 084de1
B<pkix> value is used then only PrintableStrings and BMPStrings will
Packit Service 084de1
be used. This follows the PKIX recommendation in RFC2459. If the
Packit Service 084de1
B<utf8only> option is used then only UTF8Strings will be used: this
Packit Service 084de1
is the PKIX recommendation in RFC2459 after 2003. Finally the B<nombstr>
Packit Service 084de1
option just uses PrintableStrings and T61Strings: certain software has
Packit Service 084de1
problems with BMPStrings and UTF8Strings: in particular Netscape.
Packit Service 084de1
Packit Service 084de1
=item B<req_extensions>
Packit Service 084de1
Packit Service 084de1
This specifies the configuration file section containing a list of
Packit Service 084de1
extensions to add to the certificate request. It can be overridden
Packit Service 084de1
by the B<-reqexts> command line switch. See the
Packit Service 084de1
L<x509v3_config(5)> manual page for details of the
Packit Service 084de1
extension section format.
Packit Service 084de1
Packit Service 084de1
=item B<x509_extensions>
Packit Service 084de1
Packit Service 084de1
This specifies the configuration file section containing a list of
Packit Service 084de1
extensions to add to certificate generated when the B<-x509> switch
Packit Service 084de1
is used. It can be overridden by the B<-extensions> command line switch.
Packit Service 084de1
Packit Service 084de1
=item B<prompt>
Packit Service 084de1
Packit Service 084de1
If set to the value B<no> this disables prompting of certificate fields
Packit Service 084de1
and just takes values from the config file directly. It also changes the
Packit Service 084de1
expected format of the B<distinguished_name> and B<attributes> sections.
Packit Service 084de1
Packit Service 084de1
=item B<utf8>
Packit Service 084de1
Packit Service 084de1
If set to the value B<yes> then field values to be interpreted as UTF8
Packit Service 084de1
strings, by default they are interpreted as ASCII. This means that
Packit Service 084de1
the field values, whether prompted from a terminal or obtained from a
Packit Service 084de1
configuration file, must be valid UTF8 strings.
Packit Service 084de1
Packit Service 084de1
=item B<attributes>
Packit Service 084de1
Packit Service 084de1
This specifies the section containing any request attributes: its format
Packit Service 084de1
is the same as B<distinguished_name>. Typically these may contain the
Packit Service 084de1
challengePassword or unstructuredName types. They are currently ignored
Packit Service 084de1
by OpenSSL's request signing utilities but some CAs might want them.
Packit Service 084de1
Packit Service 084de1
=item B<distinguished_name>
Packit Service 084de1
Packit Service 084de1
This specifies the section containing the distinguished name fields to
Packit Service 084de1
prompt for when generating a certificate or certificate request. The format
Packit Service 084de1
is described in the next section.
Packit Service 084de1
Packit Service 084de1
=back
Packit Service 084de1
Packit Service 084de1
=head1 DISTINGUISHED NAME AND ATTRIBUTE SECTION FORMAT
Packit Service 084de1
Packit Service 084de1
There are two separate formats for the distinguished name and attribute
Packit Service 084de1
sections. If the B<prompt> option is set to B<no> then these sections
Packit Service 084de1
just consist of field names and values: for example,
Packit Service 084de1
Packit Service 084de1
 CN=My Name
Packit Service 084de1
 OU=My Organization
Packit Service 084de1
 emailAddress=someone@somewhere.org
Packit Service 084de1
Packit Service 084de1
This allows external programs (e.g. GUI based) to generate a template file
Packit Service 084de1
with all the field names and values and just pass it to B<req>. An example
Packit Service 084de1
of this kind of configuration file is contained in the B<EXAMPLES> section.
Packit Service 084de1
Packit Service 084de1
Alternatively if the B<prompt> option is absent or not set to B<no> then the
Packit Service 084de1
file contains field prompting information. It consists of lines of the form:
Packit Service 084de1
Packit Service 084de1
 fieldName="prompt"
Packit Service 084de1
 fieldName_default="default field value"
Packit Service 084de1
 fieldName_min= 2
Packit Service 084de1
 fieldName_max= 4
Packit Service 084de1
Packit Service 084de1
"fieldName" is the field name being used, for example commonName (or CN).
Packit Service 084de1
The "prompt" string is used to ask the user to enter the relevant
Packit Service 084de1
details. If the user enters nothing then the default value is used if no
Packit Service 084de1
default value is present then the field is omitted. A field can
Packit Service 084de1
still be omitted if a default value is present if the user just
Packit Service 084de1
enters the '.' character.
Packit Service 084de1
Packit Service 084de1
The number of characters entered must be between the fieldName_min and
Packit Service 084de1
fieldName_max limits: there may be additional restrictions based
Packit Service 084de1
on the field being used (for example countryName can only ever be
Packit Service 084de1
two characters long and must fit in a PrintableString).
Packit Service 084de1
Packit Service 084de1
Some fields (such as organizationName) can be used more than once
Packit Service 084de1
in a DN. This presents a problem because configuration files will
Packit Service 084de1
not recognize the same name occurring twice. To avoid this problem
Packit Service 084de1
if the fieldName contains some characters followed by a full stop
Packit Service 084de1
they will be ignored. So for example a second organizationName can
Packit Service 084de1
be input by calling it "1.organizationName".
Packit Service 084de1
Packit Service 084de1
The actual permitted field names are any object identifier short or
Packit Service 084de1
long names. These are compiled into OpenSSL and include the usual
Packit Service 084de1
values such as commonName, countryName, localityName, organizationName,
Packit Service 084de1
organizationalUnitName, stateOrProvinceName. Additionally emailAddress
Packit Service 084de1
is included as well as name, surname, givenName, initials, and dnQualifier.
Packit Service 084de1
Packit Service 084de1
Additional object identifiers can be defined with the B<oid_file> or
Packit Service 084de1
B<oid_section> options in the configuration file. Any additional fields
Packit Service 084de1
will be treated as though they were a DirectoryString.
Packit Service 084de1
Packit Service 084de1
Packit Service 084de1
=head1 EXAMPLES
Packit Service 084de1
Packit Service 084de1
Examine and verify certificate request:
Packit Service 084de1
Packit Service 084de1
 openssl req -in req.pem -text -verify -noout
Packit Service 084de1
Packit Service 084de1
Create a private key and then generate a certificate request from it:
Packit Service 084de1
Packit Service 084de1
 openssl genrsa -out key.pem 2048
Packit Service 084de1
 openssl req -new -key key.pem -out req.pem
Packit Service 084de1
Packit Service 084de1
The same but just using req:
Packit Service 084de1
Packit Service 084de1
 openssl req -newkey rsa:2048 -keyout key.pem -out req.pem
Packit Service 084de1
Packit Service 084de1
Generate a self signed root certificate:
Packit Service 084de1
Packit Service 084de1
 openssl req -x509 -newkey rsa:2048 -keyout key.pem -out req.pem
Packit Service 084de1
Packit Service 084de1
Example of a file pointed to by the B<oid_file> option:
Packit Service 084de1
Packit Service 084de1
 1.2.3.4        shortName       A longer Name
Packit Service 084de1
 1.2.3.6        otherName       Other longer Name
Packit Service 084de1
Packit Service 084de1
Example of a section pointed to by B<oid_section> making use of variable
Packit Service 084de1
expansion:
Packit Service 084de1
Packit Service 084de1
 testoid1=1.2.3.5
Packit Service 084de1
 testoid2=${testoid1}.6
Packit Service 084de1
Packit Service 084de1
Sample configuration file prompting for field values:
Packit Service 084de1
Packit Service 084de1
 [ req ]
Packit Service 084de1
 default_bits           = 2048
Packit Service 084de1
 default_keyfile        = privkey.pem
Packit Service 084de1
 distinguished_name     = req_distinguished_name
Packit Service 084de1
 attributes             = req_attributes
Packit Service 084de1
 req_extensions         = v3_ca
Packit Service 084de1
Packit Service 084de1
 dirstring_type = nobmp
Packit Service 084de1
Packit Service 084de1
 [ req_distinguished_name ]
Packit Service 084de1
 countryName                    = Country Name (2 letter code)
Packit Service 084de1
 countryName_default            = AU
Packit Service 084de1
 countryName_min                = 2
Packit Service 084de1
 countryName_max                = 2
Packit Service 084de1
Packit Service 084de1
 localityName                   = Locality Name (eg, city)
Packit Service 084de1
Packit Service 084de1
 organizationalUnitName         = Organizational Unit Name (eg, section)
Packit Service 084de1
Packit Service 084de1
 commonName                     = Common Name (eg, YOUR name)
Packit Service 084de1
 commonName_max                 = 64
Packit Service 084de1
Packit Service 084de1
 emailAddress                   = Email Address
Packit Service 084de1
 emailAddress_max               = 40
Packit Service 084de1
Packit Service 084de1
 [ req_attributes ]
Packit Service 084de1
 challengePassword              = A challenge password
Packit Service 084de1
 challengePassword_min          = 4
Packit Service 084de1
 challengePassword_max          = 20
Packit Service 084de1
Packit Service 084de1
 [ v3_ca ]
Packit Service 084de1
Packit Service 084de1
 subjectKeyIdentifier=hash
Packit Service 084de1
 authorityKeyIdentifier=keyid:always,issuer:always
Packit Service 084de1
 basicConstraints = critical, CA:true
Packit Service 084de1
Packit Service 084de1
Sample configuration containing all field values:
Packit Service 084de1
Packit Service 084de1
Packit Service 084de1
 RANDFILE               = $ENV::HOME/.rnd
Packit Service 084de1
Packit Service 084de1
 [ req ]
Packit Service 084de1
 default_bits           = 2048
Packit Service 084de1
 default_keyfile        = keyfile.pem
Packit Service 084de1
 distinguished_name     = req_distinguished_name
Packit Service 084de1
 attributes             = req_attributes
Packit Service 084de1
 prompt                 = no
Packit Service 084de1
 output_password        = mypass
Packit Service 084de1
Packit Service 084de1
 [ req_distinguished_name ]
Packit Service 084de1
 C                      = GB
Packit Service 084de1
 ST                     = Test State or Province
Packit Service 084de1
 L                      = Test Locality
Packit Service 084de1
 O                      = Organization Name
Packit Service 084de1
 OU                     = Organizational Unit Name
Packit Service 084de1
 CN                     = Common Name
Packit Service 084de1
 emailAddress           = test@email.address
Packit Service 084de1
Packit Service 084de1
 [ req_attributes ]
Packit Service 084de1
 challengePassword              = A challenge password
Packit Service 084de1
Packit Service 084de1
Example of giving the most common attributes (subject and extensions)
Packit Service 084de1
on the command line:
Packit Service 084de1
Packit Service 084de1
 openssl req -new -subj "/C=GB/CN=foo" \
Packit Service 084de1
                  -addext "subjectAltName = DNS:foo.co.uk" \
Packit Service 084de1
                  -addext "certificatePolicies = 1.2.3.4" \
Packit Service 084de1
                  -newkey rsa:2048 -keyout key.pem -out req.pem
Packit Service 084de1
Packit Service 084de1
Packit Service 084de1
=head1 NOTES
Packit Service 084de1
Packit Service 084de1
The header and footer lines in the B<PEM> format are normally:
Packit Service 084de1
Packit Service 084de1
 -----BEGIN CERTIFICATE REQUEST-----
Packit Service 084de1
 -----END CERTIFICATE REQUEST-----
Packit Service 084de1
Packit Service 084de1
some software (some versions of Netscape certificate server) instead needs:
Packit Service 084de1
Packit Service 084de1
 -----BEGIN NEW CERTIFICATE REQUEST-----
Packit Service 084de1
 -----END NEW CERTIFICATE REQUEST-----
Packit Service 084de1
Packit Service 084de1
which is produced with the B<-newhdr> option but is otherwise compatible.
Packit Service 084de1
Either form is accepted transparently on input.
Packit Service 084de1
Packit Service 084de1
The certificate requests generated by B<Xenroll> with MSIE have extensions
Packit Service 084de1
added. It includes the B<keyUsage> extension which determines the type of
Packit Service 084de1
key (signature only or general purpose) and any additional OIDs entered
Packit Service 084de1
by the script in an extendedKeyUsage extension.
Packit Service 084de1
Packit Service 084de1
=head1 DIAGNOSTICS
Packit Service 084de1
Packit Service 084de1
The following messages are frequently asked about:
Packit Service 084de1
Packit Service 084de1
        Using configuration from /some/path/openssl.cnf
Packit Service 084de1
        Unable to load config info
Packit Service 084de1
Packit Service 084de1
This is followed some time later by...
Packit Service 084de1
Packit Service 084de1
        unable to find 'distinguished_name' in config
Packit Service 084de1
        problems making Certificate Request
Packit Service 084de1
Packit Service 084de1
The first error message is the clue: it can't find the configuration
Packit Service 084de1
file! Certain operations (like examining a certificate request) don't
Packit Service 084de1
need a configuration file so its use isn't enforced. Generation of
Packit Service 084de1
certificates or requests however does need a configuration file. This
Packit Service 084de1
could be regarded as a bug.
Packit Service 084de1
Packit Service 084de1
Another puzzling message is this:
Packit Service 084de1
Packit Service 084de1
        Attributes:
Packit Service 084de1
            a0:00
Packit Service 084de1
Packit Service 084de1
this is displayed when no attributes are present and the request includes
Packit Service 084de1
the correct empty B<SET OF> structure (the DER encoding of which is 0xa0
Packit Service 084de1
0x00). If you just see:
Packit Service 084de1
Packit Service 084de1
        Attributes:
Packit Service 084de1
Packit Service 084de1
then the B<SET OF> is missing and the encoding is technically invalid (but
Packit Service 084de1
it is tolerated). See the description of the command line option B<-asn1-kludge>
Packit Service 084de1
for more information.
Packit Service 084de1
Packit Service 084de1
=head1 BUGS
Packit Service 084de1
Packit Service 084de1
OpenSSL's handling of T61Strings (aka TeletexStrings) is broken: it effectively
Packit Service 084de1
treats them as ISO-8859-1 (Latin 1), Netscape and MSIE have similar behaviour.
Packit Service 084de1
This can cause problems if you need characters that aren't available in
Packit Service 084de1
PrintableStrings and you don't want to or can't use BMPStrings.
Packit Service 084de1
Packit Service 084de1
As a consequence of the T61String handling the only correct way to represent
Packit Service 084de1
accented characters in OpenSSL is to use a BMPString: unfortunately Netscape
Packit Service 084de1
currently chokes on these. If you have to use accented characters with Netscape
Packit Service 084de1
and MSIE then you currently need to use the invalid T61String form.
Packit Service 084de1
Packit Service 084de1
The current prompting is not very friendly. It doesn't allow you to confirm what
Packit Service 084de1
you've just entered. Other things like extensions in certificate requests are
Packit Service 084de1
statically defined in the configuration file. Some of these: like an email
Packit Service 084de1
address in subjectAltName should be input by the user.
Packit Service 084de1
Packit Service 084de1
=head1 SEE ALSO
Packit Service 084de1
Packit Service 084de1
L<x509(1)>, L<ca(1)>, L<genrsa(1)>,
Packit Service 084de1
L<gendsa(1)>, L<config(5)>,
Packit Service 084de1
L<x509v3_config(5)>
Packit Service 084de1
Packit Service 084de1
=head1 COPYRIGHT
Packit Service 084de1
Packit Service 084de1
Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved.
Packit Service 084de1
Packit Service 084de1
Licensed under the OpenSSL license (the "License").  You may not use
Packit Service 084de1
this file except in compliance with the License.  You can obtain a copy
Packit Service 084de1
in the file LICENSE in the source distribution or at
Packit Service 084de1
L<https://www.openssl.org/source/license.html>.
Packit Service 084de1
Packit Service 084de1
=cut