1*66bae5e7Schristos=pod
2*66bae5e7Schristos{- OpenSSL::safe::output_do_not_edit_headers(); -}
3*66bae5e7Schristos
4*66bae5e7Schristos=head1 NAME
5*66bae5e7Schristos
6*66bae5e7Schristosopenssl-ca - sample minimal CA application
7*66bae5e7Schristos
8*66bae5e7Schristos=head1 SYNOPSIS
9*66bae5e7Schristos
10*66bae5e7SchristosB<openssl> B<ca>
11*66bae5e7Schristos[B<-help>]
12*66bae5e7Schristos[B<-verbose>]
13*66bae5e7Schristos[B<-config> I<filename>]
14*66bae5e7Schristos[B<-name> I<section>]
15*66bae5e7Schristos[B<-section> I<section>]
16*66bae5e7Schristos[B<-gencrl>]
17*66bae5e7Schristos[B<-revoke> I<file>]
18*66bae5e7Schristos[B<-valid> I<file>]
19*66bae5e7Schristos[B<-status> I<serial>]
20*66bae5e7Schristos[B<-updatedb>]
21*66bae5e7Schristos[B<-crl_reason> I<reason>]
22*66bae5e7Schristos[B<-crl_hold> I<instruction>]
23*66bae5e7Schristos[B<-crl_compromise> I<time>]
24*66bae5e7Schristos[B<-crl_CA_compromise> I<time>]
25*66bae5e7Schristos[B<-crl_lastupdate> I<date>]
26*66bae5e7Schristos[B<-crl_nextupdate> I<date>]
27*66bae5e7Schristos[B<-crldays> I<days>]
28*66bae5e7Schristos[B<-crlhours> I<hours>]
29*66bae5e7Schristos[B<-crlsec> I<seconds>]
30*66bae5e7Schristos[B<-crlexts> I<section>]
31*66bae5e7Schristos[B<-startdate> I<date>]
32*66bae5e7Schristos[B<-enddate> I<date>]
33*66bae5e7Schristos[B<-days> I<arg>]
34*66bae5e7Schristos[B<-md> I<arg>]
35*66bae5e7Schristos[B<-policy> I<arg>]
36*66bae5e7Schristos[B<-keyfile> I<filename>|I<uri>]
37*66bae5e7Schristos[B<-keyform> B<DER>|B<PEM>|B<P12>|B<ENGINE>]
38*66bae5e7Schristos[B<-key> I<arg>]
39*66bae5e7Schristos[B<-passin> I<arg>]
40*66bae5e7Schristos[B<-cert> I<file>]
41*66bae5e7Schristos[B<-certform> B<DER>|B<PEM>|B<P12>]
42*66bae5e7Schristos[B<-selfsign>]
43*66bae5e7Schristos[B<-in> I<file>]
44*66bae5e7Schristos[B<-inform> B<DER>|<PEM>]
45*66bae5e7Schristos[B<-out> I<file>]
46*66bae5e7Schristos[B<-notext>]
47*66bae5e7Schristos[B<-dateopt>]
48*66bae5e7Schristos[B<-outdir> I<dir>]
49*66bae5e7Schristos[B<-infiles>]
50*66bae5e7Schristos[B<-spkac> I<file>]
51*66bae5e7Schristos[B<-ss_cert> I<file>]
52*66bae5e7Schristos[B<-preserveDN>]
53*66bae5e7Schristos[B<-noemailDN>]
54*66bae5e7Schristos[B<-batch>]
55*66bae5e7Schristos[B<-msie_hack>]
56*66bae5e7Schristos[B<-extensions> I<section>]
57*66bae5e7Schristos[B<-extfile> I<section>]
58*66bae5e7Schristos[B<-subj> I<arg>]
59*66bae5e7Schristos[B<-utf8>]
60*66bae5e7Schristos[B<-sigopt> I<nm>:I<v>]
61*66bae5e7Schristos[B<-vfyopt> I<nm>:I<v>]
62*66bae5e7Schristos[B<-create_serial>]
63*66bae5e7Schristos[B<-rand_serial>]
64*66bae5e7Schristos[B<-multivalue-rdn>]
65*66bae5e7Schristos{- $OpenSSL::safe::opt_r_synopsis -}
66*66bae5e7Schristos{- $OpenSSL::safe::opt_engine_synopsis -}{- $OpenSSL::safe::opt_provider_synopsis -}
67*66bae5e7Schristos[I<certreq>...]
68*66bae5e7Schristos
69*66bae5e7Schristos=head1 DESCRIPTION
70*66bae5e7Schristos
71*66bae5e7SchristosThis command emulates a CA application.
72*66bae5e7SchristosSee the B<WARNINGS> especially when considering to use it productively.
73*66bae5e7SchristosIt can be used to sign certificate requests (CSRs) in a variety of forms
74*66bae5e7Schristosand generate certificate revocation lists (CRLs).
75*66bae5e7SchristosIt also maintains a text database of issued certificates and their status.
76*66bae5e7SchristosWhen signing certificates, a single request can be specified
77*66bae5e7Schristoswith the B<-in> option, or multiple requests can be processed by
78*66bae5e7Schristosspecifying a set of B<certreq> files after all options.
79*66bae5e7Schristos
80*66bae5e7SchristosNote that there are also very lean ways of generating certificates:
81*66bae5e7Schristosthe B<req> and B<x509> commands can be used for directly creating certificates.
82*66bae5e7SchristosSee L<openssl-req(1)> and L<openssl-x509(1)> for details.
83*66bae5e7Schristos
84*66bae5e7SchristosThe descriptions of the B<ca> command options are divided into each purpose.
85*66bae5e7Schristos
86*66bae5e7Schristos=head1 OPTIONS
87*66bae5e7Schristos
88*66bae5e7Schristos=over 4
89*66bae5e7Schristos
90*66bae5e7Schristos=item B<-help>
91*66bae5e7Schristos
92*66bae5e7SchristosPrint out a usage message.
93*66bae5e7Schristos
94*66bae5e7Schristos=item B<-verbose>
95*66bae5e7Schristos
96*66bae5e7SchristosThis prints extra details about the operations being performed.
97*66bae5e7Schristos
98*66bae5e7Schristos=item B<-config> I<filename>
99*66bae5e7Schristos
100*66bae5e7SchristosSpecifies the configuration file to use.
101*66bae5e7SchristosOptional; for a description of the default value,
102*66bae5e7Schristossee L<openssl(1)/COMMAND SUMMARY>.
103*66bae5e7Schristos
104*66bae5e7Schristos=item B<-name> I<section>, B<-section> I<section>
105*66bae5e7Schristos
106*66bae5e7SchristosSpecifies the configuration file section to use (overrides
107*66bae5e7SchristosB<default_ca> in the B<ca> section).
108*66bae5e7Schristos
109*66bae5e7Schristos=item B<-in> I<filename>
110*66bae5e7Schristos
111*66bae5e7SchristosAn input filename containing a single certificate request (CSR) to be
112*66bae5e7Schristossigned by the CA.
113*66bae5e7Schristos
114*66bae5e7Schristos=item B<-inform> B<DER>|B<PEM>
115*66bae5e7Schristos
116*66bae5e7SchristosThe format of the data in certificate request input files;
117*66bae5e7Schristosunspecified by default.
118*66bae5e7SchristosSee L<openssl-format-options(1)> for details.
119*66bae5e7Schristos
120*66bae5e7Schristos=item B<-ss_cert> I<filename>
121*66bae5e7Schristos
122*66bae5e7SchristosA single self-signed certificate to be signed by the CA.
123*66bae5e7Schristos
124*66bae5e7Schristos=item B<-spkac> I<filename>
125*66bae5e7Schristos
126*66bae5e7SchristosA file containing a single Netscape signed public key and challenge
127*66bae5e7Schristosand additional field values to be signed by the CA. See the B<SPKAC FORMAT>
128*66bae5e7Schristossection for information on the required input and output format.
129*66bae5e7Schristos
130*66bae5e7Schristos=item B<-infiles>
131*66bae5e7Schristos
132*66bae5e7SchristosIf present this should be the last option, all subsequent arguments
133*66bae5e7Schristosare taken as the names of files containing certificate requests.
134*66bae5e7Schristos
135*66bae5e7Schristos=item B<-out> I<filename>
136*66bae5e7Schristos
137*66bae5e7SchristosThe output file to output certificates to. The default is standard
138*66bae5e7Schristosoutput. The certificate details will also be printed out to this
139*66bae5e7Schristosfile in PEM format (except that B<-spkac> outputs DER format).
140*66bae5e7Schristos
141*66bae5e7Schristos=item B<-outdir> I<directory>
142*66bae5e7Schristos
143*66bae5e7SchristosThe directory to output certificates to. The certificate will be
144*66bae5e7Schristoswritten to a filename consisting of the serial number in hex with
145*66bae5e7SchristosF<.pem> appended.
146*66bae5e7Schristos
147*66bae5e7Schristos=item B<-cert> I<filename>
148*66bae5e7Schristos
149*66bae5e7SchristosThe CA certificate, which must match with B<-keyfile>.
150*66bae5e7Schristos
151*66bae5e7Schristos=item B<-certform> B<DER>|B<PEM>|B<P12>
152*66bae5e7Schristos
153*66bae5e7SchristosThe format of the data in certificate input files; unspecified by default.
154*66bae5e7SchristosSee L<openssl-format-options(1)> for details.
155*66bae5e7Schristos
156*66bae5e7Schristos=item B<-keyfile> I<filename>|I<uri>
157*66bae5e7Schristos
158*66bae5e7SchristosThe CA private key to sign certificate requests with.
159*66bae5e7SchristosThis must match with B<-cert>.
160*66bae5e7Schristos
161*66bae5e7Schristos=item B<-keyform> B<DER>|B<PEM>|B<P12>|B<ENGINE>
162*66bae5e7Schristos
163*66bae5e7SchristosThe format of the private key input file; unspecified by default.
164*66bae5e7SchristosSee L<openssl-format-options(1)> for details.
165*66bae5e7Schristos
166*66bae5e7Schristos=item B<-sigopt> I<nm>:I<v>
167*66bae5e7Schristos
168*66bae5e7SchristosPass options to the signature algorithm during sign operations.
169*66bae5e7SchristosNames and values of these options are algorithm-specific.
170*66bae5e7Schristos
171*66bae5e7Schristos=item B<-vfyopt> I<nm>:I<v>
172*66bae5e7Schristos
173*66bae5e7SchristosPass options to the signature algorithm during verify operations.
174*66bae5e7SchristosNames and values of these options are algorithm-specific.
175*66bae5e7Schristos
176*66bae5e7SchristosThis often needs to be given while signing too, because the self-signature of
177*66bae5e7Schristosa certificate signing request (CSR) is verified against the included public key,
178*66bae5e7Schristosand that verification may need its own set of options.
179*66bae5e7Schristos
180*66bae5e7Schristos=item B<-key> I<password>
181*66bae5e7Schristos
182*66bae5e7Schristos=for openssl foreign manual ps(1)
183*66bae5e7Schristos
184*66bae5e7SchristosThe password used to encrypt the private key. Since on some
185*66bae5e7Schristossystems the command line arguments are visible (e.g., when using
186*66bae5e7SchristosL<ps(1)> on Unix),
187*66bae5e7Schristosthis option should be used with caution.
188*66bae5e7SchristosBetter use B<-passin>.
189*66bae5e7Schristos
190*66bae5e7Schristos=item B<-passin> I<arg>
191*66bae5e7Schristos
192*66bae5e7SchristosThe key password source for key files and certificate PKCS#12 files.
193*66bae5e7SchristosFor more information about the format of B<arg>
194*66bae5e7Schristossee L<openssl-passphrase-options(1)>.
195*66bae5e7Schristos
196*66bae5e7Schristos=item B<-selfsign>
197*66bae5e7Schristos
198*66bae5e7SchristosIndicates the issued certificates are to be signed with the key
199*66bae5e7Schristosthe certificate requests were signed with (given with B<-keyfile>).
200*66bae5e7SchristosCertificate requests signed with a different key are ignored.
201*66bae5e7SchristosIf B<-spkac>, B<-ss_cert> or B<-gencrl> are given, B<-selfsign> is ignored.
202*66bae5e7Schristos
203*66bae5e7SchristosA consequence of using B<-selfsign> is that the self-signed
204*66bae5e7Schristoscertificate appears among the entries in the certificate database
205*66bae5e7Schristos(see the configuration option B<database>), and uses the same
206*66bae5e7Schristosserial number counter as all other certificates sign with the
207*66bae5e7Schristosself-signed certificate.
208*66bae5e7Schristos
209*66bae5e7Schristos=item B<-notext>
210*66bae5e7Schristos
211*66bae5e7SchristosDon't output the text form of a certificate to the output file.
212*66bae5e7Schristos
213*66bae5e7Schristos=item B<-dateopt>
214*66bae5e7Schristos
215*66bae5e7SchristosSpecify the date output format. Values are: rfc_822 and iso_8601.
216*66bae5e7SchristosDefaults to rfc_822.
217*66bae5e7Schristos
218*66bae5e7Schristos=item B<-startdate> I<date>
219*66bae5e7Schristos
220*66bae5e7SchristosThis allows the start date to be explicitly set. The format of the
221*66bae5e7Schristosdate is YYMMDDHHMMSSZ (the same as an ASN1 UTCTime structure), or
222*66bae5e7SchristosYYYYMMDDHHMMSSZ (the same as an ASN1 GeneralizedTime structure). In
223*66bae5e7Schristosboth formats, seconds SS and timezone Z must be present.
224*66bae5e7Schristos
225*66bae5e7Schristos=item B<-enddate> I<date>
226*66bae5e7Schristos
227*66bae5e7SchristosThis allows the expiry date to be explicitly set. The format of the
228*66bae5e7Schristosdate is YYMMDDHHMMSSZ (the same as an ASN1 UTCTime structure), or
229*66bae5e7SchristosYYYYMMDDHHMMSSZ (the same as an ASN1 GeneralizedTime structure). In
230*66bae5e7Schristosboth formats, seconds SS and timezone Z must be present.
231*66bae5e7Schristos
232*66bae5e7Schristos=item B<-days> I<arg>
233*66bae5e7Schristos
234*66bae5e7SchristosThe number of days to certify the certificate for.
235*66bae5e7Schristos
236*66bae5e7Schristos=item B<-md> I<alg>
237*66bae5e7Schristos
238*66bae5e7SchristosThe message digest to use.
239*66bae5e7SchristosAny digest supported by the L<openssl-dgst(1)> command can be used. For signing
240*66bae5e7Schristosalgorithms that do not support a digest (i.e. Ed25519 and Ed448) any message
241*66bae5e7Schristosdigest that is set is ignored. This option also applies to CRLs.
242*66bae5e7Schristos
243*66bae5e7Schristos=item B<-policy> I<arg>
244*66bae5e7Schristos
245*66bae5e7SchristosThis option defines the CA "policy" to use. This is a section in
246*66bae5e7Schristosthe configuration file which decides which fields should be mandatory
247*66bae5e7Schristosor match the CA certificate. Check out the B<POLICY FORMAT> section
248*66bae5e7Schristosfor more information.
249*66bae5e7Schristos
250*66bae5e7Schristos=item B<-msie_hack>
251*66bae5e7Schristos
252*66bae5e7SchristosThis is a deprecated option to make this command work with very old versions
253*66bae5e7Schristosof the IE certificate enrollment control "certenr3". It used UniversalStrings
254*66bae5e7Schristosfor almost everything. Since the old control has various security bugs
255*66bae5e7Schristosits use is strongly discouraged.
256*66bae5e7Schristos
257*66bae5e7Schristos=item B<-preserveDN>
258*66bae5e7Schristos
259*66bae5e7SchristosNormally the DN order of a certificate is the same as the order of the
260*66bae5e7Schristosfields in the relevant policy section. When this option is set the order
261*66bae5e7Schristosis the same as the request. This is largely for compatibility with the
262*66bae5e7Schristosolder IE enrollment control which would only accept certificates if their
263*66bae5e7SchristosDNs match the order of the request. This is not needed for Xenroll.
264*66bae5e7Schristos
265*66bae5e7Schristos=item B<-noemailDN>
266*66bae5e7Schristos
267*66bae5e7SchristosThe DN of a certificate can contain the EMAIL field if present in the
268*66bae5e7Schristosrequest DN, however, it is good policy just having the e-mail set into
269*66bae5e7Schristosthe altName extension of the certificate. When this option is set the
270*66bae5e7SchristosEMAIL field is removed from the certificate' subject and set only in
271*66bae5e7Schristosthe, eventually present, extensions. The B<email_in_dn> keyword can be
272*66bae5e7Schristosused in the configuration file to enable this behaviour.
273*66bae5e7Schristos
274*66bae5e7Schristos=item B<-batch>
275*66bae5e7Schristos
276*66bae5e7SchristosThis sets the batch mode. In this mode no questions will be asked
277*66bae5e7Schristosand all certificates will be certified automatically.
278*66bae5e7Schristos
279*66bae5e7Schristos=item B<-extensions> I<section>
280*66bae5e7Schristos
281*66bae5e7SchristosThe section of the configuration file containing certificate extensions
282*66bae5e7Schristosto be added when a certificate is issued (defaults to B<x509_extensions>
283*66bae5e7Schristosunless the B<-extfile> option is used).
284*66bae5e7SchristosIf no X.509 extensions are specified then a V1 certificate is created,
285*66bae5e7Schristoselse a V3 certificate is created.
286*66bae5e7SchristosSee the L<x509v3_config(5)> manual page for details of the
287*66bae5e7Schristosextension section format.
288*66bae5e7Schristos
289*66bae5e7Schristos=item B<-extfile> I<file>
290*66bae5e7Schristos
291*66bae5e7SchristosAn additional configuration file to read certificate extensions from
292*66bae5e7Schristos(using the default section unless the B<-extensions> option is also
293*66bae5e7Schristosused).
294*66bae5e7Schristos
295*66bae5e7Schristos=item B<-subj> I<arg>
296*66bae5e7Schristos
297*66bae5e7SchristosSupersedes subject name given in the request.
298*66bae5e7Schristos
299*66bae5e7SchristosThe arg must be formatted as C</type0=value0/type1=value1/type2=...>.
300*66bae5e7SchristosSpecial characters may be escaped by C<\> (backslash), whitespace is retained.
301*66bae5e7SchristosEmpty values are permitted, but the corresponding type will not be included
302*66bae5e7Schristosin the resulting certificate.
303*66bae5e7SchristosGiving a single C</> will lead to an empty sequence of RDNs (a NULL-DN).
304*66bae5e7SchristosMulti-valued RDNs can be formed by placing a C<+> character instead of a C</>
305*66bae5e7Schristosbetween the AttributeValueAssertions (AVAs) that specify the members of the set.
306*66bae5e7SchristosExample:
307*66bae5e7Schristos
308*66bae5e7SchristosC</DC=org/DC=OpenSSL/DC=users/UID=123456+CN=John Doe>
309*66bae5e7Schristos
310*66bae5e7Schristos=item B<-utf8>
311*66bae5e7Schristos
312*66bae5e7SchristosThis option causes field values to be interpreted as UTF8 strings, by
313*66bae5e7Schristosdefault they are interpreted as ASCII. This means that the field
314*66bae5e7Schristosvalues, whether prompted from a terminal or obtained from a
315*66bae5e7Schristosconfiguration file, must be valid UTF8 strings.
316*66bae5e7Schristos
317*66bae5e7Schristos=item B<-create_serial>
318*66bae5e7Schristos
319*66bae5e7SchristosIf reading serial from the text file as specified in the configuration
320*66bae5e7Schristosfails, specifying this option creates a new random serial to be used as next
321*66bae5e7Schristosserial number.
322*66bae5e7SchristosTo get random serial numbers, use the B<-rand_serial> flag instead; this
323*66bae5e7Schristosshould only be used for simple error-recovery.
324*66bae5e7Schristos
325*66bae5e7Schristos=item B<-rand_serial>
326*66bae5e7Schristos
327*66bae5e7SchristosGenerate a large random number to use as the serial number.
328*66bae5e7SchristosThis overrides any option or configuration to use a serial number file.
329*66bae5e7Schristos
330*66bae5e7Schristos=item B<-multivalue-rdn>
331*66bae5e7Schristos
332*66bae5e7SchristosThis option has been deprecated and has no effect.
333*66bae5e7Schristos
334*66bae5e7Schristos{- $OpenSSL::safe::opt_r_item -}
335*66bae5e7Schristos
336*66bae5e7Schristos{- $OpenSSL::safe::opt_engine_item -}
337*66bae5e7Schristos
338*66bae5e7Schristos{- $OpenSSL::safe::opt_provider_item -}
339*66bae5e7Schristos
340*66bae5e7Schristos=back
341*66bae5e7Schristos
342*66bae5e7Schristos=head1 CRL OPTIONS
343*66bae5e7Schristos
344*66bae5e7Schristos=over 4
345*66bae5e7Schristos
346*66bae5e7Schristos=item B<-gencrl>
347*66bae5e7Schristos
348*66bae5e7SchristosThis option generates a CRL based on information in the index file.
349*66bae5e7Schristos
350*66bae5e7Schristos=item B<-crl_lastupdate> I<time>
351*66bae5e7Schristos
352*66bae5e7SchristosAllows the value of the CRL's lastUpdate field to be explicitly set; if
353*66bae5e7Schristosthis option is not present, the current time is used. Accepts times in
354*66bae5e7SchristosYYMMDDHHMMSSZ format (the same as an ASN1 UTCTime structure) or
355*66bae5e7SchristosYYYYMMDDHHMMSSZ format (the same as an ASN1 GeneralizedTime structure).
356*66bae5e7Schristos
357*66bae5e7Schristos=item B<-crl_nextupdate> I<time>
358*66bae5e7Schristos
359*66bae5e7SchristosAllows the value of the CRL's nextUpdate field to be explicitly set; if
360*66bae5e7Schristosthis option is present, any values given for B<-crldays>, B<-crlhours>
361*66bae5e7Schristosand B<-crlsec> are ignored. Accepts times in the same formats as
362*66bae5e7SchristosB<-crl_lastupdate>.
363*66bae5e7Schristos
364*66bae5e7Schristos=item B<-crldays> I<num>
365*66bae5e7Schristos
366*66bae5e7SchristosThe number of days before the next CRL is due. That is the days from
367*66bae5e7Schristosnow to place in the CRL nextUpdate field.
368*66bae5e7Schristos
369*66bae5e7Schristos=item B<-crlhours> I<num>
370*66bae5e7Schristos
371*66bae5e7SchristosThe number of hours before the next CRL is due.
372*66bae5e7Schristos
373*66bae5e7Schristos=item B<-crlsec> I<num>
374*66bae5e7Schristos
375*66bae5e7SchristosThe number of seconds before the next CRL is due.
376*66bae5e7Schristos
377*66bae5e7Schristos=item B<-revoke> I<filename>
378*66bae5e7Schristos
379*66bae5e7SchristosA filename containing a certificate to revoke.
380*66bae5e7Schristos
381*66bae5e7Schristos=item B<-valid> I<filename>
382*66bae5e7Schristos
383*66bae5e7SchristosA filename containing a certificate to add a Valid certificate entry.
384*66bae5e7Schristos
385*66bae5e7Schristos=item B<-status> I<serial>
386*66bae5e7Schristos
387*66bae5e7SchristosDisplays the revocation status of the certificate with the specified
388*66bae5e7Schristosserial number and exits.
389*66bae5e7Schristos
390*66bae5e7Schristos=item B<-updatedb>
391*66bae5e7Schristos
392*66bae5e7SchristosUpdates the database index to purge expired certificates.
393*66bae5e7Schristos
394*66bae5e7Schristos=item B<-crl_reason> I<reason>
395*66bae5e7Schristos
396*66bae5e7SchristosRevocation reason, where I<reason> is one of: B<unspecified>, B<keyCompromise>,
397*66bae5e7SchristosB<CACompromise>, B<affiliationChanged>, B<superseded>, B<cessationOfOperation>,
398*66bae5e7SchristosB<certificateHold> or B<removeFromCRL>. The matching of I<reason> is case
399*66bae5e7Schristosinsensitive. Setting any revocation reason will make the CRL v2.
400*66bae5e7Schristos
401*66bae5e7SchristosIn practice B<removeFromCRL> is not particularly useful because it is only used
402*66bae5e7Schristosin delta CRLs which are not currently implemented.
403*66bae5e7Schristos
404*66bae5e7Schristos=item B<-crl_hold> I<instruction>
405*66bae5e7Schristos
406*66bae5e7SchristosThis sets the CRL revocation reason code to B<certificateHold> and the hold
407*66bae5e7Schristosinstruction to I<instruction> which must be an OID. Although any OID can be
408*66bae5e7Schristosused only B<holdInstructionNone> (the use of which is discouraged by RFC2459)
409*66bae5e7SchristosB<holdInstructionCallIssuer> or B<holdInstructionReject> will normally be used.
410*66bae5e7Schristos
411*66bae5e7Schristos=item B<-crl_compromise> I<time>
412*66bae5e7Schristos
413*66bae5e7SchristosThis sets the revocation reason to B<keyCompromise> and the compromise time to
414*66bae5e7SchristosI<time>. I<time> should be in GeneralizedTime format that is I<YYYYMMDDHHMMSSZ>.
415*66bae5e7Schristos
416*66bae5e7Schristos=item B<-crl_CA_compromise> I<time>
417*66bae5e7Schristos
418*66bae5e7SchristosThis is the same as B<crl_compromise> except the revocation reason is set to
419*66bae5e7SchristosB<CACompromise>.
420*66bae5e7Schristos
421*66bae5e7Schristos=item B<-crlexts> I<section>
422*66bae5e7Schristos
423*66bae5e7SchristosThe section of the configuration file containing CRL extensions to
424*66bae5e7Schristosinclude. If no CRL extension section is present then a V1 CRL is
425*66bae5e7Schristoscreated, if the CRL extension section is present (even if it is
426*66bae5e7Schristosempty) then a V2 CRL is created. The CRL extensions specified are
427*66bae5e7SchristosCRL extensions and B<not> CRL entry extensions.  It should be noted
428*66bae5e7Schristosthat some software (for example Netscape) can't handle V2 CRLs. See
429*66bae5e7SchristosL<x509v3_config(5)> manual page for details of the
430*66bae5e7Schristosextension section format.
431*66bae5e7Schristos
432*66bae5e7Schristos=back
433*66bae5e7Schristos
434*66bae5e7Schristos=head1 CONFIGURATION FILE OPTIONS
435*66bae5e7Schristos
436*66bae5e7SchristosThe section of the configuration file containing options for this command
437*66bae5e7Schristosis found as follows: If the B<-name> command line option is used,
438*66bae5e7Schristosthen it names the section to be used. Otherwise the section to
439*66bae5e7Schristosbe used must be named in the B<default_ca> option of the B<ca> section
440*66bae5e7Schristosof the configuration file (or in the default section of the
441*66bae5e7Schristosconfiguration file). Besides B<default_ca>, the following options are
442*66bae5e7Schristosread directly from the B<ca> section:
443*66bae5e7Schristos RANDFILE
444*66bae5e7Schristos preserve
445*66bae5e7Schristos msie_hack
446*66bae5e7SchristosWith the exception of B<RANDFILE>, this is probably a bug and may
447*66bae5e7Schristoschange in future releases.
448*66bae5e7Schristos
449*66bae5e7SchristosMany of the configuration file options are identical to command line
450*66bae5e7Schristosoptions. Where the option is present in the configuration file
451*66bae5e7Schristosand the command line the command line value is used. Where an
452*66bae5e7Schristosoption is described as mandatory then it must be present in
453*66bae5e7Schristosthe configuration file or the command line equivalent (if
454*66bae5e7Schristosany) used.
455*66bae5e7Schristos
456*66bae5e7Schristos=over 4
457*66bae5e7Schristos
458*66bae5e7Schristos=item B<oid_file>
459*66bae5e7Schristos
460*66bae5e7SchristosThis specifies a file containing additional B<OBJECT IDENTIFIERS>.
461*66bae5e7SchristosEach line of the file should consist of the numerical form of the
462*66bae5e7Schristosobject identifier followed by whitespace then the short name followed
463*66bae5e7Schristosby whitespace and finally the long name.
464*66bae5e7Schristos
465*66bae5e7Schristos=item B<oid_section>
466*66bae5e7Schristos
467*66bae5e7SchristosThis specifies a section in the configuration file containing extra
468*66bae5e7Schristosobject identifiers. Each line should consist of the short name of the
469*66bae5e7Schristosobject identifier followed by B<=> and the numerical form. The short
470*66bae5e7Schristosand long names are the same when this option is used.
471*66bae5e7Schristos
472*66bae5e7Schristos=item B<new_certs_dir>
473*66bae5e7Schristos
474*66bae5e7SchristosThe same as the B<-outdir> command line option. It specifies
475*66bae5e7Schristosthe directory where new certificates will be placed. Mandatory.
476*66bae5e7Schristos
477*66bae5e7Schristos=item B<certificate>
478*66bae5e7Schristos
479*66bae5e7SchristosThe same as B<-cert>. It gives the file containing the CA
480*66bae5e7Schristoscertificate. Mandatory.
481*66bae5e7Schristos
482*66bae5e7Schristos=item B<private_key>
483*66bae5e7Schristos
484*66bae5e7SchristosSame as the B<-keyfile> option. The file containing the
485*66bae5e7SchristosCA private key. Mandatory.
486*66bae5e7Schristos
487*66bae5e7Schristos=item B<RANDFILE>
488*66bae5e7Schristos
489*66bae5e7SchristosAt startup the specified file is loaded into the random number generator,
490*66bae5e7Schristosand at exit 256 bytes will be written to it. (Note: Using a RANDFILE is
491*66bae5e7Schristosnot necessary anymore, see the L</HISTORY> section.
492*66bae5e7Schristos
493*66bae5e7Schristos=item B<default_days>
494*66bae5e7Schristos
495*66bae5e7SchristosThe same as the B<-days> option. The number of days to certify
496*66bae5e7Schristosa certificate for.
497*66bae5e7Schristos
498*66bae5e7Schristos=item B<default_startdate>
499*66bae5e7Schristos
500*66bae5e7SchristosThe same as the B<-startdate> option. The start date to certify
501*66bae5e7Schristosa certificate for. If not set the current time is used.
502*66bae5e7Schristos
503*66bae5e7Schristos=item B<default_enddate>
504*66bae5e7Schristos
505*66bae5e7SchristosThe same as the B<-enddate> option. Either this option or
506*66bae5e7SchristosB<default_days> (or the command line equivalents) must be
507*66bae5e7Schristospresent.
508*66bae5e7Schristos
509*66bae5e7Schristos=item B<default_crl_hours default_crl_days>
510*66bae5e7Schristos
511*66bae5e7SchristosThe same as the B<-crlhours> and the B<-crldays> options. These
512*66bae5e7Schristoswill only be used if neither command line option is present. At
513*66bae5e7Schristosleast one of these must be present to generate a CRL.
514*66bae5e7Schristos
515*66bae5e7Schristos=item B<default_md>
516*66bae5e7Schristos
517*66bae5e7SchristosThe same as the B<-md> option. Mandatory except where the signing algorithm does
518*66bae5e7Schristosnot require a digest (i.e. Ed25519 and Ed448).
519*66bae5e7Schristos
520*66bae5e7Schristos=item B<database>
521*66bae5e7Schristos
522*66bae5e7SchristosThe text database file to use. Mandatory. This file must be present
523*66bae5e7Schristosthough initially it will be empty.
524*66bae5e7Schristos
525*66bae5e7Schristos=item B<unique_subject>
526*66bae5e7Schristos
527*66bae5e7SchristosIf the value B<yes> is given, the valid certificate entries in the
528*66bae5e7Schristosdatabase must have unique subjects.  if the value B<no> is given,
529*66bae5e7Schristosseveral valid certificate entries may have the exact same subject.
530*66bae5e7SchristosThe default value is B<yes>, to be compatible with older (pre 0.9.8)
531*66bae5e7Schristosversions of OpenSSL.  However, to make CA certificate roll-over easier,
532*66bae5e7Schristosit's recommended to use the value B<no>, especially if combined with
533*66bae5e7Schristosthe B<-selfsign> command line option.
534*66bae5e7Schristos
535*66bae5e7SchristosNote that it is valid in some circumstances for certificates to be created
536*66bae5e7Schristoswithout any subject. In the case where there are multiple certificates without
537*66bae5e7Schristossubjects this does not count as a duplicate.
538*66bae5e7Schristos
539*66bae5e7Schristos=item B<serial>
540*66bae5e7Schristos
541*66bae5e7SchristosA text file containing the next serial number to use in hex. Mandatory.
542*66bae5e7SchristosThis file must be present and contain a valid serial number.
543*66bae5e7Schristos
544*66bae5e7Schristos=item B<crlnumber>
545*66bae5e7Schristos
546*66bae5e7SchristosA text file containing the next CRL number to use in hex. The crl number
547*66bae5e7Schristoswill be inserted in the CRLs only if this file exists. If this file is
548*66bae5e7Schristospresent, it must contain a valid CRL number.
549*66bae5e7Schristos
550*66bae5e7Schristos=item B<x509_extensions>
551*66bae5e7Schristos
552*66bae5e7SchristosA fallback to the B<-extensions> option.
553*66bae5e7Schristos
554*66bae5e7Schristos=item B<crl_extensions>
555*66bae5e7Schristos
556*66bae5e7SchristosA fallback to the B<-crlexts> option.
557*66bae5e7Schristos
558*66bae5e7Schristos=item B<preserve>
559*66bae5e7Schristos
560*66bae5e7SchristosThe same as B<-preserveDN>
561*66bae5e7Schristos
562*66bae5e7Schristos=item B<email_in_dn>
563*66bae5e7Schristos
564*66bae5e7SchristosThe same as B<-noemailDN>. If you want the EMAIL field to be removed
565*66bae5e7Schristosfrom the DN of the certificate simply set this to 'no'. If not present
566*66bae5e7Schristosthe default is to allow for the EMAIL filed in the certificate's DN.
567*66bae5e7Schristos
568*66bae5e7Schristos=item B<msie_hack>
569*66bae5e7Schristos
570*66bae5e7SchristosThe same as B<-msie_hack>
571*66bae5e7Schristos
572*66bae5e7Schristos=item B<policy>
573*66bae5e7Schristos
574*66bae5e7SchristosThe same as B<-policy>. Mandatory. See the B<POLICY FORMAT> section
575*66bae5e7Schristosfor more information.
576*66bae5e7Schristos
577*66bae5e7Schristos=item B<name_opt>, B<cert_opt>
578*66bae5e7Schristos
579*66bae5e7SchristosThese options allow the format used to display the certificate details
580*66bae5e7Schristoswhen asking the user to confirm signing. All the options supported by
581*66bae5e7Schristosthe B<x509> utilities B<-nameopt> and B<-certopt> switches can be used
582*66bae5e7Schristoshere, except the B<no_signame> and B<no_sigdump> are permanently set
583*66bae5e7Schristosand cannot be disabled (this is because the certificate signature cannot
584*66bae5e7Schristosbe displayed because the certificate has not been signed at this point).
585*66bae5e7Schristos
586*66bae5e7SchristosFor convenience the values B<ca_default> are accepted by both to produce
587*66bae5e7Schristosa reasonable output.
588*66bae5e7Schristos
589*66bae5e7SchristosIf neither option is present the format used in earlier versions of
590*66bae5e7SchristosOpenSSL is used. Use of the old format is B<strongly> discouraged because
591*66bae5e7Schristosit only displays fields mentioned in the B<policy> section, mishandles
592*66bae5e7Schristosmulticharacter string types and does not display extensions.
593*66bae5e7Schristos
594*66bae5e7Schristos=item B<copy_extensions>
595*66bae5e7Schristos
596*66bae5e7SchristosDetermines how extensions in certificate requests should be handled.
597*66bae5e7SchristosIf set to B<none> or this option is not present then extensions are
598*66bae5e7Schristosignored and not copied to the certificate. If set to B<copy> then any
599*66bae5e7Schristosextensions present in the request that are not already present are copied
600*66bae5e7Schristosto the certificate. If set to B<copyall> then all extensions in the
601*66bae5e7Schristosrequest are copied to the certificate: if the extension is already present
602*66bae5e7Schristosin the certificate it is deleted first. See the B<WARNINGS> section before
603*66bae5e7Schristosusing this option.
604*66bae5e7Schristos
605*66bae5e7SchristosThe main use of this option is to allow a certificate request to supply
606*66bae5e7Schristosvalues for certain extensions such as subjectAltName.
607*66bae5e7Schristos
608*66bae5e7Schristos=back
609*66bae5e7Schristos
610*66bae5e7Schristos=head1 POLICY FORMAT
611*66bae5e7Schristos
612*66bae5e7SchristosThe policy section consists of a set of variables corresponding to
613*66bae5e7Schristoscertificate DN fields. If the value is "match" then the field value
614*66bae5e7Schristosmust match the same field in the CA certificate. If the value is
615*66bae5e7Schristos"supplied" then it must be present. If the value is "optional" then
616*66bae5e7Schristosit may be present. Any fields not mentioned in the policy section
617*66bae5e7Schristosare silently deleted, unless the B<-preserveDN> option is set but
618*66bae5e7Schristosthis can be regarded more of a quirk than intended behaviour.
619*66bae5e7Schristos
620*66bae5e7Schristos=head1 SPKAC FORMAT
621*66bae5e7Schristos
622*66bae5e7SchristosThe input to the B<-spkac> command line option is a Netscape
623*66bae5e7Schristossigned public key and challenge. This will usually come from
624*66bae5e7Schristosthe B<KEYGEN> tag in an HTML form to create a new private key.
625*66bae5e7SchristosIt is however possible to create SPKACs using L<openssl-spkac(1)>.
626*66bae5e7Schristos
627*66bae5e7SchristosThe file should contain the variable SPKAC set to the value of
628*66bae5e7Schristosthe SPKAC and also the required DN components as name value pairs.
629*66bae5e7SchristosIf you need to include the same component twice then it can be
630*66bae5e7Schristospreceded by a number and a '.'.
631*66bae5e7Schristos
632*66bae5e7SchristosWhen processing SPKAC format, the output is DER if the B<-out>
633*66bae5e7Schristosflag is used, but PEM format if sending to stdout or the B<-outdir>
634*66bae5e7Schristosflag is used.
635*66bae5e7Schristos
636*66bae5e7Schristos=head1 EXAMPLES
637*66bae5e7Schristos
638*66bae5e7SchristosNote: these examples assume that the directory structure this command
639*66bae5e7Schristosassumes is already set up and the relevant files already exist. This
640*66bae5e7Schristosusually involves creating a CA certificate and private key with
641*66bae5e7SchristosL<openssl-req(1)>, a serial number file and an empty index file and
642*66bae5e7Schristosplacing them in the relevant directories.
643*66bae5e7Schristos
644*66bae5e7SchristosTo use the sample configuration file below the directories F<demoCA>,
645*66bae5e7SchristosF<demoCA/private> and F<demoCA/newcerts> would be created. The CA
646*66bae5e7Schristoscertificate would be copied to F<demoCA/cacert.pem> and its private
647*66bae5e7Schristoskey to F<demoCA/private/cakey.pem>. A file F<demoCA/serial> would be
648*66bae5e7Schristoscreated containing for example "01" and the empty index file
649*66bae5e7SchristosF<demoCA/index.txt>.
650*66bae5e7Schristos
651*66bae5e7Schristos
652*66bae5e7SchristosSign a certificate request:
653*66bae5e7Schristos
654*66bae5e7Schristos openssl ca -in req.pem -out newcert.pem
655*66bae5e7Schristos
656*66bae5e7SchristosSign an SM2 certificate request:
657*66bae5e7Schristos
658*66bae5e7Schristos openssl ca -in sm2.csr -out sm2.crt -md sm3 \
659*66bae5e7Schristos         -sigopt "distid:1234567812345678" \
660*66bae5e7Schristos         -vfyopt "distid:1234567812345678"
661*66bae5e7Schristos
662*66bae5e7SchristosSign a certificate request, using CA extensions:
663*66bae5e7Schristos
664*66bae5e7Schristos openssl ca -in req.pem -extensions v3_ca -out newcert.pem
665*66bae5e7Schristos
666*66bae5e7SchristosGenerate a CRL
667*66bae5e7Schristos
668*66bae5e7Schristos openssl ca -gencrl -out crl.pem
669*66bae5e7Schristos
670*66bae5e7SchristosSign several requests:
671*66bae5e7Schristos
672*66bae5e7Schristos openssl ca -infiles req1.pem req2.pem req3.pem
673*66bae5e7Schristos
674*66bae5e7SchristosCertify a Netscape SPKAC:
675*66bae5e7Schristos
676*66bae5e7Schristos openssl ca -spkac spkac.txt
677*66bae5e7Schristos
678*66bae5e7SchristosA sample SPKAC file (the SPKAC line has been truncated for clarity):
679*66bae5e7Schristos
680*66bae5e7Schristos SPKAC=MIG0MGAwXDANBgkqhkiG9w0BAQEFAANLADBIAkEAn7PDhCeV/xIxUg8V70YRxK2A5
681*66bae5e7Schristos CN=Steve Test
682*66bae5e7Schristos emailAddress=steve@openssl.org
683*66bae5e7Schristos 0.OU=OpenSSL Group
684*66bae5e7Schristos 1.OU=Another Group
685*66bae5e7Schristos
686*66bae5e7SchristosA sample configuration file with the relevant sections for this command:
687*66bae5e7Schristos
688*66bae5e7Schristos [ ca ]
689*66bae5e7Schristos default_ca      = CA_default            # The default ca section
690*66bae5e7Schristos
691*66bae5e7Schristos [ CA_default ]
692*66bae5e7Schristos
693*66bae5e7Schristos dir            = ./demoCA              # top dir
694*66bae5e7Schristos database       = $dir/index.txt        # index file.
695*66bae5e7Schristos new_certs_dir  = $dir/newcerts         # new certs dir
696*66bae5e7Schristos
697*66bae5e7Schristos certificate    = $dir/cacert.pem       # The CA cert
698*66bae5e7Schristos serial         = $dir/serial           # serial no file
699*66bae5e7Schristos #rand_serial    = yes                  # for random serial#'s
700*66bae5e7Schristos private_key    = $dir/private/cakey.pem# CA private key
701*66bae5e7Schristos
702*66bae5e7Schristos default_days   = 365                   # how long to certify for
703*66bae5e7Schristos default_crl_days= 30                   # how long before next CRL
704*66bae5e7Schristos default_md     = md5                   # md to use
705*66bae5e7Schristos
706*66bae5e7Schristos policy         = policy_any            # default policy
707*66bae5e7Schristos email_in_dn    = no                    # Don't add the email into cert DN
708*66bae5e7Schristos
709*66bae5e7Schristos name_opt       = ca_default            # Subject name display option
710*66bae5e7Schristos cert_opt       = ca_default            # Certificate display option
711*66bae5e7Schristos copy_extensions = none                 # Don't copy extensions from request
712*66bae5e7Schristos
713*66bae5e7Schristos [ policy_any ]
714*66bae5e7Schristos countryName            = supplied
715*66bae5e7Schristos stateOrProvinceName    = optional
716*66bae5e7Schristos organizationName       = optional
717*66bae5e7Schristos organizationalUnitName = optional
718*66bae5e7Schristos commonName             = supplied
719*66bae5e7Schristos emailAddress           = optional
720*66bae5e7Schristos
721*66bae5e7Schristos=head1 FILES
722*66bae5e7Schristos
723*66bae5e7SchristosNote: the location of all files can change either by compile time options,
724*66bae5e7Schristosconfiguration file entries, environment variables or command line options.
725*66bae5e7SchristosThe values below reflect the default values.
726*66bae5e7Schristos
727*66bae5e7Schristos /usr/local/ssl/lib/openssl.cnf - master configuration file
728*66bae5e7Schristos ./demoCA                       - main CA directory
729*66bae5e7Schristos ./demoCA/cacert.pem            - CA certificate
730*66bae5e7Schristos ./demoCA/private/cakey.pem     - CA private key
731*66bae5e7Schristos ./demoCA/serial                - CA serial number file
732*66bae5e7Schristos ./demoCA/serial.old            - CA serial number backup file
733*66bae5e7Schristos ./demoCA/index.txt             - CA text database file
734*66bae5e7Schristos ./demoCA/index.txt.old         - CA text database backup file
735*66bae5e7Schristos ./demoCA/certs                 - certificate output file
736*66bae5e7Schristos
737*66bae5e7Schristos=head1 RESTRICTIONS
738*66bae5e7Schristos
739*66bae5e7SchristosThe text database index file is a critical part of the process and
740*66bae5e7Schristosif corrupted it can be difficult to fix. It is theoretically possible
741*66bae5e7Schristosto rebuild the index file from all the issued certificates and a current
742*66bae5e7SchristosCRL: however there is no option to do this.
743*66bae5e7Schristos
744*66bae5e7SchristosV2 CRL features like delta CRLs are not currently supported.
745*66bae5e7Schristos
746*66bae5e7SchristosAlthough several requests can be input and handled at once it is only
747*66bae5e7Schristospossible to include one SPKAC or self-signed certificate.
748*66bae5e7Schristos
749*66bae5e7Schristos=head1 BUGS
750*66bae5e7Schristos
751*66bae5e7SchristosThis command is quirky and at times downright unfriendly.
752*66bae5e7Schristos
753*66bae5e7SchristosThe use of an in-memory text database can cause problems when large
754*66bae5e7Schristosnumbers of certificates are present because, as the name implies
755*66bae5e7Schristosthe database has to be kept in memory.
756*66bae5e7Schristos
757*66bae5e7SchristosThis command really needs rewriting or the required functionality
758*66bae5e7Schristosexposed at either a command or interface level so that a more user-friendly
759*66bae5e7Schristosreplacement could handle things properly. The script
760*66bae5e7SchristosB<CA.pl> helps a little but not very much.
761*66bae5e7Schristos
762*66bae5e7SchristosAny fields in a request that are not present in a policy are silently
763*66bae5e7Schristosdeleted. This does not happen if the B<-preserveDN> option is used. To
764*66bae5e7Schristosenforce the absence of the EMAIL field within the DN, as suggested by
765*66bae5e7SchristosRFCs, regardless the contents of the request' subject the B<-noemailDN>
766*66bae5e7Schristosoption can be used. The behaviour should be more friendly and
767*66bae5e7Schristosconfigurable.
768*66bae5e7Schristos
769*66bae5e7SchristosCanceling some commands by refusing to certify a certificate can
770*66bae5e7Schristoscreate an empty file.
771*66bae5e7Schristos
772*66bae5e7Schristos=head1 WARNINGS
773*66bae5e7Schristos
774*66bae5e7SchristosThis command was originally meant as an example of how to do things in a CA.
775*66bae5e7SchristosIts code does not have production quality.
776*66bae5e7SchristosIt was not supposed to be used as a full blown CA itself,
777*66bae5e7Schristosnevertheless some people are using it for this purpose at least internally.
778*66bae5e7SchristosWhen doing so, specific care should be taken to
779*66bae5e7Schristosproperly secure the private key(s) used for signing certificates.
780*66bae5e7SchristosIt is advisable to keep them in a secure HW storage such as a smart card or HSM
781*66bae5e7Schristosand access them via a suitable engine or crypto provider.
782*66bae5e7Schristos
783*66bae5e7SchristosThis command command is effectively a single user command: no locking
784*66bae5e7Schristosis done on the various files and attempts to run more than one B<openssl ca>
785*66bae5e7Schristoscommand on the same database can have unpredictable results.
786*66bae5e7Schristos
787*66bae5e7SchristosThe B<copy_extensions> option should be used with caution. If care is
788*66bae5e7Schristosnot taken then it can be a security risk. For example if a certificate
789*66bae5e7Schristosrequest contains a basicConstraints extension with CA:TRUE and the
790*66bae5e7SchristosB<copy_extensions> value is set to B<copyall> and the user does not spot
791*66bae5e7Schristosthis when the certificate is displayed then this will hand the requester
792*66bae5e7Schristosa valid CA certificate.
793*66bae5e7SchristosThis situation can be avoided by setting B<copy_extensions> to B<copy>
794*66bae5e7Schristosand including basicConstraints with CA:FALSE in the configuration file.
795*66bae5e7SchristosThen if the request contains a basicConstraints extension it will be
796*66bae5e7Schristosignored.
797*66bae5e7Schristos
798*66bae5e7SchristosIt is advisable to also include values for other extensions such
799*66bae5e7Schristosas B<keyUsage> to prevent a request supplying its own values.
800*66bae5e7Schristos
801*66bae5e7SchristosAdditional restrictions can be placed on the CA certificate itself.
802*66bae5e7SchristosFor example if the CA certificate has:
803*66bae5e7Schristos
804*66bae5e7Schristos basicConstraints = CA:TRUE, pathlen:0
805*66bae5e7Schristos
806*66bae5e7Schristosthen even if a certificate is issued with CA:TRUE it will not be valid.
807*66bae5e7Schristos
808*66bae5e7Schristos=head1 HISTORY
809*66bae5e7Schristos
810*66bae5e7SchristosSince OpenSSL 1.1.1, the program follows RFC5280. Specifically,
811*66bae5e7Schristoscertificate validity period (specified by any of B<-startdate>,
812*66bae5e7SchristosB<-enddate> and B<-days>) and CRL last/next update time (specified by
813*66bae5e7Schristosany of B<-crl_lastupdate>, B<-crl_nextupdate>, B<-crldays>, B<-crlhours>
814*66bae5e7Schristosand B<-crlsec>) will be encoded as UTCTime if the dates are
815*66bae5e7Schristosearlier than year 2049 (included), and as GeneralizedTime if the dates
816*66bae5e7Schristosare in year 2050 or later.
817*66bae5e7Schristos
818*66bae5e7SchristosOpenSSL 1.1.1 introduced a new random generator (CSPRNG) with an improved
819*66bae5e7Schristosseeding mechanism. The new seeding mechanism makes it unnecessary to
820*66bae5e7Schristosdefine a RANDFILE for saving and restoring randomness. This option is
821*66bae5e7Schristosretained mainly for compatibility reasons.
822*66bae5e7Schristos
823*66bae5e7SchristosThe B<-section> option was added in OpenSSL 3.0.0.
824*66bae5e7Schristos
825*66bae5e7SchristosThe B<-multivalue-rdn> option has become obsolete in OpenSSL 3.0.0 and
826*66bae5e7Schristoshas no effect.
827*66bae5e7Schristos
828*66bae5e7SchristosThe B<-engine> option was deprecated in OpenSSL 3.0.
829*66bae5e7Schristos
830*66bae5e7Schristos=head1 SEE ALSO
831*66bae5e7Schristos
832*66bae5e7SchristosL<openssl(1)>,
833*66bae5e7SchristosL<openssl-req(1)>,
834*66bae5e7SchristosL<openssl-spkac(1)>,
835*66bae5e7SchristosL<openssl-x509(1)>,
836*66bae5e7SchristosL<CA.pl(1)>,
837*66bae5e7SchristosL<config(5)>,
838*66bae5e7SchristosL<x509v3_config(5)>
839*66bae5e7Schristos
840*66bae5e7Schristos=head1 COPYRIGHT
841*66bae5e7Schristos
842*66bae5e7SchristosCopyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.
843*66bae5e7Schristos
844*66bae5e7SchristosLicensed under the Apache License 2.0 (the "License").  You may not use
845*66bae5e7Schristosthis file except in compliance with the License.  You can obtain a copy
846*66bae5e7Schristosin the file LICENSE in the source distribution or at
847*66bae5e7SchristosL<https://www.openssl.org/source/license.html>.
848*66bae5e7Schristos
849*66bae5e7Schristos=cut
850