dwww Home | Manual pages | Find package

OPENSSL-CA(1SSL)                    OpenSSL                    OPENSSL-CA(1SSL)

NAME
       openssl-ca - sample minimal CA application

SYNOPSIS
       openssl ca [-help] [-verbose] [-quiet] [-config filename] [-name
       section] [-section section] [-gencrl] [-revoke file] [-valid file]
       [-status serial] [-updatedb] [-crl_reason reason] [-crl_hold
       instruction] [-crl_compromise time] [-crl_CA_compromise time]
       [-crl_lastupdate date] [-crl_nextupdate date] [-crldays days] [-crlhours
       hours] [-crlsec seconds] [-crlexts section] [-startdate date]
       [-not_before date] [-enddate date] [-not_after date] [-days arg] [-md
       arg] [-policy arg] [-keyfile filename|uri] [-keyform DER|PEM|P12|ENGINE]
       [-key arg] [-passin arg] [-cert file] [-certform DER|PEM|P12]
       [-selfsign] [-in file] [-inform DER|<PEM>] [-out file] [-notext]
       [-dateopt] [-outdir dir] [-infiles] [-spkac file] [-ss_cert file]
       [-preserveDN] [-noemailDN] [-batch] [-msie_hack] [-extensions section]
       [-extfile section] [-subj arg] [-utf8] [-sigopt nm:v] [-vfyopt nm:v]
       [-create_serial] [-rand_serial] [-multivalue-rdn] [-rand files]
       [-writerand file] [-engine id] [-provider name] [-provider-path path]
       [-provparam [name:]key=value] [-propquery propq] [certreq...]

DESCRIPTION
       This command emulates a CA application.  See the WARNINGS especially
       when considering to use it productively.

       It generates certificates bearing X.509 version 3.  Unless specified
       otherwise, key identifier extensions are included as described in
       x509v3_config(5).

       It can be used to sign certificate requests (CSRs) in a variety of forms
       and generate certificate revocation lists (CRLs).  It also maintains a
       text database of issued certificates and their status.  When signing
       certificates, a single request can be specified with the -in option, or
       multiple requests can be processed by specifying a set of certreq files
       after all options.

       Note that there are also very lean ways of generating certificates: the
       req and x509 commands can be used for directly creating certificates.
       See openssl-req(1) and openssl-x509(1) for details.

       The descriptions of the ca command options are divided into each
       purpose.

OPTIONS
       -help
           Print out a usage message.

       -verbose
           This prints extra details about the operations being performed.

       -quiet
           This  prints  fewer  details  about  the operations being performed,
           which may be handy during batch scripts or pipelines.

       -config filename
           Specifies  the  configuration  file  to  use.    Optional;   for   a
           description   of   the  default  value,  see  "COMMAND  SUMMARY"  in
           openssl(1).

       -name section, -section section
           Specifies  the  configuration  file  section   to   use   (overrides
           default_ca in the ca section).

       -in filename
           An  input  filename containing a single certificate request (CSR) to
           be signed by the CA.

       -inform DER|PEM
           The format to use  when  loading  certificate  request  (CSR)  input
           files; by default PEM is tried first.  See openssl-format-options(1)
           for details.

       -ss_cert filename
           A single self-signed certificate to be signed by the CA.

       -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  SPKAC
           FORMAT  section  for  information  on  the required input and output
           format.

       -infiles
           If present this should be the last option, all subsequent  arguments
           are taken as the names of files containing certificate requests.

       -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 in PEM format (except that -spkac outputs DER format).

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

       -cert filename
           The CA certificate, which must match with -keyfile.

       -certform DER|PEM|P12
           The  format  of  the data in certificate input files; unspecified by
           default.  See openssl-format-options(1) for details.

       -keyfile filename|uri
           The CA private key to sign certificate  requests  with.   This  must
           match with -cert.

       -keyform DER|PEM|P12|ENGINE
           The  format  of  the private key input file; unspecified by default.
           See openssl-format-options(1) for details.

       -sigopt nm:v
           Pass options to the  signature  algorithm  during  sign  operations.
           Names  and  values  of  these  options  are  algorithm-specific  and
           documented in "Signature parameters" in provider-signature(7).

       -vfyopt nm:v
           Pass options to the signature algorithm  during  verify  operations.
           Names and values of these options are algorithm-specific.

           This  often  needs  to be given while signing too, because the self-
           signature of a certificate signing request (CSR) is verified against
           the included public key, and that verification may need its own  set
           of options.

       -key password
           The  password used to encrypt the private key. Since on some systems
           the command line arguments are visible (e.g., when  using  ps(1)  on
           Unix), this option should be used with caution.  Better use -passin.

       -passin arg
           The key password source for key files and certificate PKCS#12 files.
           For    more    information    about    the   format   of   arg   see
           openssl-passphrase-options(1).

       -selfsign
           Indicates the issued certificates are to be signed with the key  the
           certificate   requests  were  signed  with  (given  with  -keyfile).
           Certificate requests signed with a different key  are  ignored.   If
           -spkac, -ss_cert or -gencrl are given, -selfsign is ignored.

           A consequence of using -selfsign is that the self-signed certificate
           appears  among  the  entries  in  the  certificate database (see the
           configuration option database), and  uses  the  same  serial  number
           counter   as  all  other  certificates  sign  with  the  self-signed
           certificate.

       -notext
           Don't output the text form of a certificate to the output file.

       -dateopt
           Specify the date output format. Values are:  rfc_822  and  iso_8601.
           Defaults to rfc_822.

       -startdate date, -not_before date
           This  allows  the start date to be explicitly set. The format of the
           date is YYMMDDHHMMSSZ (the same as an ASN1  UTCTime  structure),  or
           YYYYMMDDHHMMSSZ  (the same as an ASN1 GeneralizedTime structure). In
           both  formats,  seconds  SS  and  timezone  Z   must   be   present.
           Alternatively, you can also use "today".

       -enddate date, -not_after date
           This  allows the expiry date to be explicitly set. The format of the
           date is YYMMDDHHMMSSZ (the same as an ASN1  UTCTime  structure),  or
           YYYYMMDDHHMMSSZ  (the same as an ASN1 GeneralizedTime structure). In
           both  formats,  seconds  SS  and  timezone  Z   must   be   present.
           Alternatively, you can also use "today".

           This overrides the -days option.

       -days arg
           The number of days from today to certify the certificate for.

           Regardless  of  the  option -not_before, the days are always counted
           from    today.     When    used    together    with    the    option
           -not_after/-startdate, the explicit expiry date takes precedence.

       -md alg
           The   message   digest   to   use.   Any  digest  supported  by  the
           openssl-dgst(1) command can be used. For signing algorithms that  do
           not  support  a  digest  (i.e. Ed25519 and Ed448) any message digest
           that is set is ignored. This option also applies to CRLs.

       -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 POLICY  FORMAT  section  for
           more information.

       -msie_hack
           This  is a deprecated option to make this command work 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.

       -preserveDN
           Normally the DN order of a certificate is the same as the  order  of
           the  fields  in the relevant policy section. When this option is set
           the  order  is  the  same  as  the  request.  This  is  largely  for
           compatibility  with the older IE enrollment control which would only
           accept certificates if their DNs match the  order  of  the  request.
           This is not needed for Xenroll.

       -noemailDN
           The  DN  of  a certificate can contain the EMAIL field if present in
           the request DN, however, it is good policy just  having  the  e-mail
           set  into the altName extension of the certificate. When this option
           is set the EMAIL field is removed from the certificate' subject  and
           set  only  in  the,  eventually present, extensions. The email_in_dn
           keyword can be  used  in  the  configuration  file  to  enable  this
           behaviour.

       -batch
           This  sets  the  batch mode. In this mode no questions will be asked
           and all certificates will be certified automatically.

       -extensions section
           The  section  of  the  configuration  file  containing   certificate
           extensions  to  be  added  when a certificate is issued (defaults to
           x509_extensions unless the -extfile option is used).

           See the x509v3_config(5) manual page for details  of  the  extension
           section format.

       -extfile file
           An additional configuration file to read certificate extensions from
           (using  the  default  section  unless the -extensions option is also
           used).

       -subj arg
           Supersedes subject name given in the request.

           The arg must be formatted as "/type0=value0/type1=value1/type2=...".
           Special characters may be escaped by "\" (backslash), whitespace  is
           retained.   Empty  values  are permitted, but the corresponding type
           will not be included in the resulting certificate.  Giving a  single
           "/"  will  lead  to  an  empty sequence of RDNs (a NULL-DN).  Multi-
           valued RDNs can be formed by placing a "+" character  instead  of  a
           "/"  between  the  AttributeValueAssertions  (AVAs) that specify the
           members of the set.  Example:

           "/DC=org/DC=OpenSSL/DC=users/UID=123456+CN=John Doe"

       -utf8
           This option causes field values to be interpreted as  UTF8  strings,
           by  default they are interpreted as ASCII. This means that the field
           values,  whether  prompted  from  a  terminal  or  obtained  from  a
           configuration file, must be valid UTF8 strings.

       -create_serial
           If   reading   serial  from  the  text  file  as  specified  in  the
           configuration fails, specifying this option  creates  a  new  random
           serial  to  be  used  as  next  serial number.  To get random serial
           numbers, use the -rand_serial flag instead; this should only be used
           for simple error-recovery.

       -rand_serial
           Generate a large random number to use as the  serial  number.   This
           overrides any option or configuration to use a serial number file.

       -multivalue-rdn
           This option has been deprecated and has no effect.

       -rand files, -writerand file
           See "Random State Options" in openssl(1) for details.

       -engine id
           See "Engine Options" in openssl(1).  This option is deprecated.

       -provider name
       -provider-path path
       -provparam [name:]key=value
       -propquery propq
           See "Provider Options" in openssl(1), provider(7), and property(7).

CRL OPTIONS
       -gencrl
           This option generates a CRL based on information in the index file.

       -crl_lastupdate time
           Allows the value of the CRL's lastUpdate field to be explicitly set;
           if  this  option  is  not present, the current time is used. Accepts
           times  in  YYMMDDHHMMSSZ  format  (the  same  as  an  ASN1   UTCTime
           structure)   or   YYYYMMDDHHMMSSZ   format  (the  same  as  an  ASN1
           GeneralizedTime structure).

       -crl_nextupdate time
           Allows the value of the CRL's nextUpdate field to be explicitly set;
           if this option is present, any values given for -crldays,  -crlhours
           and  -crlsec  are  ignored.  Accepts  times  in  the same formats as
           -crl_lastupdate.

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

       -crlhours num
           The number of hours before the next CRL is due.

       -crlsec num
           The number of seconds before the next CRL is due.

       -revoke filename
           A filename containing a certificate to revoke.

       -valid filename
           A filename containing a  certificate  to  add  a  Valid  certificate
           entry.

       -status serial
           Displays the revocation status of the certificate with the specified
           serial number and exits.

       -updatedb
           Updates the database index to purge expired certificates.

       -crl_reason reason
           Revocation   reason,   where   reason   is   one   of:  unspecified,
           keyCompromise,   CACompromise,    affiliationChanged,    superseded,
           cessationOfOperation, certificateHold or removeFromCRL. The matching
           of  reason  is  case insensitive. Setting any revocation reason will
           make the CRL v2.

           In practice removeFromCRL is not particularly useful because  it  is
           only used in delta CRLs which are not currently implemented.

       -crl_hold instruction
           This  sets the CRL revocation reason code to certificateHold and the
           hold instruction to instruction which must be an OID.  Although  any
           OID  can  be  used  only  holdInstructionNone  (the  use of which is
           discouraged     by     RFC2459)     holdInstructionCallIssuer     or
           holdInstructionReject will normally be used.

       -crl_compromise time
           This  sets the revocation reason to keyCompromise and the compromise
           time to time. time should  be  in  GeneralizedTime  format  that  is
           YYYYMMDDHHMMSSZ.

       -crl_CA_compromise time
           This  is  the same as crl_compromise except the revocation reason is
           set to CACompromise.

       -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 not CRL entry extensions.   It  should  be  noted
           that  some software (for example Netscape) can't handle V2 CRLs. See
           x509v3_config(5) manual page for details of  the  extension  section
           format.

CONFIGURATION FILE OPTIONS
       The  section  of  the  configuration  file  containing  options for this
       command is found as follows: If the -name command line option  is  used,
       then  it  names the section to be used. Otherwise the section to be used
       must be named in  the  default_ca  option  of  the  ca  section  of  the
       configuration  file  (or  in  the  default  section of the configuration
       file). Besides default_ca, the following options are read directly  from
       the ca section:
        RANDFILE
        preserve
        msie_hack  With  the  exception of RANDFILE, this is probably a bug and
       may change in future releases.

       Many of the configuration file options 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.

       oid_file
           This  specifies  a  file  containing  additional OBJECT IDENTIFIERS.
           Each line of the file should consist of the numerical  form  of  the
           object  identifier  followed  by  whitespace  then  the  short  name
           followed by whitespace and finally the long name.

       oid_section
           This specifies a section in the configuration file containing  extra
           object  identifiers.  Each  line should consist of the short name of
           the object identifier followed by =  and  the  numerical  form.  The
           short and long names are the same when this option is used.

       new_certs_dir
           The  same  as  the  -outdir  command  line  option. It specifies the
           directory where new certificates will be placed. Mandatory.

       certificate
           The same as -cert. It gives the file containing the CA  certificate.
           Mandatory.

       private_key
           Same as the -keyfile option. The file containing the CA private key.
           Mandatory.

       RANDFILE
           At  startup  the  specified  file  is  loaded into the random number
           generator, and at exit 256 bytes will be written to it. (Note: Using
           a RANDFILE is not necessary anymore, see the "HISTORY" section.

       default_days
           The same as the -days option. The  number  of  days  from  today  to
           certify a certificate for.

       default_startdate
           The  same  as  the  -startdate  option.  The start date to certify a
           certificate for. If not set the current time is used.

       default_enddate
           The same as the -enddate option. Either this option or  default_days
           (or the command line equivalents) must be present.

       default_crl_hours default_crl_days
           The  same as the -crlhours and the -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.

       default_md
           The  same  as  the  -md  option.  Mandatory except where the signing
           algorithm does not require a digest (i.e. Ed25519 and Ed448).

       database
           The text database file to use. Mandatory. This file must be  present
           though initially it will be empty.

       unique_subject
           If  the  value  yes  is  given, the valid certificate entries in the
           database must have unique subjects.   if  the  value  no  is  given,
           several  valid  certificate entries may have the exact same subject.
           The default value is yes, to be compatible with  older  (pre  0.9.8)
           versions  of  OpenSSL.   However,  to  make CA certificate roll-over
           easier, it's recommended to use the value no, especially if combined
           with the -selfsign command line option.

           Note that it is valid in some circumstances for certificates  to  be
           created  without  any  subject. In the case where there are multiple
           certificates without subjects this does not count as a duplicate.

       serial
           A text file containing  the  next  serial  number  to  use  in  hex.
           Mandatory.   This  file  must  be present and contain a valid serial
           number.

       crlnumber
           A text file containing the next CRL number to use in  hex.  The  crl
           number  will  be  inserted  in the CRLs only if this file exists. If
           this file is present, it must contain a valid CRL number.

       x509_extensions
           A fallback to the -extensions option.

       crl_extensions
           A fallback to the -crlexts option.

       preserve
           The same as -preserveDN

       email_in_dn
           The same as -noemailDN. If you want the EMAIL field  to  be  removed
           from  the  DN  of  the  certificate  simply set this to 'no'. If not
           present the  default  is  to  allow  for  the  EMAIL  filed  in  the
           certificate's DN.

       msie_hack
           The same as -msie_hack

       policy
           The  same  as  -policy. Mandatory. See the POLICY FORMAT section for
           more information.

       name_opt, cert_opt
           These options allow the  format  used  to  display  the  certificate
           details  when  asking  the  user to confirm signing. All the options
           supported by the x509 utilities -nameopt and -certopt  switches  can
           be  used  here, except the no_signame and no_sigdump are permanently
           set  and  cannot  be  disabled  (this  is  because  the  certificate
           signature  cannot  be displayed because the certificate has not been
           signed at this point).

           For convenience the  values  ca_default  are  accepted  by  both  to
           produce a reasonable output.

           If  neither option is present the format used in earlier versions of
           OpenSSL is used. Use of  the  old  format  is  strongly  discouraged
           because  it  only  displays  fields mentioned in the policy section,
           mishandles  multicharacter  string  types  and  does   not   display
           extensions.

       copy_extensions
           Determines how extensions in certificate requests should be handled.
           If  set  to  none  or this option is not present then extensions are
           ignored and not copied to the certificate. If set to copy  then  any
           extensions  present  in the request that are not already present are
           copied to the certificate. If set to copyall then all extensions  in
           the  request  are  copied  to  the  certificate: if the extension is
           already present in the certificate it  is  deleted  first.  See  the
           WARNINGS section before using this option.

           The  main  use  of  this option is to allow a certificate request to
           supply values for certain extensions such as subjectAltName.

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 -preserveDN option is set but this can  be  regarded
       more of a quirk than intended behaviour.

SPKAC FORMAT
       The  input to the -spkac command line option is a Netscape signed public
       key and challenge. This will usually come from the KEYGEN tag in an HTML
       form to create a new private key.  It  is  however  possible  to  create
       SPKACs using openssl-spkac(1).

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

       When  processing  SPKAC  format,  the  output is DER if the -out flag is
       used, but PEM format if sending to stdout or the -outdir flag is used.

EXAMPLES
       Note: these examples assume that the directory  structure  this  command
       assumes  is  already  set  up and the relevant files already exist. This
       usually  involves  creating  a  CA  certificate  and  private  key  with
       openssl-req(1), 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

       Sign an SM2 certificate request:

        openssl ca -in sm2.csr -out sm2.crt -md sm3 \
                -sigopt "distid:1234567812345678" \
                -vfyopt "distid:1234567812345678"

       Sign a certificate request, using CA extensions:

        openssl ca -in req.pem -extensions v3_ca -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 this command:

        [ 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
        #rand_serial    = yes                  # for random serial#'s
        private_key    = $dir/private/cakey.pem# CA private key

        default_days   = 365                   # how long to certify for
        default_crl_days= 30                   # how long before next CRL
        default_md     = sha256                # md to use

        policy         = policy_any            # default policy
        email_in_dn    = no                    # Don't add the email into cert DN

        name_opt       = ca_default            # Subject name display option
        cert_opt       = ca_default            # Certificate display option
        copy_extensions = none                 # Don't copy extensions from request

        [ policy_any ]
        countryName            = supplied
        stateOrProvinceName    = optional
        organizationName       = optional
        organizationalUnitName = optional
        commonName             = supplied
        emailAddress           = optional

FILES
       Note:  the  location  of  all  files  can  change either by compile time
       options, configuration 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

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.

       V2 CRL features like delta CRLs 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.

BUGS
       This command is quirky and at times downright unfriendly.

       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.

       This  command  really  needs  rewriting  or  the  required functionality
       exposed at either a command or interface level  so  that  a  more  user-
       friendly  replacement  could  handle  things  properly. The script CA.pl
       helps 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 -preserveDN option is used. To
       enforce the absence of the EMAIL field within the DN,  as  suggested  by
       RFCs,  regardless  the  contents  of the request' subject the -noemailDN
       option  can  be  used.  The  behaviour  should  be  more  friendly   and
       configurable.

       Canceling  some commands by refusing to certify a certificate can create
       an empty file.

WARNINGS
       This command was originally meant as an example of how to do things in a
       CA.  Its code does not have production quality.  It was not supposed  to
       be used as a full blown CA itself, nevertheless some people are using it
       for  this  purpose  at  least  internally.  When doing so, specific care
       should be taken to properly secure the private key(s) used  for  signing
       certificates.   It is advisable to keep them in a secure HW storage such
       as a smart card or HSM and access them via a suitable engine  or  crypto
       provider.

       This command is effectively a single user command: no locking is done on
       the  various  files and attempts to run more than one openssl ca command
       on the same database can have unpredictable results.

       The copy_extensions option should be used with caution. If care  is  not
       taken  then  it  can  be  a  security risk. For example if a certificate
       request contains a  basicConstraints  extension  with  CA:TRUE  and  the
       copy_extensions  value is set to copyall and the user does not spot this
       when the certificate is displayed then this will hand  the  requester  a
       valid  CA  certificate.   This  situation  can  be  avoided  by  setting
       copy_extensions to copy and including basicConstraints with CA:FALSE  in
       the configuration file.  Then if the request contains a basicConstraints
       extension it will be ignored.

       It  is  advisable  to  also  include values for other extensions such as
       keyUsage to prevent a request supplying its own values.

       Additional restrictions can be placed on the CA certificate itself.  For
       example if the CA certificate has:

        basicConstraints = CA:TRUE, pathlen:0

       then even if a certificate is issued with CA:TRUE it will not be valid.

HISTORY
       Since  OpenSSL  1.1.1,  the  program  follows   RFC5280.   Specifically,
       certificate  validity  period  (specified by any of -startdate, -enddate
       and  -days)  and  CRL  last/next  update  time  (specified  by  any   of
       -crl_lastupdate,  -crl_nextupdate, -crldays, -crlhours and -crlsec) will
       be  encoded  as  UTCTime  if  the  dates  are  earlier  than  year  2049
       (included),  and  as  GeneralizedTime  if  the dates are in year 2050 or
       later.

       OpenSSL 1.1.1  introduced  a  new  random  generator  (CSPRNG)  with  an
       improved   seeding   mechanism.  The  new  seeding  mechanism  makes  it
       unnecessary to define a RANDFILE for saving  and  restoring  randomness.
       This option is retained mainly for compatibility reasons.

       The -section option was added in OpenSSL 3.0.0.

       The  -multivalue-rdn option has become obsolete in OpenSSL 3.0.0 and has
       no effect.

       The -engine option was deprecated in OpenSSL 3.0.

       Since OpenSSL 3.2, generated certificates bear X.509 version 3, and  key
       identifier extensions are included by default.

SEE ALSO
       openssl(1), openssl-req(1), openssl-spkac(1), openssl-x509(1), CA.pl(1),
       config(5), x509v3_config(5)

COPYRIGHT
       Copyright 2000-2024 The OpenSSL Project Authors. All Rights Reserved.

       Licensed  under the Apache License 2.0 (the "License").  You may not use
       this file except in compliance with the License.  You can obtain a  copy
       in    the    file   LICENSE   in   the   source   distribution   or   at
       <https://www.openssl.org/source/license.html>.

3.5.4                              2025-09-30                  OPENSSL-CA(1SSL)

Generated by dwww version 1.16 on Tue Dec 16 04:32:29 CET 2025.