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