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