]> git.ipfire.org Git - thirdparty/openssl.git/blame - doc/man1/ca.pod
Update copyright year
[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
5af88441
MC
472Note that it is valid in some circumstances for certificates to be created
473without any subject. In the case where there are multiple certificates without
474subjects this does not count as a duplicate.
475
c5aba56c 476=item B<serial>
aba3e65f 477
c4de074e 478A text file containing the next serial number to use in hex. Mandatory.
aba3e65f
DSH
479This file must be present and contain a valid serial number.
480
8fbb2af3
RL
481=item B<crlnumber>
482
c4de074e 483A text file containing the next CRL number to use in hex. The crl number
8fbb2af3
RL
484will be inserted in the CRLs only if this file exists. If this file is
485present, it must contain a valid CRL number.
486
aba3e65f
DSH
487=item B<x509_extensions>
488
c4de074e 489The same as B<-extensions>.
aba3e65f
DSH
490
491=item B<crl_extensions>
492
c4de074e 493The same as B<-crlexts>.
aba3e65f
DSH
494
495=item B<preserve>
496
c4de074e 497The same as B<-preserveDN>
aba3e65f 498
89da653f
BM
499=item B<email_in_dn>
500
c4de074e 501The same as B<-noemailDN>. If you want the EMAIL field to be removed
89da653f
BM
502from the DN of the certificate simply set this to 'no'. If not present
503the default is to allow for the EMAIL filed in the certificate's DN.
504
aba3e65f
DSH
505=item B<msie_hack>
506
c4de074e 507The same as B<-msie_hack>
aba3e65f
DSH
508
509=item B<policy>
510
c4de074e 511The same as B<-policy>. Mandatory. See the B<POLICY FORMAT> section
aba3e65f
DSH
512for more information.
513
b325518f 514=item B<name_opt>, B<cert_opt>
e890dcdb 515
c4de074e 516These options allow the format used to display the certificate details
e890dcdb
DSH
517when asking the user to confirm signing. All the options supported by
518the B<x509> utilities B<-nameopt> and B<-certopt> switches can be used
519here, except the B<no_signame> and B<no_sigdump> are permanently set
520and cannot be disabled (this is because the certificate signature cannot
521be displayed because the certificate has not been signed at this point).
522
6f2f534b 523For convenience the values B<ca_default> are accepted by both to produce
e890dcdb
DSH
524a reasonable output.
525
526If neither option is present the format used in earlier versions of
527OpenSSL is used. Use of the old format is B<strongly> discouraged because
528it only displays fields mentioned in the B<policy> section, mishandles
529multicharacter string types and does not display extensions.
530
791bd0cd
DSH
531=item B<copy_extensions>
532
c4de074e 533Determines how extensions in certificate requests should be handled.
791bd0cd
DSH
534If set to B<none> or this option is not present then extensions are
535ignored and not copied to the certificate. If set to B<copy> then any
536extensions present in the request that are not already present are copied
537to the certificate. If set to B<copyall> then all extensions in the
538request are copied to the certificate: if the extension is already present
539in the certificate it is deleted first. See the B<WARNINGS> section before
540using this option.
541
542The main use of this option is to allow a certificate request to supply
543values for certain extensions such as subjectAltName.
544
aba3e65f
DSH
545=back
546
547=head1 POLICY FORMAT
548
549The policy section consists of a set of variables corresponding to
550certificate DN fields. If the value is "match" then the field value
551must match the same field in the CA certificate. If the value is
552"supplied" then it must be present. If the value is "optional" then
553it may be present. Any fields not mentioned in the policy section
554are silently deleted, unless the B<-preserveDN> option is set but
555this can be regarded more of a quirk than intended behaviour.
556
557=head1 SPKAC FORMAT
558
559The input to the B<-spkac> command line option is a Netscape
560signed public key and challenge. This will usually come from
1bc74519 561the B<KEYGEN> tag in an HTML form to create a new private key.
aba3e65f
DSH
562It is however possible to create SPKACs using the B<spkac> utility.
563
564The file should contain the variable SPKAC set to the value of
565the SPKAC and also the required DN components as name value pairs.
566If you need to include the same component twice then it can be
567preceded by a number and a '.'.
568
fc1d88f0
RS
569When processing SPKAC format, the output is DER if the B<-out>
570flag is used, but PEM format if sending to stdout or the B<-outdir>
571flag is used.
572
aba3e65f
DSH
573=head1 EXAMPLES
574
575Note: these examples assume that the B<ca> directory structure is
576already set up and the relevant files already exist. This usually
577involves creating a CA certificate and private key with B<req>, a
578serial number file and an empty index file and placing them in
579the relevant directories.
580
581To use the sample configuration file below the directories demoCA,
582demoCA/private and demoCA/newcerts would be created. The CA
583certificate would be copied to demoCA/cacert.pem and its private
584key to demoCA/private/cakey.pem. A file demoCA/serial would be
585created containing for example "01" and the empty index file
586demoCA/index.txt.
587
588
589Sign a certificate request:
590
1675f6eb 591 openssl ca -in req.pem -out newcert.pem
aba3e65f 592
d428bf8c
DSH
593Sign a certificate request, using CA extensions:
594
595 openssl ca -in req.pem -extensions v3_ca -out newcert.pem
596
aba3e65f
DSH
597Generate a CRL
598
1675f6eb 599 openssl ca -gencrl -out crl.pem
aba3e65f
DSH
600
601Sign several requests:
602
1675f6eb 603 openssl ca -infiles req1.pem req2.pem req3.pem
aba3e65f
DSH
604
605Certify a Netscape SPKAC:
606
1675f6eb 607 openssl ca -spkac spkac.txt
aba3e65f
DSH
608
609A sample SPKAC file (the SPKAC line has been truncated for clarity):
610
611 SPKAC=MIG0MGAwXDANBgkqhkiG9w0BAQEFAANLADBIAkEAn7PDhCeV/xIxUg8V70YRxK2A5
612 CN=Steve Test
613 emailAddress=steve@openssl.org
614 0.OU=OpenSSL Group
615 1.OU=Another Group
616
617A sample configuration file with the relevant sections for B<ca>:
618
619 [ ca ]
620 default_ca = CA_default # The default ca section
1bc74519 621
aba3e65f
DSH
622 [ CA_default ]
623
624 dir = ./demoCA # top dir
625 database = $dir/index.txt # index file.
1bc74519
RS
626 new_certs_dir = $dir/newcerts # new certs dir
627
aba3e65f
DSH
628 certificate = $dir/cacert.pem # The CA cert
629 serial = $dir/serial # serial no file
ffb46830 630 #rand_serial = yes # for random serial#'s
aba3e65f
DSH
631 private_key = $dir/private/cakey.pem# CA private key
632 RANDFILE = $dir/private/.rand # random number file
1bc74519 633
aba3e65f
DSH
634 default_days = 365 # how long to certify for
635 default_crl_days= 30 # how long before next CRL
636 default_md = md5 # md to use
637
638 policy = policy_any # default policy
89da653f 639 email_in_dn = no # Don't add the email into cert DN
aba3e65f 640
1bc74519
RS
641 name_opt = ca_default # Subject name display option
642 cert_opt = ca_default # Certificate display option
643 copy_extensions = none # Don't copy extensions from request
e890dcdb 644
aba3e65f
DSH
645 [ policy_any ]
646 countryName = supplied
647 stateOrProvinceName = optional
648 organizationName = optional
649 organizationalUnitName = optional
650 commonName = supplied
651 emailAddress = optional
652
aba3e65f
DSH
653=head1 FILES
654
655Note: the location of all files can change either by compile time options,
19d2bb57 656configuration file entries, environment variables or command line options.
aba3e65f
DSH
657The values below reflect the default values.
658
659 /usr/local/ssl/lib/openssl.cnf - master configuration file
660 ./demoCA - main CA directory
661 ./demoCA/cacert.pem - CA certificate
662 ./demoCA/private/cakey.pem - CA private key
663 ./demoCA/serial - CA serial number file
664 ./demoCA/serial.old - CA serial number backup file
665 ./demoCA/index.txt - CA text database file
666 ./demoCA/index.txt.old - CA text database backup file
667 ./demoCA/certs - certificate output file
668 ./demoCA/.rnd - CA random seed information
669
aba3e65f
DSH
670=head1 RESTRICTIONS
671
1bc74519 672The text database index file is a critical part of the process and
aba3e65f
DSH
673if corrupted it can be difficult to fix. It is theoretically possible
674to rebuild the index file from all the issued certificates and a current
675CRL: however there is no option to do this.
676
cb26a20c 677V2 CRL features like delta CRLs are not currently supported.
aba3e65f
DSH
678
679Although several requests can be input and handled at once it is only
77a795e4 680possible to include one SPKAC or self-signed certificate.
aba3e65f
DSH
681
682=head1 BUGS
683
77a795e4 684The use of an in-memory text database can cause problems when large
aba3e65f
DSH
685numbers of certificates are present because, as the name implies
686the database has to be kept in memory.
687
aba3e65f
DSH
688The B<ca> command really needs rewriting or the required functionality
689exposed at either a command or interface level so a more friendly utility
be739b0c
RS
690(perl script or GUI) can handle things properly. The script
691B<CA.pl> helps a little but not very much.
aba3e65f
DSH
692
693Any fields in a request that are not present in a policy are silently
89da653f
BM
694deleted. This does not happen if the B<-preserveDN> option is used. To
695enforce the absence of the EMAIL field within the DN, as suggested by
696RFCs, regardless the contents of the request' subject the B<-noemailDN>
697option can be used. The behaviour should be more friendly and
698configurable.
aba3e65f 699
42b91f28 700Canceling some commands by refusing to certify a certificate can
aba3e65f
DSH
701create an empty file.
702
791bd0cd
DSH
703=head1 WARNINGS
704
1f309464
LJ
705The B<ca> command is quirky and at times downright unfriendly.
706
707The B<ca> utility was originally meant as an example of how to do things
708in a CA. It was not supposed to be used as a full blown CA itself:
709nevertheless some people are using it for this purpose.
710
711The B<ca> command is effectively a single user command: no locking is
712done on the various files and attempts to run more than one B<ca> command
713on the same database can have unpredictable results.
714
791bd0cd
DSH
715The B<copy_extensions> option should be used with caution. If care is
716not taken then it can be a security risk. For example if a certificate
717request contains a basicConstraints extension with CA:TRUE and the
718B<copy_extensions> value is set to B<copyall> and the user does not spot
42b91f28 719this when the certificate is displayed then this will hand the requester
791bd0cd
DSH
720a valid CA certificate.
721
722This situation can be avoided by setting B<copy_extensions> to B<copy>
723and including basicConstraints with CA:FALSE in the configuration file.
724Then if the request contains a basicConstraints extension it will be
725ignored.
726
727It is advisable to also include values for other extensions such
728as B<keyUsage> to prevent a request supplying its own values.
729
730Additional restrictions can be placed on the CA certificate itself.
731For example if the CA certificate has:
732
733 basicConstraints = CA:TRUE, pathlen:0
734
735then even if a certificate is issued with CA:TRUE it will not be valid.
736
909873bd
PY
737=head1 HISTORY
738
739Since OpenSSL 1.1.1, the program follows RFC5280. Specifically,
740certificate validity period (specified by any of B<-startdate>,
741B<-enddate> and B<-days>) will be encoded as UTCTime if the dates are
742earlier than year 2049 (included), and as GeneralizedTime if the dates
743are in year 2050 or later.
744
aba3e65f
DSH
745=head1 SEE ALSO
746
9b86974e 747L<req(1)>, L<spkac(1)>, L<x509(1)>, L<CA.pl(1)>,
1bc74519 748L<config(5)>, L<x509v3_config(5)>
aba3e65f 749
e2f92610
RS
750=head1 COPYRIGHT
751
b0edda11 752Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved.
e2f92610
RS
753
754Licensed under the OpenSSL license (the "License"). You may not use
755this file except in compliance with the License. You can obtain a copy
756in the file LICENSE in the source distribution or at
757L<https://www.openssl.org/source/license.html>.
758
759=cut