xref: /openssl/doc/man1/openssl-req.pod.in (revision 539b17b6)
1=pod
2{- OpenSSL::safe::output_do_not_edit_headers(); -}
3
4=head1 NAME
5
6openssl-req - PKCS#10 certificate request and certificate generating command
7
8=head1 SYNOPSIS
9
10B<openssl> B<req>
11[B<-help>]
12[B<-cipher>]
13[B<-inform> B<DER>|B<PEM>]
14[B<-outform> B<DER>|B<PEM>]
15[B<-in> I<filename>]
16[B<-passin> I<arg>]
17[B<-out> I<filename>]
18[B<-passout> I<arg>]
19[B<-text>]
20[B<-pubkey>]
21[B<-noout>]
22[B<-verify>]
23[B<-modulus>]
24[B<-new>]
25[B<-newkey> I<arg>]
26[B<-pkeyopt> I<opt>:I<value>]
27[B<-noenc>]
28[B<-nodes>]
29[B<-key> I<filename>|I<uri>]
30[B<-keyform> B<DER>|B<PEM>|B<P12>|B<ENGINE>]
31[B<-keyout> I<filename>]
32[B<-keygen_engine> I<id>]
33[B<-I<digest>>]
34[B<-config> I<filename>]
35[B<-section> I<name>]
36[B<-x509>]
37[B<-x509v1>]
38[B<-CA> I<filename>|I<uri>]
39[B<-CAkey> I<filename>|I<uri>]
40[B<-not_before> I<date>]
41[B<-not_after> I<date>]
42[B<-days> I<n>]
43[B<-set_serial> I<n>]
44[B<-newhdr>]
45[B<-copy_extensions> I<arg>]
46[B<-extensions> I<section>]
47[B<-reqexts> I<section>]
48[B<-addext> I<ext>]
49[B<-precert>]
50[B<-utf8>]
51[B<-reqopt>]
52[B<-subject>]
53[B<-subj> I<arg>]
54[B<-multivalue-rdn>]
55[B<-sigopt> I<nm>:I<v>]
56[B<-vfyopt> I<nm>:I<v>]
57[B<-batch>]
58[B<-verbose>]
59[B<-quiet>]
60{- $OpenSSL::safe::opt_name_synopsis -}
61{- $OpenSSL::safe::opt_r_synopsis -}
62{- $OpenSSL::safe::opt_engine_synopsis -}{- $OpenSSL::safe::opt_provider_synopsis -}
63
64=head1 DESCRIPTION
65
66This command primarily creates and processes certificate requests (CSRs)
67in PKCS#10 format. It can additionally create self-signed certificates
68for use as root CAs for example.
69
70=head1 OPTIONS
71
72=over 4
73
74=item B<-help>
75
76Print out a usage message.
77
78=item B<-inform> B<DER>|B<PEM>
79
80The CSR input file format to use; by default PEM is tried first.
81See L<openssl-format-options(1)> for details.
82
83=item B<-outform> B<DER>|B<PEM>
84
85The output format; unspecified by default.
86See L<openssl-format-options(1)> for details.
87
88The data is a PKCS#10 object.
89
90=item B<-cipher> I<name>
91
92Specify the cipher to be used for encrypting the private key.
93If no cipher is specified, AES-256-CBC will be used by default.
94You can override this by providing any valid OpenSSL cipher name.
95
96=item B<-in> I<filename>
97
98This specifies the input filename to read a request from.
99This defaults to standard input unless B<-x509> or B<-CA> is specified.
100A request is only read if the creation options
101(B<-new> or B<-newkey> or B<-precert>) are not specified.
102
103=item B<-sigopt> I<nm>:I<v>
104
105Pass options to the signature algorithm during sign operations.
106Names and values of these options are algorithm-specific.
107
108=item B<-vfyopt> I<nm>:I<v>
109
110Pass options to the signature algorithm during verify operations.
111Names and values of these options are algorithm-specific.
112
113=begin comment
114
115Maybe it would be preferable to only have -opts instead of -sigopt and
116-vfyopt?  They are both present here to be compatible with L<openssl-ca(1)>,
117which supports both options for good reasons.
118
119=end comment
120
121=item B<-passin> I<arg>
122
123The password source for private key and certificate input.
124For more information about the format of B<arg>
125see L<openssl-passphrase-options(1)>.
126
127=item B<-passout> I<arg>
128
129The password source for the output file.
130For more information about the format of B<arg>
131see L<openssl-passphrase-options(1)>.
132
133=item B<-out> I<filename>
134
135This specifies the output filename to write to or standard output by default.
136
137=item B<-text>
138
139Prints out the certificate request in text form.
140
141=item B<-subject>
142
143Prints out the certificate request subject
144(or certificate subject if B<-x509> is in use).
145
146=item B<-pubkey>
147
148Prints out the public key.
149
150=item B<-noout>
151
152This option prevents output of the encoded version of the certificate request.
153
154=item B<-modulus>
155
156Prints out the value of the modulus of the public key contained in the request.
157
158=item B<-verify>
159
160Verifies the self-signature on the request. If the verification fails,
161the program will immediately exit, i.e. further option processing
162(e.g. B<-text>) is skipped.
163
164=item B<-new>
165
166This option generates a new certificate request. It will prompt
167the user for the relevant field values. The actual fields
168prompted for and their maximum and minimum sizes are specified
169in the configuration file and any requested extensions.
170
171If the B<-key> option is not given it will generate a new private key
172using information specified in the configuration file or given with
173the B<-newkey> and B<-pkeyopt> options,
174else by default an RSA key with 2048 bits length.
175
176=item B<-newkey> I<arg>
177
178This option is used to generate a new private key unless B<-key> is given.
179It is subsequently used as if it was given using the B<-key> option.
180
181This option implies the B<-new> flag to create a new certificate request
182or a new certificate in case B<-x509> is used.
183
184The argument takes one of several forms.
185
186[B<rsa:>]I<nbits> generates an RSA key I<nbits> in size.
187If I<nbits> is omitted, i.e., B<-newkey> B<rsa> is specified,
188the default key size specified in the configuration file
189with the B<default_bits> option is used if present, else 2048.
190
191All other algorithms support the B<-newkey> I<algname>:I<file> form, where
192I<file> is an algorithm parameter file, created with C<openssl genpkey -genparam>
193or an X.509 certificate for a key with appropriate algorithm.
194
195B<param:>I<file> generates a key using the parameter file or certificate
196I<file>, the algorithm is determined by the parameters.
197
198I<algname>[:I<file>] generates a key using the given algorithm I<algname>.
199If a parameter file I<file> is given then the parameters specified there
200are used, where the algorithm parameters must match I<algname>.
201If algorithm parameters are not given,
202any necessary parameters should be specified via the B<-pkeyopt> option.
203
204B<dsa:>I<filename> generates a DSA key using the parameters
205in the file I<filename>. B<ec:>I<filename> generates EC key (usable both with
206ECDSA or ECDH algorithms), B<gost2001:>I<filename> generates GOST R
20734.10-2001 key (requires B<gost> engine configured in the configuration
208file). If just B<gost2001> is specified a parameter set should be
209specified by B<-pkeyopt> I<paramset:X>
210
211=item B<-pkeyopt> I<opt>:I<value>
212
213Set the public key algorithm option I<opt> to I<value>. The precise set of
214options supported depends on the public key algorithm used and its
215implementation.
216See L<openssl-genpkey(1)/KEY GENERATION OPTIONS> for more details.
217
218=item B<-key> I<filename>|I<uri>
219
220This option provides the private key for signing a new certificate or
221certificate request.
222Unless B<-in> is given, the corresponding public key is placed in
223the new certificate or certificate request, resulting in a self-signature.
224
225For certificate signing this option is overridden by the B<-CA> option.
226
227This option also accepts PKCS#8 format private keys for PEM format files.
228
229=item B<-keyform> B<DER>|B<PEM>|B<P12>|B<ENGINE>
230
231The format of the private key; unspecified by default.
232See L<openssl-format-options(1)> for details.
233
234=item B<-keyout> I<filename>
235
236This gives the filename to write any private key to that has been newly created
237or read from B<-key>.  If neither the B<-keyout> option nor the B<-key> option
238are given then the filename specified in the configuration file with the
239B<default_keyfile> option is used, if present.  Thus, if you want to write the
240private key and the B<-key> option is provided, you should provide the
241B<-keyout> option explicitly.  If a new key is generated and no filename is
242specified the key is written to standard output.
243
244=item B<-noenc>
245
246If this option is specified then if a private key is created it
247will not be encrypted.
248
249=item B<-nodes>
250
251This option is deprecated since OpenSSL 3.0; use B<-noenc> instead.
252
253=item B<-I<digest>>
254
255This specifies the message digest to sign the request.
256Any digest supported by the OpenSSL B<dgst> command can be used.
257This overrides the digest algorithm specified in
258the configuration file.
259
260Some public key algorithms may override this choice. For instance, DSA
261signatures always use SHA1, GOST R 34.10 signatures always use
262GOST R 34.11-94 (B<-md_gost94>), Ed25519 and Ed448 never use any digest.
263
264=item B<-config> I<filename>
265
266This allows an alternative configuration file to be specified.
267Optional; for a description of the default value,
268see L<openssl(1)/COMMAND SUMMARY>.
269
270=item B<-section> I<name>
271
272Specifies the name of the section to use; the default is B<req>.
273
274=item B<-subj> I<arg>
275
276Sets subject name for new request or supersedes the subject name
277when processing a certificate request.
278
279The arg must be formatted as C</type0=value0/type1=value1/type2=...>.
280Special characters may be escaped by C<\> (backslash), whitespace is retained.
281Empty values are permitted, but the corresponding type will not be included
282in the request.
283Giving a single C</> will lead to an empty sequence of RDNs (a NULL-DN).
284Multi-valued RDNs can be formed by placing a C<+> character instead of a C</>
285between the AttributeValueAssertions (AVAs) that specify the members of the set.
286Example:
287
288C</DC=org/DC=OpenSSL/DC=users/UID=123456+CN=John Doe>
289
290=item B<-multivalue-rdn>
291
292This option has been deprecated and has no effect.
293
294=item B<-x509>
295
296This option outputs a certificate instead of a certificate request.
297This is typically used to generate test certificates.
298It is implied by the B<-CA> option.
299
300This option implies the B<-new> flag if B<-in> is not given.
301
302If an existing request is specified with the B<-in> option, it is converted
303to a certificate; otherwise a request is created from scratch.
304
305Unless specified using the B<-set_serial> option,
306a large random number will be used for the serial number.
307
308Unless the B<-copy_extensions> option is used,
309X.509 extensions are not copied from any provided request input file.
310
311X.509 extensions to be added can be specified in the configuration file,
312possibly using the B<-config> and B<-extensions> options,
313and/or using the B<-addext> option.
314
315Unless B<-x509v1> is given, generated certificates bear X.509 version 3.
316Unless specified otherwise,
317key identifier extensions are included as described in L<x509v3_config(5)>.
318
319=item B<-x509v1>
320
321Request generation of certificates with X.509 version 1.
322This implies B<-x509>.
323If X.509 extensions are given, anyway X.509 version 3 is set.
324
325=item B<-CA> I<filename>|I<uri>
326
327Specifies the "CA" certificate to be used for signing a new certificate
328and implies use of B<-x509>.
329When present, this behaves like a "micro CA" as follows:
330The subject name of the "CA" certificate is placed as issuer name in the new
331certificate, which is then signed using the "CA" key given as specified below.
332
333=item B<-CAkey> I<filename>|I<uri>
334
335Sets the "CA" private key to sign a certificate with.
336The private key must match the public key of the certificate given with B<-CA>.
337If this option is not provided then the key must be present in the B<-CA> input.
338
339=item B<-not_before> I<date>
340
341When B<-x509> is in use this allows the start date to be explicitly set,
342otherwise it is ignored. The format of I<date> is YYMMDDHHMMSSZ (the
343same as an ASN1 UTCTime structure), or YYYYMMDDHHMMSSZ (the same as an
344ASN1 GeneralizedTime structure). In both formats, seconds SS and
345timezone Z must be present.
346Alternatively, you can also use "today".
347
348=item B<-not_after> I<date>
349
350When B<-x509> is in use this allows the expiry date to be explicitly
351set, otherwise it is ignored. The format of I<date> is YYMMDDHHMMSSZ
352(the same as an ASN1 UTCTime structure), or YYYYMMDDHHMMSSZ (the same as
353an ASN1 GeneralizedTime structure). In both formats, seconds SS and
354timezone Z must be present.
355Alternatively, you can also use "today".
356
357This overrides the B<-days> option.
358
359=item B<-days> I<n>
360
361When B<-x509> is in use this specifies the number of days from today to
362certify the certificate for, otherwise it is ignored. I<n> should
363be a positive integer. The default is 30 days.
364
365Regardless of the option B<-not_before>, the days are always counted from
366today.
367When used together with the option B<-not_after>, the explicit expiry
368date takes precedence.
369
370=item B<-set_serial> I<n>
371
372Serial number to use when outputting a self-signed certificate.
373This may be specified as a decimal value or a hex value if preceded by C<0x>.
374If not given, a large random number will be used.
375
376=item B<-copy_extensions> I<arg>
377
378Determines how X.509 extensions in certificate requests should be handled
379when B<-x509> is in use.
380If I<arg> is B<none> or this option is not present then extensions are ignored.
381If I<arg> is B<copy> or B<copyall> then
382all extensions in the request are copied to the certificate.
383
384The main use of this option is to allow a certificate request to supply
385values for certain extensions such as subjectAltName.
386
387=item B<-extensions> I<section>,
388B<-reqexts> I<section>
389
390Can be used to override the name of the configuration file section
391from which X.509 extensions are included
392in the certificate (when B<-x509> is in use) or certificate request.
393This allows several different sections to be used in the same configuration
394file to specify requests for a variety of purposes.
395
396=item B<-addext> I<ext>
397
398Add a specific extension to the certificate (if B<-x509> is in use)
399or certificate request.  The argument must have the form of
400a C<key=value> pair as it would appear in a config file.
401
402If an extension is added using this option that has the same OID as one
403defined in the extension section of the config file, it overrides that one.
404
405This option can be given multiple times.
406Doing so, the same key most not be given more than once.
407
408=item B<-precert>
409
410A poison extension will be added to the certificate, making it a
411"pre-certificate" (see RFC6962). This can be submitted to Certificate
412Transparency logs in order to obtain signed certificate timestamps (SCTs).
413These SCTs can then be embedded into the pre-certificate as an extension, before
414removing the poison and signing the certificate.
415
416This implies the B<-new> flag.
417
418=item B<-utf8>
419
420This option causes field values to be interpreted as UTF8 strings, by
421default they are interpreted as ASCII. This means that the field
422values, whether prompted from a terminal or obtained from a
423configuration file, must be valid UTF8 strings.
424
425=item B<-reqopt> I<option>
426
427Customise the printing format used with B<-text>. The I<option> argument can be
428a single option or multiple options separated by commas.
429
430See discussion of the  B<-certopt> parameter in the L<openssl-x509(1)>
431command.
432
433=item B<-newhdr>
434
435Adds the word B<NEW> to the PEM file header and footer lines on the outputted
436request. Some software (Netscape certificate server) and some CAs need this.
437
438=item B<-batch>
439
440Non-interactive mode.
441
442=item B<-verbose>
443
444Print extra details about the operations being performed.
445
446=item B<-quiet>
447
448Print fewer details about the operations being performed, which may be
449handy during batch scripts or pipelines (specifically "progress dots"
450during key generation are suppressed).
451
452=item B<-keygen_engine> I<id>
453
454Specifies an engine (by its unique I<id> string) which would be used
455for key generation operations.
456
457{- $OpenSSL::safe::opt_name_item -}
458
459{- $OpenSSL::safe::opt_r_item -}
460
461{- $OpenSSL::safe::opt_engine_item -}
462
463{- $OpenSSL::safe::opt_provider_item -}
464
465=back
466
467=head1 CONFIGURATION FILE FORMAT
468
469The configuration options are specified in the B<req> section of
470the configuration file. An alternate name be specified by using the
471B<-section> option.
472As with all configuration files, if no
473value is specified in the specific section then
474the initial unnamed or B<default> section is searched too.
475
476The options available are described in detail below.
477
478=over 4
479
480=item B<input_password>, B<output_password>
481
482The passwords for the input private key file (if present) and
483the output private key file (if one will be created). The
484command line options B<passin> and B<passout> override the
485configuration file values.
486
487=item B<default_bits>
488
489Specifies the default key size in bits.
490
491This option is used in conjunction with the B<-new> option to generate
492a new key. It can be overridden by specifying an explicit key size in
493the B<-newkey> option. The smallest accepted key size is 512 bits. If
494no key size is specified then 2048 bits is used.
495
496=item B<default_keyfile>
497
498This is the default filename to write a private key to. If not
499specified the key is written to standard output. This can be
500overridden by the B<-keyout> option.
501
502=item B<oid_file>
503
504This specifies a file containing additional B<OBJECT IDENTIFIERS>.
505Each line of the file should consist of the numerical form of the
506object identifier followed by whitespace then the short name followed
507by whitespace and finally the long name.
508
509=item B<oid_section>
510
511This specifies a section in the configuration file containing extra
512object identifiers. Each line should consist of the short name of the
513object identifier followed by B<=> and the numerical form. The short
514and long names are the same when this option is used.
515
516=item B<RANDFILE>
517
518At startup the specified file is loaded into the random number generator,
519and at exit 256 bytes will be written to it.
520It is used for private key generation.
521
522=item B<encrypt_key>
523
524If this is set to B<no> then if a private key is generated it is
525B<not> encrypted. This is equivalent to the B<-noenc> command line
526option. For compatibility B<encrypt_rsa_key> is an equivalent option.
527
528=item B<default_md>
529
530This option specifies the digest algorithm to use. Any digest supported by the
531OpenSSL B<dgst> command can be used. This option can be overridden on the
532command line. Certain signing algorithms (i.e. Ed25519 and Ed448) will ignore
533any digest that has been set.
534
535=item B<string_mask>
536
537This option masks out the use of certain string types in certain
538fields. Most users will not need to change this option. It can be set to
539several values:
540
541=over 4
542
543=item B<utf8only>
544- only UTF8Strings are used (this is the default value)
545
546=item B<pkix>
547- any string type except T61Strings
548
549=item B<nombstr>
550- any string type except BMPStrings and UTF8Strings
551
552=item B<default>
553- any kind of string type
554
555=back
556
557Note that B<utf8only> is the PKIX recommendation in RFC2459 after 2003, and the
558default B<string_mask>; B<default> is not the default option. The B<nombstr>
559value is a workaround for some software that has problems with variable-sized
560BMPStrings and UTF8Strings.
561
562=item B<req_extensions>
563
564This specifies the configuration file section containing a list of
565extensions to add to the certificate request. It can be overridden
566by the B<-reqexts> (or B<-extensions>) command line switch. See the
567L<x509v3_config(5)> manual page for details of the
568extension section format.
569
570=item B<x509_extensions>
571
572This specifies the configuration file section containing a list of
573extensions to add to certificate generated when B<-x509> is in use.
574It can be overridden by the B<-extensions> command line switch.
575
576=item B<prompt>
577
578If set to the value B<no> this disables prompting of certificate fields
579and just takes values from the config file directly. It also changes the
580expected format of the B<distinguished_name> and B<attributes> sections.
581
582=item B<utf8>
583
584If set to the value B<yes> then field values to be interpreted as UTF8
585strings, by default they are interpreted as ASCII. This means that
586the field values, whether prompted from a terminal or obtained from a
587configuration file, must be valid UTF8 strings.
588
589=item B<attributes>
590
591This specifies the section containing any request attributes: its format
592is the same as B<distinguished_name>. Typically these may contain the
593challengePassword or unstructuredName types. They are currently ignored
594by OpenSSL's request signing utilities but some CAs might want them.
595
596=item B<distinguished_name>
597
598This specifies the section containing the distinguished name fields to
599prompt for when generating a certificate or certificate request. The format
600is described in the next section.
601
602=back
603
604=head1 DISTINGUISHED NAME AND ATTRIBUTE SECTION FORMAT
605
606There are two separate formats for the distinguished name and attribute
607sections. If the B<prompt> option is set to B<no> then these sections
608just consist of field names and values: for example,
609
610 CN=My Name
611 OU=My Organization
612 emailAddress=someone@somewhere.org
613
614This allows external programs (e.g. GUI based) to generate a template file with
615all the field names and values and just pass it to this command. An example
616of this kind of configuration file is contained in the B<EXAMPLES> section.
617
618Alternatively if the B<prompt> option is absent or not set to B<no> then the
619file contains field prompting information. It consists of lines of the form:
620
621 fieldName="prompt"
622 fieldName_default="default field value"
623 fieldName_min= 2
624 fieldName_max= 4
625
626"fieldName" is the field name being used, for example commonName (or CN).
627The "prompt" string is used to ask the user to enter the relevant
628details. If the user enters nothing then the default value is used if no
629default value is present then the field is omitted. A field can
630still be omitted if a default value is present if the user just
631enters the '.' character.
632
633The number of characters entered must be between the fieldName_min and
634fieldName_max limits: there may be additional restrictions based
635on the field being used (for example countryName can only ever be
636two characters long and must fit in a PrintableString).
637
638Some fields (such as organizationName) can be used more than once
639in a DN. This presents a problem because configuration files will
640not recognize the same name occurring twice. To avoid this problem
641if the fieldName contains some characters followed by a full stop
642they will be ignored. So for example a second organizationName can
643be input by calling it "1.organizationName".
644
645The actual permitted field names are any object identifier short or
646long names. These are compiled into OpenSSL and include the usual
647values such as commonName, countryName, localityName, organizationName,
648organizationalUnitName, stateOrProvinceName. Additionally emailAddress
649is included as well as name, surname, givenName, initials, and dnQualifier.
650
651Additional object identifiers can be defined with the B<oid_file> or
652B<oid_section> options in the configuration file. Any additional fields
653will be treated as though they were a DirectoryString.
654
655
656=head1 EXAMPLES
657
658Examine and verify certificate request:
659
660 openssl req -in req.pem -text -verify -noout
661
662Specify the cipher to be used for encrypting the private key:
663
664 openssl req -newkey rsa:2048 -keyout privatekey.pem -out request.csr -cipher aes-256-cbc
665
666Create a private key and then generate a certificate request from it:
667
668 openssl genrsa -out key.pem 2048
669 openssl req -new -key key.pem -out req.pem
670
671The same but just using req:
672
673 openssl req -newkey rsa:2048 -keyout key.pem -out req.pem
674
675Generate a self-signed root certificate:
676
677 openssl req -x509 -newkey rsa:2048 -keyout key.pem -out req.pem
678
679Create an SM2 private key and then generate a certificate request from it:
680
681 openssl ecparam -genkey -name SM2 -out sm2.key
682 openssl req -new -key sm2.key -out sm2.csr -sm3 -sigopt "distid:1234567812345678"
683
684Examine and verify an SM2 certificate request:
685
686 openssl req -verify -in sm2.csr -sm3 -vfyopt "distid:1234567812345678"
687
688Example of a file pointed to by the B<oid_file> option:
689
690 1.2.3.4        shortName       A longer Name
691 1.2.3.6        otherName       Other longer Name
692
693Example of a section pointed to by B<oid_section> making use of variable
694expansion:
695
696 testoid1=1.2.3.5
697 testoid2=${testoid1}.6
698
699Sample configuration file prompting for field values:
700
701 [ req ]
702 default_bits           = 2048
703 default_keyfile        = privkey.pem
704 distinguished_name     = req_distinguished_name
705 attributes             = req_attributes
706 req_extensions         = v3_ca
707
708 dirstring_type = nobmp
709
710 [ req_distinguished_name ]
711 countryName                    = Country Name (2 letter code)
712 countryName_default            = AU
713 countryName_min                = 2
714 countryName_max                = 2
715
716 localityName                   = Locality Name (eg, city)
717
718 organizationalUnitName         = Organizational Unit Name (eg, section)
719
720 commonName                     = Common Name (eg, YOUR name)
721 commonName_max                 = 64
722
723 emailAddress                   = Email Address
724 emailAddress_max               = 40
725
726 [ req_attributes ]
727 challengePassword              = A challenge password
728 challengePassword_min          = 4
729 challengePassword_max          = 20
730
731 [ v3_ca ]
732
733 subjectKeyIdentifier=hash
734 authorityKeyIdentifier=keyid:always,issuer:always
735 basicConstraints = critical, CA:true
736
737Sample configuration containing all field values:
738
739
740 [ req ]
741 default_bits           = 2048
742 default_keyfile        = keyfile.pem
743 distinguished_name     = req_distinguished_name
744 attributes             = req_attributes
745 prompt                 = no
746 output_password        = mypass
747
748 [ req_distinguished_name ]
749 C                      = GB
750 ST                     = Test State or Province
751 L                      = Test Locality
752 O                      = Organization Name
753 OU                     = Organizational Unit Name
754 CN                     = Common Name
755 emailAddress           = test@email.address
756
757 [ req_attributes ]
758 challengePassword              = A challenge password
759
760Example of giving the most common attributes (subject and extensions)
761on the command line:
762
763 openssl req -new -subj "/C=GB/CN=foo" \
764                  -addext "subjectAltName = DNS:foo.co.uk" \
765                  -addext "certificatePolicies = 1.2.3.4" \
766                  -newkey rsa:2048 -keyout key.pem -out req.pem
767
768
769=head1 NOTES
770
771The certificate requests generated by B<Xenroll> with MSIE have extensions
772added. It includes the B<keyUsage> extension which determines the type of
773key (signature only or general purpose) and any additional OIDs entered
774by the script in an B<extendedKeyUsage> extension.
775
776=head1 DIAGNOSTICS
777
778The following messages are frequently asked about:
779
780        Using configuration from /some/path/openssl.cnf
781        Unable to load config info
782
783This is followed some time later by:
784
785        unable to find 'distinguished_name' in config
786        problems making Certificate Request
787
788The first error message is the clue: it can't find the configuration
789file! Certain operations (like examining a certificate request) don't
790need a configuration file so its use isn't enforced. Generation of
791certificates or requests however does need a configuration file. This
792could be regarded as a bug.
793
794Another puzzling message is this:
795
796        Attributes:
797            a0:00
798
799this is displayed when no attributes are present and the request includes
800the correct empty B<SET OF> structure (the DER encoding of which is 0xa0
8010x00). If you just see:
802
803        Attributes:
804
805then the B<SET OF> is missing and the encoding is technically invalid (but
806it is tolerated). See the description of the command line option B<-asn1-kludge>
807for more information.
808
809=head1 BUGS
810
811OpenSSL's handling of T61Strings (aka TeletexStrings) is broken: it effectively
812treats them as ISO-8859-1 (Latin 1), Netscape and MSIE have similar behaviour.
813This can cause problems if you need characters that aren't available in
814PrintableStrings and you don't want to or can't use BMPStrings.
815
816As a consequence of the T61String handling the only correct way to represent
817accented characters in OpenSSL is to use a BMPString: unfortunately Netscape
818currently chokes on these. If you have to use accented characters with Netscape
819and MSIE then you currently need to use the invalid T61String form.
820
821The current prompting is not very friendly. It doesn't allow you to confirm what
822you've just entered. Other things like extensions in certificate requests are
823statically defined in the configuration file. Some of these: like an email
824address in subjectAltName should be input by the user.
825
826=head1 SEE ALSO
827
828L<openssl(1)>,
829L<openssl-x509(1)>,
830L<openssl-ca(1)>,
831L<openssl-genrsa(1)>,
832L<openssl-gendsa(1)>,
833L<config(5)>,
834L<x509v3_config(5)>
835
836=head1 HISTORY
837
838The default encryption cipher was changed from 3DES to AES-256 in OpenSSL 3.5.
839
840The B<-section> option was added in OpenSSL 3.0.0.
841
842The B<-multivalue-rdn> option has become obsolete in OpenSSL 3.0.0 and
843has no effect.
844
845The B<-engine> option was deprecated in OpenSSL 3.0.
846The <-nodes> option was deprecated in OpenSSL 3.0, too; use B<-noenc> instead.
847
848The B<-reqexts> option has been made an alias of B<-extensions> in OpenSSL 3.2.
849
850Since OpenSSL 3.2,
851generated certificates bear X.509 version 3 unless B<-x509v1> is given,
852and key identifier extensions are included by default.
853
854Since OpenSSL 3.3, the B<-verify> option will exit with 1 on failure.
855
856=head1 COPYRIGHT
857
858Copyright 2000-2024 The OpenSSL Project Authors. All Rights Reserved.
859
860Licensed under the Apache License 2.0 (the "License").  You may not use
861this file except in compliance with the License.  You can obtain a copy
862in the file LICENSE in the source distribution or at
863L<https://www.openssl.org/source/license.html>.
864
865=cut
866