]> git.ipfire.org Git - thirdparty/openssl.git/blame - doc/man1/ca.pod
Report a readable error on a duplicate cert in ca app
[thirdparty/openssl.git] / doc / man1 / ca.pod
CommitLineData
aba3e65f
DSH
1=pod
2
3=head1 NAME
4
3f2181e6 5openssl-ca,
aba3e65f
DSH
6ca - sample minimal CA application
7
8=head1 SYNOPSIS
9
10B<openssl> B<ca>
169394d4 11[B<-help>]
aba3e65f
DSH
12[B<-verbose>]
13[B<-config filename>]
14[B<-name section>]
15[B<-gencrl>]
16[B<-revoke file>]
b4b42ce6 17[B<-valid file>]
fc1d88f0
RS
18[B<-status serial>]
19[B<-updatedb>]
d618f703
DSH
20[B<-crl_reason reason>]
21[B<-crl_hold instruction>]
22[B<-crl_compromise time>]
23[B<-crl_CA_compromise time>]
aba3e65f
DSH
24[B<-crldays days>]
25[B<-crlhours hours>]
26[B<-crlexts section>]
27[B<-startdate date>]
28[B<-enddate date>]
29[B<-days arg>]
30[B<-md arg>]
31[B<-policy arg>]
32[B<-keyfile arg>]
fc1d88f0 33[B<-keyform PEM|DER>]
aba3e65f 34[B<-key arg>]
bd08a2bd 35[B<-passin arg>]
aba3e65f 36[B<-cert file>]
d6df2b28 37[B<-selfsign>]
aba3e65f
DSH
38[B<-in file>]
39[B<-out file>]
82fc1d9c 40[B<-notext>]
aba3e65f
DSH
41[B<-outdir dir>]
42[B<-infiles>]
43[B<-spkac file>]
44[B<-ss_cert file>]
45[B<-preserveDN>]
89da653f 46[B<-noemailDN>]
aba3e65f
DSH
47[B<-batch>]
48[B<-msie_hack>]
49[B<-extensions section>]
dfebac32 50[B<-extfile section>]
bfa35550 51[B<-engine id>]
57eb1d32
NL
52[B<-subj arg>]
53[B<-utf8>]
6755ff11 54[B<-create_serial>]
ffb46830 55[B<-rand_serial>]
57eb1d32 56[B<-multivalue-rdn>]
3ee1eac2
RS
57[B<-rand file...>]
58[B<-writerand file>]
aba3e65f
DSH
59
60=head1 DESCRIPTION
61
62The B<ca> command is a minimal CA application. It can be used
63to sign certificate requests in a variety of forms and generate
64CRLs it also maintains a text database of issued certificates
65and their status.
66
67The options descriptions will be divided into each purpose.
68
3dfda1a6 69=head1 OPTIONS
aba3e65f
DSH
70
71=over 4
72
6755ff11
MR
73=item B<-help>
74
75Print out a usage message.
76
77=item B<-verbose>
78
c4de074e 79This prints extra details about the operations being performed.
6755ff11 80
aba3e65f
DSH
81=item B<-config filename>
82
c4de074e 83Specifies the configuration file to use.
e9681f83
RS
84Optional; for a description of the default value,
85see L<openssl(1)/COMMAND SUMMARY>.
aba3e65f 86
8a0a9392
BM
87=item B<-name section>
88
c4de074e 89Specifies the configuration file section to use (overrides
8a0a9392
BM
90B<default_ca> in the B<ca> section).
91
aba3e65f
DSH
92=item B<-in filename>
93
c4de074e 94An input filename containing a single certificate request to be
aba3e65f
DSH
95signed by the CA.
96
97=item B<-ss_cert filename>
98
c4de074e 99A single self-signed certificate to be signed by the CA.
aba3e65f
DSH
100
101=item B<-spkac filename>
102
c4de074e 103A file containing a single Netscape signed public key and challenge
d618f703 104and additional field values to be signed by the CA. See the B<SPKAC FORMAT>
fc1d88f0 105section for information on the required input and output format.
aba3e65f
DSH
106
107=item B<-infiles>
108
c4de074e 109If present this should be the last option, all subsequent arguments
1bc74519 110are taken as the names of files containing certificate requests.
aba3e65f
DSH
111
112=item B<-out filename>
113
c4de074e 114The output file to output certificates to. The default is standard
aba3e65f 115output. The certificate details will also be printed out to this
fc1d88f0 116file in PEM format (except that B<-spkac> outputs DER format).
aba3e65f
DSH
117
118=item B<-outdir directory>
119
c4de074e 120The directory to output certificates to. The certificate will be
aba3e65f
DSH
121written to a filename consisting of the serial number in hex with
122".pem" appended.
123
124=item B<-cert>
125
c4de074e 126The CA certificate file.
aba3e65f
DSH
127
128=item B<-keyfile filename>
129
c4de074e 130The private key to sign requests with.
aba3e65f 131
fc1d88f0
RS
132=item B<-keyform PEM|DER>
133
c4de074e 134The format of the data in the private key file.
fc1d88f0
RS
135The default is PEM.
136
aba3e65f
DSH
137=item B<-key password>
138
c4de074e 139The password used to encrypt the private key. Since on some
aba3e65f
DSH
140systems the command line arguments are visible (e.g. Unix with
141the 'ps' utility) this option should be used with caution.
142
d6df2b28
RL
143=item B<-selfsign>
144
c4de074e 145Indicates the issued certificates are to be signed with the key
d6df2b28 146the certificate requests were signed with (given with B<-keyfile>).
42b91f28 147Certificate requests signed with a different key are ignored. If
d6df2b28
RL
148B<-spkac>, B<-ss_cert> or B<-gencrl> are given, B<-selfsign> is
149ignored.
150
151A consequence of using B<-selfsign> is that the self-signed
152certificate appears among the entries in the certificate database
153(see the configuration option B<database>), and uses the same
154serial number counter as all other certificates sign with the
155self-signed certificate.
156
bd08a2bd
DSH
157=item B<-passin arg>
158
c4de074e 159The key password source. For more information about the format of B<arg>
9b86974e 160see the B<PASS PHRASE ARGUMENTS> section in L<openssl(1)>.
bad40585 161
82fc1d9c
DSH
162=item B<-notext>
163
c4de074e 164Don't output the text form of a certificate to the output file.
82fc1d9c 165
aba3e65f
DSH
166=item B<-startdate date>
167
c4de074e 168This allows the start date to be explicitly set. The format of the
909873bd
PY
169date is YYMMDDHHMMSSZ (the same as an ASN1 UTCTime structure), or
170YYYYMMDDHHMMSSZ (the same as an ASN1 GeneralizedTime structure). In
a970b14f 171both formats, seconds SS and timezone Z must be present.
aba3e65f
DSH
172
173=item B<-enddate date>
174
c4de074e 175This allows the expiry date to be explicitly set. The format of the
909873bd
PY
176date is YYMMDDHHMMSSZ (the same as an ASN1 UTCTime structure), or
177YYYYMMDDHHMMSSZ (the same as an ASN1 GeneralizedTime structure). In
a970b14f 178both formats, seconds SS and timezone Z must be present.
aba3e65f
DSH
179
180=item B<-days arg>
181
c4de074e 182The number of days to certify the certificate for.
aba3e65f
DSH
183
184=item B<-md alg>
185
c4de074e 186The message digest to use.
c03726ca 187Any digest supported by the OpenSSL B<dgst> command can be used.
aba3e65f
DSH
188This option also applies to CRLs.
189
190=item B<-policy arg>
191
c4de074e 192This option defines the CA "policy" to use. This is a section in
aba3e65f
DSH
193the configuration file which decides which fields should be mandatory
194or match the CA certificate. Check out the B<POLICY FORMAT> section
195for more information.
196
197=item B<-msie_hack>
198
a95d7574 199This is a deprecated option to make B<ca> work with very old versions of
aba3e65f
DSH
200the IE certificate enrollment control "certenr3". It used UniversalStrings
201for almost everything. Since the old control has various security bugs
a95d7574 202its use is strongly discouraged.
aba3e65f
DSH
203
204=item B<-preserveDN>
205
53b1899e 206Normally the DN order of a certificate is the same as the order of the
1bc74519 207fields in the relevant policy section. When this option is set the order
19d2bb57 208is the same as the request. This is largely for compatibility with the
53b1899e
DSH
209older IE enrollment control which would only accept certificates if their
210DNs match the order of the request. This is not needed for Xenroll.
aba3e65f 211
89da653f
BM
212=item B<-noemailDN>
213
214The DN of a certificate can contain the EMAIL field if present in the
215request DN, however it is good policy just having the e-mail set into
216the altName extension of the certificate. When this option is set the
217EMAIL field is removed from the certificate' subject and set only in
218the, eventually present, extensions. The B<email_in_dn> keyword can be
219used in the configuration file to enable this behaviour.
220
aba3e65f
DSH
221=item B<-batch>
222
c4de074e 223This sets the batch mode. In this mode no questions will be asked
aba3e65f
DSH
224and all certificates will be certified automatically.
225
226=item B<-extensions section>
227
c4de074e 228The section of the configuration file containing certificate extensions
dfebac32
BM
229to be added when a certificate is issued (defaults to B<x509_extensions>
230unless the B<-extfile> option is used). If no extension section is
231present then, a V1 certificate is created. If the extension section
137de5b1 232is present (even if it is empty), then a V3 certificate is created. See the:w
9b86974e 233L<x509v3_config(5)> manual page for details of the
137de5b1 234extension section format.
dfebac32
BM
235
236=item B<-extfile file>
237
c4de074e 238An additional configuration file to read certificate extensions from
dfebac32
BM
239(using the default section unless the B<-extensions> option is also
240used).
aba3e65f 241
bfa35550
RL
242=item B<-engine id>
243
c4de074e 244Specifying an engine (by its unique B<id> string) will cause B<ca>
bfa35550
RL
245to attempt to obtain a functional reference to the specified engine,
246thus initialising it if needed. The engine will then be set as the default
247for all available algorithms.
248
57eb1d32
NL
249=item B<-subj arg>
250
c4de074e 251Supersedes subject name given in the request.
57eb1d32
NL
252The arg must be formatted as I</type0=value0/type1=value1/type2=...>,
253characters may be escaped by \ (backslash), no spaces are skipped.
254
255=item B<-utf8>
256
c4de074e 257This option causes field values to be interpreted as UTF8 strings, by
57eb1d32
NL
258default they are interpreted as ASCII. This means that the field
259values, whether prompted from a terminal or obtained from a
260configuration file, must be valid UTF8 strings.
261
6755ff11
MR
262=item B<-create_serial>
263
c4de074e 264If reading serial from the text file as specified in the configuration
6755ff11
MR
265fails, specifying this option creates a new random serial to be used as next
266serial number.
ffb46830
RS
267To get random serial numbers, use the B<-rand_serial> flag instead; this
268should only be used for simple error-recovery.
269
270=item B<-rand_serial>
271
272Generate a large random number to use as the serial number.
273This overrides any option or configuration to use a serial number file.
6755ff11 274
57eb1d32
NL
275=item B<-multivalue-rdn>
276
4c583c36 277This option causes the -subj argument to be interpreted with full
57eb1d32
NL
278support for multivalued RDNs. Example:
279
280I</DC=org/DC=OpenSSL/DC=users/UID=123456+CN=John Doe>
281
282If -multi-rdn is not used then the UID value is I<123456+CN=John Doe>.
283
3ee1eac2
RS
284=item B<-rand file...>
285
286A file or files containing random data used to seed the random number
287generator.
288Multiple files can be specified separated by an OS-dependent character.
289The separator is B<;> for MS-Windows, B<,> for OpenVMS, and B<:> for
290all others.
291
292=item [B<-writerand file>]
293
294Writes random data to the specified I<file> upon exit.
295This can be used with a subsequent B<-rand> flag.
296
aba3e65f
DSH
297=back
298
299=head1 CRL OPTIONS
300
301=over 4
302
303=item B<-gencrl>
304
c4de074e 305This option generates a CRL based on information in the index file.
aba3e65f
DSH
306
307=item B<-crldays num>
308
c4de074e 309The number of days before the next CRL is due. That is the days from
aba3e65f
DSH
310now to place in the CRL nextUpdate field.
311
312=item B<-crlhours num>
313
c4de074e 314The number of hours before the next CRL is due.
aba3e65f
DSH
315
316=item B<-revoke filename>
317
c4de074e 318A filename containing a certificate to revoke.
aba3e65f 319
b4b42ce6
F
320=item B<-valid filename>
321
c4de074e 322A filename containing a certificate to add a Valid certificate entry.
b4b42ce6 323
fc1d88f0
RS
324=item B<-status serial>
325
c4de074e 326Displays the revocation status of the certificate with the specified
fc1d88f0
RS
327serial number and exits.
328
329=item B<-updatedb>
330
331Updates the database index to purge expired certificates.
332
d618f703
DSH
333=item B<-crl_reason reason>
334
c4de074e 335Revocation reason, where B<reason> is one of: B<unspecified>, B<keyCompromise>,
d618f703
DSH
336B<CACompromise>, B<affiliationChanged>, B<superseded>, B<cessationOfOperation>,
337B<certificateHold> or B<removeFromCRL>. The matching of B<reason> is case
338insensitive. Setting any revocation reason will make the CRL v2.
339
42b91f28 340In practice B<removeFromCRL> is not particularly useful because it is only used
d618f703
DSH
341in delta CRLs which are not currently implemented.
342
343=item B<-crl_hold instruction>
344
345This sets the CRL revocation reason code to B<certificateHold> and the hold
346instruction to B<instruction> which must be an OID. Although any OID can be
347used only B<holdInstructionNone> (the use of which is discouraged by RFC2459)
348B<holdInstructionCallIssuer> or B<holdInstructionReject> will normally be used.
349
350=item B<-crl_compromise time>
351
352This sets the revocation reason to B<keyCompromise> and the compromise time to
353B<time>. B<time> should be in GeneralizedTime format that is B<YYYYMMDDHHMMSSZ>.
354
355=item B<-crl_CA_compromise time>
356
357This is the same as B<crl_compromise> except the revocation reason is set to
358B<CACompromise>.
359
aba3e65f
DSH
360=item B<-crlexts section>
361
c4de074e 362The section of the configuration file containing CRL extensions to
aba3e65f
DSH
363include. If no CRL extension section is present then a V1 CRL is
364created, if the CRL extension section is present (even if it is
365empty) then a V2 CRL is created. The CRL extensions specified are
366CRL extensions and B<not> CRL entry extensions. It should be noted
137de5b1 367that some software (for example Netscape) can't handle V2 CRLs. See
9b86974e 368L<x509v3_config(5)> manual page for details of the
137de5b1 369extension section format.
aba3e65f
DSH
370
371=back
372
373=head1 CONFIGURATION FILE OPTIONS
374
8a0a9392
BM
375The section of the configuration file containing options for B<ca>
376is found as follows: If the B<-name> command line option is used,
377then it names the section to be used. Otherwise the section to
378be used must be named in the B<default_ca> option of the B<ca> section
379of the configuration file (or in the default section of the
380configuration file). Besides B<default_ca>, the following options are
381read directly from the B<ca> section:
382 RANDFILE
383 preserve
384 msie_hack
385With the exception of B<RANDFILE>, this is probably a bug and may
386change in future releases.
387
388Many of the configuration file options are identical to command line
aba3e65f
DSH
389options. Where the option is present in the configuration file
390and the command line the command line value is used. Where an
391option is described as mandatory then it must be present in
392the configuration file or the command line equivalent (if
393any) used.
394
395=over 4
396
5e76807b
DSH
397=item B<oid_file>
398
399This specifies a file containing additional B<OBJECT IDENTIFIERS>.
400Each line of the file should consist of the numerical form of the
401object identifier followed by white space then the short name followed
1bc74519 402by white space and finally the long name.
5e76807b
DSH
403
404=item B<oid_section>
405
406This specifies a section in the configuration file containing extra
407object identifiers. Each line should consist of the short name of the
408object identifier followed by B<=> and the numerical form. The short
409and long names are the same when this option is used.
410
aba3e65f
DSH
411=item B<new_certs_dir>
412
c4de074e 413The same as the B<-outdir> command line option. It specifies
aba3e65f
DSH
414the directory where new certificates will be placed. Mandatory.
415
416=item B<certificate>
417
c4de074e 418The same as B<-cert>. It gives the file containing the CA
aba3e65f
DSH
419certificate. Mandatory.
420
421=item B<private_key>
422
c4de074e 423Same as the B<-keyfile> option. The file containing the
aba3e65f
DSH
424CA private key. Mandatory.
425
426=item B<RANDFILE>
427
3ee1eac2
RS
428At startup the specified file is loaded into the random number generator,
429and at exit 256 bytes will be written to it.
aba3e65f
DSH
430
431=item B<default_days>
432
c4de074e 433The same as the B<-days> option. The number of days to certify
1bc74519 434a certificate for.
aba3e65f
DSH
435
436=item B<default_startdate>
437
c4de074e 438The same as the B<-startdate> option. The start date to certify
aba3e65f
DSH
439a certificate for. If not set the current time is used.
440
441=item B<default_enddate>
442
c4de074e 443The same as the B<-enddate> option. Either this option or
aba3e65f
DSH
444B<default_days> (or the command line equivalents) must be
445present.
446
447=item B<default_crl_hours default_crl_days>
448
c4de074e 449The same as the B<-crlhours> and the B<-crldays> options. These
aba3e65f
DSH
450will only be used if neither command line option is present. At
451least one of these must be present to generate a CRL.
452
453=item B<default_md>
454
c4de074e 455The same as the B<-md> option. Mandatory.
aba3e65f
DSH
456
457=item B<database>
458
c4de074e 459The text database file to use. Mandatory. This file must be present
aba3e65f
DSH
460though initially it will be empty.
461
d6df2b28
RL
462=item B<unique_subject>
463
c4de074e 464If the value B<yes> is given, the valid certificate entries in the
d6df2b28
RL
465database must have unique subjects. if the value B<no> is given,
466several valid certificate entries may have the exact same subject.
467The default value is B<yes>, to be compatible with older (pre 0.9.8)
468versions of OpenSSL. However, to make CA certificate roll-over easier,
469it's recommended to use the value B<no>, especially if combined with
470the B<-selfsign> command line option.
471
c5aba56c 472=item B<serial>
aba3e65f 473
c4de074e 474A text file containing the next serial number to use in hex. Mandatory.
aba3e65f
DSH
475This file must be present and contain a valid serial number.
476
8fbb2af3
RL
477=item B<crlnumber>
478
c4de074e 479A text file containing the next CRL number to use in hex. The crl number
8fbb2af3
RL
480will be inserted in the CRLs only if this file exists. If this file is
481present, it must contain a valid CRL number.
482
aba3e65f
DSH
483=item B<x509_extensions>
484
c4de074e 485The same as B<-extensions>.
aba3e65f
DSH
486
487=item B<crl_extensions>
488
c4de074e 489The same as B<-crlexts>.
aba3e65f
DSH
490
491=item B<preserve>
492
c4de074e 493The same as B<-preserveDN>
aba3e65f 494
89da653f
BM
495=item B<email_in_dn>
496
c4de074e 497The same as B<-noemailDN>. If you want the EMAIL field to be removed
89da653f
BM
498from the DN of the certificate simply set this to 'no'. If not present
499the default is to allow for the EMAIL filed in the certificate's DN.
500
aba3e65f
DSH
501=item B<msie_hack>
502
c4de074e 503The same as B<-msie_hack>
aba3e65f
DSH
504
505=item B<policy>
506
c4de074e 507The same as B<-policy>. Mandatory. See the B<POLICY FORMAT> section
aba3e65f
DSH
508for more information.
509
b325518f 510=item B<name_opt>, B<cert_opt>
e890dcdb 511
c4de074e 512These options allow the format used to display the certificate details
e890dcdb
DSH
513when asking the user to confirm signing. All the options supported by
514the B<x509> utilities B<-nameopt> and B<-certopt> switches can be used
515here, except the B<no_signame> and B<no_sigdump> are permanently set
516and cannot be disabled (this is because the certificate signature cannot
517be displayed because the certificate has not been signed at this point).
518
6f2f534b 519For convenience the values B<ca_default> are accepted by both to produce
e890dcdb
DSH
520a reasonable output.
521
522If neither option is present the format used in earlier versions of
523OpenSSL is used. Use of the old format is B<strongly> discouraged because
524it only displays fields mentioned in the B<policy> section, mishandles
525multicharacter string types and does not display extensions.
526
791bd0cd
DSH
527=item B<copy_extensions>
528
c4de074e 529Determines how extensions in certificate requests should be handled.
791bd0cd
DSH
530If set to B<none> or this option is not present then extensions are
531ignored and not copied to the certificate. If set to B<copy> then any
532extensions present in the request that are not already present are copied
533to the certificate. If set to B<copyall> then all extensions in the
534request are copied to the certificate: if the extension is already present
535in the certificate it is deleted first. See the B<WARNINGS> section before
536using this option.
537
538The main use of this option is to allow a certificate request to supply
539values for certain extensions such as subjectAltName.
540
aba3e65f
DSH
541=back
542
543=head1 POLICY FORMAT
544
545The policy section consists of a set of variables corresponding to
546certificate DN fields. If the value is "match" then the field value
547must match the same field in the CA certificate. If the value is
548"supplied" then it must be present. If the value is "optional" then
549it may be present. Any fields not mentioned in the policy section
550are silently deleted, unless the B<-preserveDN> option is set but
551this can be regarded more of a quirk than intended behaviour.
552
553=head1 SPKAC FORMAT
554
555The input to the B<-spkac> command line option is a Netscape
556signed public key and challenge. This will usually come from
1bc74519 557the B<KEYGEN> tag in an HTML form to create a new private key.
aba3e65f
DSH
558It is however possible to create SPKACs using the B<spkac> utility.
559
560The file should contain the variable SPKAC set to the value of
561the SPKAC and also the required DN components as name value pairs.
562If you need to include the same component twice then it can be
563preceded by a number and a '.'.
564
fc1d88f0
RS
565When processing SPKAC format, the output is DER if the B<-out>
566flag is used, but PEM format if sending to stdout or the B<-outdir>
567flag is used.
568
aba3e65f
DSH
569=head1 EXAMPLES
570
571Note: these examples assume that the B<ca> directory structure is
572already set up and the relevant files already exist. This usually
573involves creating a CA certificate and private key with B<req>, a
574serial number file and an empty index file and placing them in
575the relevant directories.
576
577To use the sample configuration file below the directories demoCA,
578demoCA/private and demoCA/newcerts would be created. The CA
579certificate would be copied to demoCA/cacert.pem and its private
580key to demoCA/private/cakey.pem. A file demoCA/serial would be
581created containing for example "01" and the empty index file
582demoCA/index.txt.
583
584
585Sign a certificate request:
586
1675f6eb 587 openssl ca -in req.pem -out newcert.pem
aba3e65f 588
d428bf8c
DSH
589Sign a certificate request, using CA extensions:
590
591 openssl ca -in req.pem -extensions v3_ca -out newcert.pem
592
aba3e65f
DSH
593Generate a CRL
594
1675f6eb 595 openssl ca -gencrl -out crl.pem
aba3e65f
DSH
596
597Sign several requests:
598
1675f6eb 599 openssl ca -infiles req1.pem req2.pem req3.pem
aba3e65f
DSH
600
601Certify a Netscape SPKAC:
602
1675f6eb 603 openssl ca -spkac spkac.txt
aba3e65f
DSH
604
605A sample SPKAC file (the SPKAC line has been truncated for clarity):
606
607 SPKAC=MIG0MGAwXDANBgkqhkiG9w0BAQEFAANLADBIAkEAn7PDhCeV/xIxUg8V70YRxK2A5
608 CN=Steve Test
609 emailAddress=steve@openssl.org
610 0.OU=OpenSSL Group
611 1.OU=Another Group
612
613A sample configuration file with the relevant sections for B<ca>:
614
615 [ ca ]
616 default_ca = CA_default # The default ca section
1bc74519 617
aba3e65f
DSH
618 [ CA_default ]
619
620 dir = ./demoCA # top dir
621 database = $dir/index.txt # index file.
1bc74519
RS
622 new_certs_dir = $dir/newcerts # new certs dir
623
aba3e65f
DSH
624 certificate = $dir/cacert.pem # The CA cert
625 serial = $dir/serial # serial no file
ffb46830 626 #rand_serial = yes # for random serial#'s
aba3e65f
DSH
627 private_key = $dir/private/cakey.pem# CA private key
628 RANDFILE = $dir/private/.rand # random number file
1bc74519 629
aba3e65f
DSH
630 default_days = 365 # how long to certify for
631 default_crl_days= 30 # how long before next CRL
632 default_md = md5 # md to use
633
634 policy = policy_any # default policy
89da653f 635 email_in_dn = no # Don't add the email into cert DN
aba3e65f 636
1bc74519
RS
637 name_opt = ca_default # Subject name display option
638 cert_opt = ca_default # Certificate display option
639 copy_extensions = none # Don't copy extensions from request
e890dcdb 640
aba3e65f
DSH
641 [ policy_any ]
642 countryName = supplied
643 stateOrProvinceName = optional
644 organizationName = optional
645 organizationalUnitName = optional
646 commonName = supplied
647 emailAddress = optional
648
aba3e65f
DSH
649=head1 FILES
650
651Note: the location of all files can change either by compile time options,
19d2bb57 652configuration file entries, environment variables or command line options.
aba3e65f
DSH
653The values below reflect the default values.
654
655 /usr/local/ssl/lib/openssl.cnf - master configuration file
656 ./demoCA - main CA directory
657 ./demoCA/cacert.pem - CA certificate
658 ./demoCA/private/cakey.pem - CA private key
659 ./demoCA/serial - CA serial number file
660 ./demoCA/serial.old - CA serial number backup file
661 ./demoCA/index.txt - CA text database file
662 ./demoCA/index.txt.old - CA text database backup file
663 ./demoCA/certs - certificate output file
664 ./demoCA/.rnd - CA random seed information
665
aba3e65f
DSH
666=head1 RESTRICTIONS
667
1bc74519 668The text database index file is a critical part of the process and
aba3e65f
DSH
669if corrupted it can be difficult to fix. It is theoretically possible
670to rebuild the index file from all the issued certificates and a current
671CRL: however there is no option to do this.
672
cb26a20c 673V2 CRL features like delta CRLs are not currently supported.
aba3e65f
DSH
674
675Although several requests can be input and handled at once it is only
77a795e4 676possible to include one SPKAC or self-signed certificate.
aba3e65f
DSH
677
678=head1 BUGS
679
77a795e4 680The use of an in-memory text database can cause problems when large
aba3e65f
DSH
681numbers of certificates are present because, as the name implies
682the database has to be kept in memory.
683
aba3e65f
DSH
684The B<ca> command really needs rewriting or the required functionality
685exposed at either a command or interface level so a more friendly utility
be739b0c
RS
686(perl script or GUI) can handle things properly. The script
687B<CA.pl> helps a little but not very much.
aba3e65f
DSH
688
689Any fields in a request that are not present in a policy are silently
89da653f
BM
690deleted. This does not happen if the B<-preserveDN> option is used. To
691enforce the absence of the EMAIL field within the DN, as suggested by
692RFCs, regardless the contents of the request' subject the B<-noemailDN>
693option can be used. The behaviour should be more friendly and
694configurable.
aba3e65f 695
42b91f28 696Canceling some commands by refusing to certify a certificate can
aba3e65f
DSH
697create an empty file.
698
791bd0cd
DSH
699=head1 WARNINGS
700
1f309464
LJ
701The B<ca> command is quirky and at times downright unfriendly.
702
703The B<ca> utility was originally meant as an example of how to do things
704in a CA. It was not supposed to be used as a full blown CA itself:
705nevertheless some people are using it for this purpose.
706
707The B<ca> command is effectively a single user command: no locking is
708done on the various files and attempts to run more than one B<ca> command
709on the same database can have unpredictable results.
710
791bd0cd
DSH
711The B<copy_extensions> option should be used with caution. If care is
712not taken then it can be a security risk. For example if a certificate
713request contains a basicConstraints extension with CA:TRUE and the
714B<copy_extensions> value is set to B<copyall> and the user does not spot
42b91f28 715this when the certificate is displayed then this will hand the requester
791bd0cd
DSH
716a valid CA certificate.
717
718This situation can be avoided by setting B<copy_extensions> to B<copy>
719and including basicConstraints with CA:FALSE in the configuration file.
720Then if the request contains a basicConstraints extension it will be
721ignored.
722
723It is advisable to also include values for other extensions such
724as B<keyUsage> to prevent a request supplying its own values.
725
726Additional restrictions can be placed on the CA certificate itself.
727For example if the CA certificate has:
728
729 basicConstraints = CA:TRUE, pathlen:0
730
731then even if a certificate is issued with CA:TRUE it will not be valid.
732
909873bd
PY
733=head1 HISTORY
734
735Since OpenSSL 1.1.1, the program follows RFC5280. Specifically,
736certificate validity period (specified by any of B<-startdate>,
737B<-enddate> and B<-days>) will be encoded as UTCTime if the dates are
738earlier than year 2049 (included), and as GeneralizedTime if the dates
739are in year 2050 or later.
740
aba3e65f
DSH
741=head1 SEE ALSO
742
9b86974e 743L<req(1)>, L<spkac(1)>, L<x509(1)>, L<CA.pl(1)>,
1bc74519 744L<config(5)>, L<x509v3_config(5)>
aba3e65f 745
e2f92610
RS
746=head1 COPYRIGHT
747
c4de074e 748Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved.
e2f92610
RS
749
750Licensed under the OpenSSL license (the "License"). You may not use
751this file except in compliance with the License. You can obtain a copy
752in the file LICENSE in the source distribution or at
753L<https://www.openssl.org/source/license.html>.
754
755=cut