]> git.ipfire.org Git - thirdparty/openssl.git/blame - doc/man1/openssl-x509.pod
Document the -inform, etc., in openssl.pod
[thirdparty/openssl.git] / doc / man1 / openssl-x509.pod
CommitLineData
aba3e65f
DSH
1=pod
2
3=head1 NAME
4
b6b66573 5openssl-x509 - Certificate display and signing utility
aba3e65f
DSH
6
7=head1 SYNOPSIS
8
9B<openssl> B<x509>
169394d4 10[B<-help>]
e8769719
RS
11[B<-inform> B<DER>|B<PEM>]
12[B<-outform> B<DER>|B<PEM>]
13[B<-keyform> B<DER>|B<PEM>]
14[B<-CAform> B<DER>|B<PEM>]
15[B<-CAkeyform> B<DER>|B<PEM>]
16[B<-in> I<filename>]
17[B<-out> I<filename>]
aba3e65f
DSH
18[B<-serial>]
19[B<-hash>]
94805c84
RL
20[B<-subject_hash>]
21[B<-issuer_hash>]
fc1d88f0 22[B<-ocspid>]
aba3e65f
DSH
23[B<-subject>]
24[B<-issuer>]
e8769719 25[B<-nameopt> I<option>]
a91dedca 26[B<-email>]
14023fe3 27[B<-ocsp_uri>]
aba3e65f
DSH
28[B<-startdate>]
29[B<-enddate>]
30[B<-purpose>]
31[B<-dates>]
e8769719 32[B<-checkend> I<num>]
aba3e65f 33[B<-modulus>]
74cc3b58 34[B<-pubkey>]
aba3e65f
DSH
35[B<-fingerprint>]
36[B<-alias>]
37[B<-noout>]
38[B<-trustout>]
39[B<-clrtrust>]
9868232a 40[B<-clrreject>]
e8769719
RS
41[B<-addtrust> I<arg>]
42[B<-addreject> I<arg>]
43[B<-setalias> I<arg>]
44[B<-days> I<arg>]
45[B<-set_serial> I<n>]
46[B<-signkey> I<filename>]
47[B<-passin> I<arg>]
aba3e65f
DSH
48[B<-x509toreq>]
49[B<-req>]
e8769719
RS
50[B<-CA> I<filename>]
51[B<-CAkey> I<filename>]
aba3e65f 52[B<-CAcreateserial>]
e8769719 53[B<-CAserial> I<filename>]
52958608 54[B<-new>]
e8769719
RS
55[B<-force_pubkey> I<filename>]
56[B<-subj> I<arg>]
aba3e65f 57[B<-text>]
e8769719
RS
58[B<-ext> I<extensions>]
59[B<-certopt> I<option>]
aba3e65f 60[B<-C>]
8dc57d76 61[B<-I<digest>>]
aba3e65f 62[B<-clrext>]
e8769719
RS
63[B<-extfile> I<filename>]
64[B<-extensions> I<section>]
65[B<-sigopt> I<nm>:I<v>]
fed8bd90 66[B<-rand> I<files>]
e8769719
RS
67[B<-writerand> I<file>]
68[B<-engine> I<id>]
4a60bb18 69[B<-preserve_dates>]
aba3e65f 70
9f3c076b 71=for openssl ifdef engine subject_hash_old issuer_hash_old
1738c0ce 72
aba3e65f
DSH
73=head1 DESCRIPTION
74
35a810bb
RL
75This command is a multi purpose certificate utility. It can
76be used to display certificate information, convert certificates to
aba3e65f
DSH
77various forms, sign certificate requests like a "mini CA" or edit
78certificate trust settings.
79
80Since there are a large number of options they will split up into
81various sections.
82
32d21c1e 83=head1 OPTIONS
aba3e65f 84
05ea606a 85=head2 Input, Output, and General Purpose Options
aba3e65f
DSH
86
87=over 4
88
169394d4
MR
89=item B<-help>
90
91Print out a usage message.
92
777182a0 93=item B<-inform> B<DER>|B<PEM>, B<-outform> B<DER>|B<PEM>
aba3e65f 94
777182a0
RS
95The input and formats; the default is B<PEM>.
96See L<openssl(1)/Format Options> for details.
aba3e65f 97
777182a0
RS
98The input is normally an X.509 certificate, but this can change if other
99options such as B<-req> are used.
aba3e65f 100
e8769719 101=item B<-in> I<filename>
aba3e65f
DSH
102
103This specifies the input filename to read a certificate from or standard input
104if this option is not specified.
105
e8769719 106=item B<-out> I<filename>
aba3e65f
DSH
107
108This specifies the output filename to write to or standard output by
109default.
110
8dc57d76 111=item B<-I<digest>>
9868232a 112
c4de074e 113The digest to use.
c03726ca
RS
114This affects any signing or display option that uses a message
115digest, such as the B<-fingerprint>, B<-signkey> and B<-CA> options.
35a810bb 116Any digest supported by the L<openssl-dgst(1)> command can be used.
0b2d4755
DSH
117If not specified then SHA1 is used with B<-fingerprint> or
118the default digest for the signing algorithm is used, typically SHA256.
9868232a 119
a397aca4 120=item B<-rand> I<files>, B<-writerand> I<file>
3ee1eac2 121
a397aca4 122See L<openssl(1)/Random State Options> for more information.
3ee1eac2 123
e8769719 124=item B<-engine> I<id>
bfa35550 125
35a810bb 126Specifying an engine (by its unique I<id> string) will cause this command
bfa35550
RL
127to attempt to obtain a functional reference to the specified engine,
128thus initialising it if needed. The engine will then be set as the default
129for all available algorithms.
9868232a 130
4a60bb18
TS
131=item B<-preserve_dates>
132
56a98c3e
DO
133When signing a certificate, preserve the "notBefore" and "notAfter" dates
134instead of adjusting them to current time and duration.
135Cannot be used with the B<-days> option.
4a60bb18 136
aba3e65f
DSH
137=back
138
05ea606a 139=head2 Display Options
aba3e65f
DSH
140
141Note: the B<-alias> and B<-purpose> options are also display options
f5c14c63 142but are described in the L</Trust Settings> section.
aba3e65f
DSH
143
144=over 4
145
146=item B<-text>
147
c4de074e 148Prints out the certificate in text form. Full details are output including the
aba3e65f
DSH
149public key, signature algorithms, issuer and subject names, serial number
150any extensions present and any trust settings.
151
e8769719 152=item B<-ext> I<extensions>
c2908538
PY
153
154Prints out the certificate extensions in text form. Extensions are specified
155with a comma separated string, e.g., "subjectAltName,subjectKeyIdentifier".
156See the L<x509v3_config(5)> manual page for the extension names.
157
e8769719 158=item B<-certopt> I<option>
0a3ea5d3 159
2f0ea936 160Customise the output format used with B<-text>. The I<option> argument
c4de074e
P
161can be a single option or multiple options separated by commas. The
162B<-certopt> switch may be also be used more than once to set multiple
f5c14c63 163options. See the L</Text Options> section for more information.
0a3ea5d3 164
aba3e65f
DSH
165=item B<-noout>
166
67ee899c 167This option prevents output of the encoded version of the certificate.
aba3e65f 168
74cc3b58
BL
169=item B<-pubkey>
170
c4de074e 171Outputs the certificate's SubjectPublicKeyInfo block in PEM format.
74cc3b58 172
aba3e65f
DSH
173=item B<-modulus>
174
c4de074e 175This option prints out the value of the modulus of the public key
aba3e65f
DSH
176contained in the certificate.
177
178=item B<-serial>
179
c4de074e 180Outputs the certificate serial number.
aba3e65f 181
94805c84 182=item B<-subject_hash>
aba3e65f 183
c4de074e 184Outputs the "hash" of the certificate subject name. This is used in OpenSSL to
938ead8f 185form an index to allow certificates in a directory to be looked up by subject
aba3e65f
DSH
186name.
187
94805c84
RL
188=item B<-issuer_hash>
189
c4de074e 190Outputs the "hash" of the certificate issuer name.
94805c84 191
fc1d88f0
RS
192=item B<-ocspid>
193
c4de074e 194Outputs the OCSP hash values for the subject name and public key.
fc1d88f0 195
94805c84
RL
196=item B<-hash>
197
c4de074e 198Synonym for "-subject_hash" for backward compatibility reasons.
94805c84 199
0e0c6821
DSH
200=item B<-subject_hash_old>
201
c4de074e 202Outputs the "hash" of the certificate subject name using the older algorithm
e90fc053 203as used by OpenSSL before version 1.0.0.
0e0c6821
DSH
204
205=item B<-issuer_hash_old>
206
c4de074e 207Outputs the "hash" of the certificate issuer name using the older algorithm
e90fc053 208as used by OpenSSL before version 1.0.0.
0e0c6821 209
aba3e65f
DSH
210=item B<-subject>
211
c4de074e 212Outputs the subject name.
aba3e65f
DSH
213
214=item B<-issuer>
215
c4de074e 216Outputs the issuer name.
aba3e65f 217
e8769719 218=item B<-nameopt> I<option>
bd4e1527 219
c4de074e 220Option which determines how the subject or issuer names are displayed. The
2f0ea936 221I<option> argument can be a single option or multiple options separated by
e890dcdb 222commas. Alternatively the B<-nameopt> switch may be used more than once to
f5c14c63 223set multiple options. See the L</Name Options> section for more information.
bd4e1527 224
a91dedca
DSH
225=item B<-email>
226
c4de074e 227Outputs the email address(es) if any.
a91dedca 228
14023fe3
DSH
229=item B<-ocsp_uri>
230
c4de074e 231Outputs the OCSP responder address(es) if any.
14023fe3 232
aba3e65f
DSH
233=item B<-startdate>
234
c4de074e 235Prints out the start date of the certificate, that is the notBefore date.
aba3e65f
DSH
236
237=item B<-enddate>
238
c4de074e 239Prints out the expiry date of the certificate, that is the notAfter date.
aba3e65f
DSH
240
241=item B<-dates>
242
c4de074e 243Prints out the start and expiry dates of a certificate.
aba3e65f 244
e8769719 245=item B<-checkend> I<arg>
fc1d88f0 246
2f0ea936 247Checks if the certificate expires within the next I<arg> seconds and exits
9c0586d5 248nonzero if yes it will expire or zero if not.
fc1d88f0 249
aba3e65f
DSH
250=item B<-fingerprint>
251
9422d45d
RS
252Calculates and outputs the digest of the DER encoded version of the entire
253certificate (see digest options).
254This is commonly called a "fingerprint". Because of the nature of message
255digests, the fingerprint of a certificate is unique to that certificate and
256two certificates with the same fingerprint can be considered to be the same.
aba3e65f
DSH
257
258=item B<-C>
259
c4de074e 260This outputs the certificate in the form of a C source file.
aba3e65f
DSH
261
262=back
263
05ea606a 264=head2 Trust Settings
aba3e65f 265
aba3e65f
DSH
266A B<trusted certificate> is an ordinary certificate which has several
267additional pieces of information attached to it such as the permitted
268and prohibited uses of the certificate and an "alias".
269
270Normally when a certificate is being verified at least one certificate
271must be "trusted". By default a trusted certificate must be stored
272locally and must be a root CA: any certificate chain ending in this CA
273is then usable for any purpose.
274
13938ace
DSH
275Trust settings currently are only used with a root CA. They allow a finer
276control over the purposes the root CA can be used for. For example a CA
277may be trusted for SSL client but not SSL server use.
aba3e65f 278
35a810bb
RL
279See the description in L<openssl-verify(1)> for more information
280on the meaning of trust settings.
aba3e65f 281
657e60fa 282Future versions of OpenSSL will recognize trust settings on any
13938ace
DSH
283certificate: not just root CAs.
284
285
aba3e65f
DSH
286=over 4
287
288=item B<-trustout>
289
35a810bb 290Output a B<trusted> certificate rather than an ordinary. An ordinary
aba3e65f
DSH
291or trusted certificate can be input but by default an ordinary
292certificate is output and any trust settings are discarded. With the
293B<-trustout> option a trusted certificate is output. A trusted
294certificate is automatically output if any trust settings are modified.
295
e8769719 296=item B<-setalias> I<arg>
aba3e65f 297
c4de074e 298Sets the alias of the certificate. This will allow the certificate
19d2bb57 299to be referred to using a nickname for example "Steve's Certificate".
aba3e65f
DSH
300
301=item B<-alias>
302
c4de074e 303Outputs the certificate alias, if any.
aba3e65f
DSH
304
305=item B<-clrtrust>
306
c4de074e 307Clears all the permitted or trusted uses of the certificate.
aba3e65f 308
9868232a 309=item B<-clrreject>
aba3e65f 310
c4de074e 311Clears all the prohibited or rejected uses of the certificate.
aba3e65f 312
e8769719 313=item B<-addtrust> I<arg>
aba3e65f 314
c4de074e 315Adds a trusted certificate use.
0daccd4d
VD
316Any object name can be used here but currently only B<clientAuth> (SSL client
317use), B<serverAuth> (SSL server use), B<emailProtection> (S/MIME email) and
318B<anyExtendedKeyUsage> are used.
319As of OpenSSL 1.1.0, the last of these blocks all purposes when rejected or
320enables all purposes when trusted.
555b22cf 321Other OpenSSL applications may define additional uses.
aba3e65f 322
e8769719 323=item B<-addreject> I<arg>
aba3e65f 324
c4de074e 325Adds a prohibited use. It accepts the same values as the B<-addtrust>
aba3e65f
DSH
326option.
327
328=item B<-purpose>
329
c4de074e 330This option performs tests on the certificate extensions and outputs
f5c14c63
RL
331the results. For a more complete description see the
332L</CERTIFICATE EXTENSIONS> section.
aba3e65f
DSH
333
334=back
335
05ea606a 336=head2 Signing Options
aba3e65f 337
35a810bb 338This command can be used to sign certificates and requests: it
aba3e65f
DSH
339can thus behave like a "mini CA".
340
341=over 4
342
e8769719 343=item B<-signkey> I<filename>
aba3e65f 344
c4de074e 345This option causes the input file to be self signed using the supplied
1bc74519 346private key.
aba3e65f 347
56a98c3e
DO
348It sets the issuer name to the subject name (i.e., makes it self-issued)
349and changes the public key to the supplied value (unless overridden by
350B<-force_pubkey>). It sets the validity start date to the current time
351and the end date to a value determined by the B<-days> option.
352It retains any certificate extensions unless the B<-clrext> option is supplied;
353this includes, for example, any existing key identifier extensions.
aba3e65f 354
e8769719 355=item B<-sigopt> I<nm>:I<v>
d7b2124a
P
356
357Pass options to the signature algorithm during sign or verify operations.
358Names and values of these options are algorithm-specific.
359
e8769719 360=item B<-passin> I<arg>
fc1d88f0 361
2f0ea936 362The key password source. For more information about the format of I<arg>
3a4e43de 363see L<openssl(1)/Pass Phrase Options>.
fc1d88f0 364
aba3e65f
DSH
365=item B<-clrext>
366
c4de074e 367Delete any extensions from a certificate. This option is used when a
aba3e65f
DSH
368certificate is being created from another certificate (for example with
369the B<-signkey> or the B<-CA> options). Normally all extensions are
370retained.
371
e8769719 372=item B<-keyform> B<DER>|B<PEM>
aba3e65f 373
777182a0
RS
374The key format; the default is B<PEM>.
375See L<openssl(1)/Format Options> for details.
376
377=item B<-CAform> B<DER>|B<PEM>, B<-CAkeyform> B<DER>|B<PEM>
378
379The format for the CA certificate and key; the default is B<PEM>.
380See L<openssl(1)/Format Options> for details.
aba3e65f 381
e8769719 382=item B<-days> I<arg>
aba3e65f 383
c4de074e 384Specifies the number of days to make a certificate valid for. The default
4a60bb18 385is 30 days. Cannot be used with the B<-preserve_dates> option.
aba3e65f
DSH
386
387=item B<-x509toreq>
388
c4de074e 389Converts a certificate into a certificate request. The B<-signkey> option
aba3e65f
DSH
390is used to pass the required private key.
391
392=item B<-req>
393
c4de074e 394By default a certificate is expected on input. With this option a
aba3e65f
DSH
395certificate request is expected instead.
396
e8769719 397=item B<-set_serial> I<n>
cc5ba6a7 398
c4de074e 399Specifies the serial number to use. This option can be used with either
cc5ba6a7
DSH
400the B<-signkey> or B<-CA> options. If used in conjunction with the B<-CA>
401option the serial number file (as specified by the B<-CAserial> or
402B<-CAcreateserial> options) is not used.
403
a43384fd 404The serial number can be decimal or hex (if preceded by C<0x>).
cc5ba6a7 405
e8769719 406=item B<-CA> I<filename>
aba3e65f 407
c4de074e 408Specifies the CA certificate to be used for signing. When this option is
35a810bb
RL
409present, this command behaves like a "mini CA". The input file is signed by
410this CA using this option: that is its issuer name is set to the subject name
aba3e65f
DSH
411of the CA and it is digitally signed using the CAs private key.
412
413This option is normally combined with the B<-req> option. Without the
414B<-req> option the input is a certificate which must be self signed.
415
e8769719 416=item B<-CAkey> I<filename>
aba3e65f 417
c4de074e 418Sets the CA private key to sign a certificate with. If this option is
aba3e65f
DSH
419not specified then it is assumed that the CA private key is present in
420the CA certificate file.
421
e8769719 422=item B<-CAserial> I<filename>
aba3e65f 423
c4de074e 424Sets the CA serial number file to use.
aba3e65f
DSH
425
426When the B<-CA> option is used to sign a certificate it uses a serial
d53df3d0 427number specified in a file. This file consists of one line containing
aba3e65f
DSH
428an even number of hex digits with the serial number to use. After each
429use the serial number is incremented and written out to the file again.
430
431The default filename consists of the CA certificate file base name with
1948394d
RL
432F<.srl> appended. For example if the CA certificate file is called
433F<mycacert.pem> it expects to find a serial number file called
434F<mycacert.srl>.
aba3e65f 435
d6257073 436=item B<-CAcreateserial>
aba3e65f 437
c4de074e 438With this option the CA serial number file is created if it does not exist:
8100490a 439it will contain the serial number "02" and the certificate being signed will
46aa6078
RS
440have the 1 as its serial number. If the B<-CA> option is specified
441and the serial number file does not exist a random number is generated;
442this is the recommended practice.
aba3e65f 443
e8769719 444=item B<-extfile> I<filename>
aba3e65f 445
c4de074e 446File containing certificate extensions to use. If not specified then
aba3e65f
DSH
447no extensions are added to the certificate.
448
e8769719 449=item B<-extensions> I<section>
aba3e65f 450
c4de074e 451The section to add certificate extensions from. If this option is not
aba3e65f
DSH
452specified then the extensions should either be contained in the unnamed
453(default) section or the default section should contain a variable called
137de5b1 454"extensions" which contains the section to use. See the
9b86974e 455L<x509v3_config(5)> manual page for details of the
137de5b1 456extension section format.
aba3e65f 457
52958608
DO
458=item B<-new>
459
460Generate a certificate from scratch, not using an input certificate
461or certificate request. So the B<-in> option must not be used in this case.
462Instead, the B<-subj> and <-force_pubkey> options need to be given.
463
e8769719 464=item B<-force_pubkey> I<filename>
902efde1 465
2f0ea936 466When a certificate is created set its public key to the key in I<filename>
56a98c3e 467instead of the key contained in the input or given with the B<-signkey> option.
52958608 468
56a98c3e
DO
469This option is useful for creating self-issued certificates that are not
470self-signed, for instance when the key cannot be used for signing, such as DH.
52958608
DO
471It can also be used in conjunction with b<-new> and B<-subj> to directly
472generate a certificate containing any desired public key.
902efde1 473
56a98c3e 474The format of the key file can be specified using the B<-keyform> option.
902efde1 475
e8769719 476=item B<-subj> I<arg>
52958608
DO
477
478When a certificate is created set its subject name to the given value.
a43384fd 479The arg must be formatted as C</type0=value0/type1=value1/type2=...>.
52958608
DO
480Keyword characters may be escaped by \ (backslash), and whitespace is retained.
481Empty values are permitted, but the corresponding type will not be included
a43384fd 482in the certificate. Giving a single C</> will lead to an empty sequence of RDNs
52958608
DO
483(a NULL subject DN).
484
485Unless the B<-CA> option is given the issuer is set to the same value.
486
487This option can be used in conjunction with the B<-force_pubkey> option
488to create a certificate even without providing an input certificate
489or certificate request.
490
aba3e65f
DSH
491=back
492
05ea606a 493=head2 Name Options
bd4e1527 494
2f0ea936
RL
495The B<-nameopt> command line switch determines how the subject and issuer
496names are displayed. If no B<-nameopt> switch is present the default "oneline"
bd4e1527
DSH
497format is used which is compatible with previous versions of OpenSSL.
498Each option is described in detail below, all options can be preceded by
499a B<-> to turn the option off. Only the first four will normally be used.
500
501=over 4
502
503=item B<compat>
504
c4de074e 505Use the old format.
bd4e1527
DSH
506
507=item B<RFC2253>
508
c4de074e 509Displays names compatible with RFC2253 equivalent to B<esc_2253>, B<esc_ctrl>,
bd4e1527
DSH
510B<esc_msb>, B<utf8>, B<dump_nostr>, B<dump_unknown>, B<dump_der>,
511B<sep_comma_plus>, B<dn_rev> and B<sname>.
512
513=item B<oneline>
514
c4de074e 515A oneline format which is more readable than RFC2253. It is equivalent to
bd4e1527 516specifying the B<esc_2253>, B<esc_ctrl>, B<esc_msb>, B<utf8>, B<dump_nostr>,
0501f02b 517B<dump_der>, B<use_quote>, B<sep_comma_plus_space>, B<space_eq> and B<sname>
0d4fb843 518options. This is the I<default> of no name options are given explicitly.
bd4e1527
DSH
519
520=item B<multiline>
521
c4de074e 522A multiline format. It is equivalent B<esc_ctrl>, B<esc_msb>, B<sep_multiline>,
0501f02b 523B<space_eq>, B<lname> and B<align>.
bd4e1527
DSH
524
525=item B<esc_2253>
526
c4de074e 527Escape the "special" characters required by RFC2253 in a field. That is
3b80e3aa 528B<,+"E<lt>E<gt>;>. Additionally B<#> is escaped at the beginning of a string
bd4e1527
DSH
529and a space character at the beginning or end of a string.
530
a37458c1
RL
531=item B<esc_2254>
532
c4de074e 533Escape the "special" characters required by RFC2254 in a field. That is
a37458c1
RL
534the B<NUL> character as well as and B<()*>.
535
bd4e1527
DSH
536=item B<esc_ctrl>
537
c4de074e 538Escape control characters. That is those with ASCII values less than
bd4e1527
DSH
5390x20 (space) and the delete (0x7f) character. They are escaped using the
540RFC2253 \XX notation (where XX are two hex digits representing the
541character value).
542
543=item B<esc_msb>
544
c4de074e 545Escape characters with the MSB set, that is with ASCII values larger than
bd4e1527
DSH
546127.
547
548=item B<use_quote>
549
c4de074e 550Escapes some characters by surrounding the whole string with B<"> characters,
bd4e1527
DSH
551without the option all escaping is done with the B<\> character.
552
553=item B<utf8>
554
c4de074e 555Convert all strings to UTF8 format first. This is required by RFC2253. If
bd4e1527
DSH
556you are lucky enough to have a UTF8 compatible terminal then the use
557of this option (and B<not> setting B<esc_msb>) may result in the correct
558display of multibyte (international) characters. Is this option is not
559present then multibyte characters larger than 0xff will be represented
560using the format \UXXXX for 16 bits and \WXXXXXXXX for 32 bits.
561Also if this option is off any UTF8Strings will be converted to their
562character form first.
563
fc1d88f0 564=item B<ignore_type>
bd4e1527 565
c4de074e 566This option does not attempt to interpret multibyte characters in any
bd4e1527
DSH
567way. That is their content octets are merely dumped as though one octet
568represents each character. This is useful for diagnostic purposes but
569will result in rather odd looking output.
570
571=item B<show_type>
572
c4de074e 573Show the type of the ASN1 character string. The type precedes the
bd4e1527
DSH
574field contents. For example "BMPSTRING: Hello World".
575
576=item B<dump_der>
577
c4de074e 578When this option is set any fields that need to be hexdumped will
bd4e1527
DSH
579be dumped using the DER encoding of the field. Otherwise just the
580content octets will be displayed. Both options use the RFC2253
581B<#XXXX...> format.
582
583=item B<dump_nostr>
584
c4de074e 585Dump non character string types (for example OCTET STRING) if this
bd4e1527 586option is not set then non character string types will be displayed
3b80e3aa 587as though each content octet represents a single character.
bd4e1527
DSH
588
589=item B<dump_all>
590
c4de074e 591Dump all fields. This option when used with B<dump_der> allows the
bd4e1527
DSH
592DER encoding of the structure to be unambiguously determined.
593
594=item B<dump_unknown>
595
c4de074e 596Dump any field whose OID is not recognised by OpenSSL.
bd4e1527
DSH
597
598=item B<sep_comma_plus>, B<sep_comma_plus_space>, B<sep_semi_plus_space>,
599B<sep_multiline>
600
c4de074e 601These options determine the field separators. The first character is
59fbc8ef
DB
602between Relative Distinguished Names (RDNs) and the second is between
603multiple Attribute Value Assertions (AVAs, multiple AVAs are
bd4e1527
DSH
604very rare and their use is discouraged). The options ending in
605"space" additionally place a space after the separator to make it
606more readable. The B<sep_multiline> uses a linefeed character for
607the RDN separator and a spaced B<+> for the AVA separator. It also
03706afa
DSH
608indents the fields by four characters. If no field separator is specified
609then B<sep_comma_plus_space> is used by default.
bd4e1527
DSH
610
611=item B<dn_rev>
612
c4de074e 613Reverse the fields of the DN. This is required by RFC2253. As a side
d428bf8c 614effect this also reverses the order of multiple AVAs but this is
bd4e1527
DSH
615permissible.
616
617=item B<nofname>, B<sname>, B<lname>, B<oid>
618
c4de074e 619These options alter how the field name is displayed. B<nofname> does
bd4e1527
DSH
620not display the field at all. B<sname> uses the "short name" form
621(CN for commonName for example). B<lname> uses the long form.
622B<oid> represents the OID in numerical form and is useful for
623diagnostic purpose.
624
e890dcdb
DSH
625=item B<align>
626
c4de074e 627Align field values for a more readable output. Only usable with
e890dcdb
DSH
628B<sep_multiline>.
629
0501f02b 630=item B<space_eq>
bd4e1527 631
c4de074e 632Places spaces round the B<=> character which follows the field
bd4e1527
DSH
633name.
634
635=back
636
05ea606a 637=head2 Text Options
0a3ea5d3
DSH
638
639As well as customising the name output format, it is also possible to
640customise the actual fields printed using the B<certopt> options when
641the B<text> option is present. The default behaviour is to print all fields.
642
72da660d
LJ
643=over 4
644
0a3ea5d3
DSH
645=item B<compatible>
646
c4de074e 647Use the old format. This is equivalent to specifying no output options at all.
0a3ea5d3
DSH
648
649=item B<no_header>
650
c4de074e
P
651Don't print header information: that is the lines saying "Certificate"
652and "Data".
0a3ea5d3
DSH
653
654=item B<no_version>
655
c4de074e 656Don't print out the version number.
0a3ea5d3
DSH
657
658=item B<no_serial>
659
c4de074e 660Don't print out the serial number.
0a3ea5d3
DSH
661
662=item B<no_signame>
663
c4de074e 664Don't print out the signature algorithm used.
0a3ea5d3
DSH
665
666=item B<no_validity>
667
c4de074e 668Don't print the validity, that is the B<notBefore> and B<notAfter> fields.
0a3ea5d3
DSH
669
670=item B<no_subject>
671
c4de074e 672Don't print out the subject name.
0a3ea5d3
DSH
673
674=item B<no_issuer>
675
c4de074e 676Don't print out the issuer name.
0a3ea5d3
DSH
677
678=item B<no_pubkey>
679
c4de074e 680Don't print out the public key.
0a3ea5d3
DSH
681
682=item B<no_sigdump>
683
c4de074e 684Don't give a hexadecimal dump of the certificate signature.
0a3ea5d3
DSH
685
686=item B<no_aux>
687
c4de074e 688Don't print out certificate trust information.
0a3ea5d3
DSH
689
690=item B<no_extensions>
691
c4de074e 692Don't print out any X509V3 extensions.
0a3ea5d3
DSH
693
694=item B<ext_default>
695
c4de074e
P
696Retain default extension behaviour: attempt to print out unsupported
697certificate extensions.
0a3ea5d3
DSH
698
699=item B<ext_error>
700
c4de074e 701Print an error message for unsupported certificate extensions.
0a3ea5d3
DSH
702
703=item B<ext_parse>
704
705ASN1 parse unsupported extensions.
706
707=item B<ext_dump>
708
c4de074e 709Hex dump unsupported extensions.
0a3ea5d3 710
e890dcdb
DSH
711=item B<ca_default>
712
35a810bb 713The value used by L<openssl-ca(1)>, equivalent to B<no_issuer>, B<no_pubkey>,
39a47008 714B<no_header>, and B<no_version>.
e890dcdb 715
0a3ea5d3
DSH
716=back
717
aba3e65f
DSH
718=head1 EXAMPLES
719
720Note: in these examples the '\' means the example should be all on one
721line.
722
723Display the contents of a certificate:
724
1675f6eb 725 openssl x509 -in cert.pem -noout -text
aba3e65f 726
c2908538
PY
727Display the "Subject Alternative Name" extension of a certificate:
728
729 openssl x509 -in cert.pem -noout -ext subjectAltName
730
afc901e0 731Display more extensions of a certificate:
c2908538
PY
732
733 openssl x509 -in cert.pem -noout -ext subjectAltName,nsCertType
734
9868232a 735Display the certificate serial number:
aba3e65f 736
1675f6eb 737 openssl x509 -in cert.pem -noout -serial
aba3e65f 738
bd4e1527
DSH
739Display the certificate subject name:
740
741 openssl x509 -in cert.pem -noout -subject
742
743Display the certificate subject name in RFC2253 form:
744
745 openssl x509 -in cert.pem -noout -subject -nameopt RFC2253
746
747Display the certificate subject name in oneline form on a terminal
748supporting UTF8:
749
0501f02b 750 openssl x509 -in cert.pem -noout -subject -nameopt oneline,-esc_msb
bd4e1527 751
9868232a
DSH
752Display the certificate SHA1 fingerprint:
753
1675f6eb 754 openssl x509 -sha1 -in cert.pem -noout -fingerprint
aba3e65f
DSH
755
756Convert a certificate from PEM to DER format:
757
1675f6eb 758 openssl x509 -in cert.pem -inform PEM -out cert.der -outform DER
aba3e65f
DSH
759
760Convert a certificate to a certificate request:
761
1675f6eb 762 openssl x509 -x509toreq -in cert.pem -out req.pem -signkey key.pem
aba3e65f
DSH
763
764Convert a certificate request into a self signed certificate using
765extensions for a CA:
766
d428bf8c 767 openssl x509 -req -in careq.pem -extfile openssl.cnf -extensions v3_ca \
1bc74519 768 -signkey key.pem -out cacert.pem
aba3e65f 769
19d2bb57 770Sign a certificate request using the CA certificate above and add user
aba3e65f
DSH
771certificate extensions:
772
d428bf8c 773 openssl x509 -req -in req.pem -extfile openssl.cnf -extensions v3_usr \
1bc74519 774 -CA cacert.pem -CAkey key.pem -CAcreateserial
aba3e65f
DSH
775
776
777Set a certificate to be trusted for SSL client use and change set its alias to
778"Steve's Class 1 CA"
779
c653b569 780 openssl x509 -in cert.pem -addtrust clientAuth \
1bc74519 781 -setalias "Steve's Class 1 CA" -out trust.pem
aba3e65f 782
0286d944
DSH
783=head1 NOTES
784
bd4e1527
DSH
785The conversion to UTF8 format used with the name options assumes that
786T61Strings use the ISO8859-1 character set. This is wrong but Netscape
787and MSIE do this as do many certificates. So although this is incorrect
788it is more likely to display the majority of certificates correctly.
789
a91dedca
DSH
790The B<-email> option searches the subject name and the subject alternative
791name extension. Only unique email addresses will be printed out: it will
792not print the same address more than once.
793
5f2f0b55
DSH
794=head1 CERTIFICATE EXTENSIONS
795
796The B<-purpose> option checks the certificate extensions and determines
797what the certificate can be used for. The actual checks done are rather
798complex and include various hacks and workarounds to handle broken
799certificates and software.
800
801The same code is used when verifying untrusted certificates in chains
802so this section is useful if a chain is rejected by the verify code.
803
804The basicConstraints extension CA flag is used to determine whether the
805certificate can be used as a CA. If the CA flag is true then it is a CA,
806if the CA flag is false then it is not a CA. B<All> CAs should have the
807CA flag set to true.
808
809If the basicConstraints extension is absent then the certificate is
810considered to be a "possible CA" other extensions are checked according
811to the intended use of the certificate. A warning is given in this case
812because the certificate should really not be regarded as a CA: however
813it is allowed to be a CA to work around some broken software.
814
815If the certificate is a V1 certificate (and thus has no extensions) and
816it is self signed it is also assumed to be a CA but a warning is again
817given: this is to work around the problem of Verisign roots which are V1
818self signed certificates.
819
820If the keyUsage extension is present then additional restraints are
821made on the uses of the certificate. A CA certificate B<must> have the
822keyCertSign bit set if the keyUsage extension is present.
823
824The extended key usage extension places additional restrictions on the
825certificate uses. If this extension is present (whether critical or not)
826the key can only be used for the purposes specified.
827
828A complete description of each test is given below. The comments about
829basicConstraints and keyUsage and V1 certificates above apply to B<all>
830CA certificates.
831
832
833=over 4
834
835=item B<SSL Client>
836
837The extended key usage extension must be absent or include the "web client
838authentication" OID. keyUsage must be absent or it must have the
839digitalSignature bit set. Netscape certificate type must be absent or it must
840have the SSL client bit set.
841
842=item B<SSL Client CA>
843
844The extended key usage extension must be absent or include the "web client
845authentication" OID. Netscape certificate type must be absent or it must have
846the SSL CA bit set: this is used as a work around if the basicConstraints
847extension is absent.
848
849=item B<SSL Server>
850
851The extended key usage extension must be absent or include the "web server
852authentication" and/or one of the SGC OIDs. keyUsage must be absent or it
853must have the digitalSignature, the keyEncipherment set or both bits set.
854Netscape certificate type must be absent or have the SSL server bit set.
855
856=item B<SSL Server CA>
857
858The extended key usage extension must be absent or include the "web server
859authentication" and/or one of the SGC OIDs. Netscape certificate type must
860be absent or the SSL CA bit must be set: this is used as a work around if the
861basicConstraints extension is absent.
862
863=item B<Netscape SSL Server>
864
865For Netscape SSL clients to connect to an SSL server it must have the
866keyEncipherment bit set if the keyUsage extension is present. This isn't
867always valid because some cipher suites use the key for digital signing.
868Otherwise it is the same as a normal SSL server.
869
870=item B<Common S/MIME Client Tests>
871
872The extended key usage extension must be absent or include the "email
873protection" OID. Netscape certificate type must be absent or should have the
77a795e4 874S/MIME bit set. If the S/MIME bit is not set in Netscape certificate type
5f2f0b55
DSH
875then the SSL client bit is tolerated as an alternative but a warning is shown:
876this is because some Verisign certificates don't set the S/MIME bit.
877
878=item B<S/MIME Signing>
879
c4eec78d
KS
880In addition to the common S/MIME client tests the digitalSignature bit or
881the nonRepudiation bit must be set if the keyUsage extension is present.
5f2f0b55
DSH
882
883=item B<S/MIME Encryption>
884
885In addition to the common S/MIME tests the keyEncipherment bit must be set
886if the keyUsage extension is present.
887
888=item B<S/MIME CA>
889
890The extended key usage extension must be absent or include the "email
891protection" OID. Netscape certificate type must be absent or must have the
892S/MIME CA bit set: this is used as a work around if the basicConstraints
1bc74519 893extension is absent.
5f2f0b55
DSH
894
895=item B<CRL Signing>
896
897The keyUsage extension must be absent or it must have the CRL signing bit
898set.
899
900=item B<CRL Signing CA>
901
902The normal CA tests apply. Except in this case the basicConstraints extension
903must be present.
904
905=back
906
aba3e65f
DSH
907=head1 BUGS
908
aba3e65f
DSH
909Extensions in certificates are not transferred to certificate requests and
910vice versa.
911
912It is possible to produce invalid certificates or requests by specifying the
913wrong private key or using inconsistent options in some cases: these should
914be checked.
915
9868232a 916There should be options to explicitly set such things as start and end
aba3e65f
DSH
917dates rather than an offset from the current time.
918
aba3e65f
DSH
919=head1 SEE ALSO
920
b6b66573
DMSP
921L<openssl(1)>,
922L<openssl-req(1)>,
923L<openssl-ca(1)>,
924L<openssl-genrsa(1)>,
925L<openssl-gendsa(1)>,
926L<openssl-verify(1)>,
1bc74519 927L<x509v3_config(5)>
aba3e65f 928
c3932222
BM
929=head1 HISTORY
930
0e0c6821
DSH
931The hash algorithm used in the B<-subject_hash> and B<-issuer_hash> options
932before OpenSSL 1.0.0 was based on the deprecated MD5 algorithm and the encoding
35a810bb
RL
933of the distinguished name. In OpenSSL 1.0.0 and later it is based on a canonical
934version of the DN using SHA1. This means that any directories using the old
935form must have their links rebuilt using L<openssl-rehash(1)> or similar.
0e0c6821 936
e2f92610
RS
937=head1 COPYRIGHT
938
d7b2124a 939Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved.
e2f92610 940
449040b4 941Licensed under the Apache License 2.0 (the "License"). You may not use
e2f92610
RS
942this file except in compliance with the License. You can obtain a copy
943in the file LICENSE in the source distribution or at
944L<https://www.openssl.org/source/license.html>.
945
946=cut