| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | =pod | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head1 NAME | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | x509 - Certificate display and signing utility | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head1 SYNOPSIS | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | B<openssl> B<x509> | 
					
						
							| 
									
										
										
										
											2016-02-06 00:58:45 +08:00
										 |  |  | [B<-help>] | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | [B<-inform DER|PEM|NET>] | 
					
						
							|  |  |  | [B<-outform DER|PEM|NET>] | 
					
						
							|  |  |  | [B<-keyform DER|PEM>] | 
					
						
							|  |  |  | [B<-CAform DER|PEM>] | 
					
						
							|  |  |  | [B<-CAkeyform DER|PEM>] | 
					
						
							|  |  |  | [B<-in filename>] | 
					
						
							|  |  |  | [B<-out filename>] | 
					
						
							|  |  |  | [B<-serial>] | 
					
						
							|  |  |  | [B<-hash>] | 
					
						
							| 
									
										
										
										
											2003-07-04 04:45:09 +08:00
										 |  |  | [B<-subject_hash>] | 
					
						
							|  |  |  | [B<-issuer_hash>] | 
					
						
							| 
									
										
										
										
											2014-07-03 10:42:40 +08:00
										 |  |  | [B<-ocspid>] | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | [B<-subject>] | 
					
						
							|  |  |  | [B<-issuer>] | 
					
						
							| 
									
										
										
										
											2000-07-30 09:27:59 +08:00
										 |  |  | [B<-nameopt option>] | 
					
						
							| 
									
										
										
										
											2000-06-11 20:18:15 +08:00
										 |  |  | [B<-email>] | 
					
						
							| 
									
										
										
										
											2009-04-03 19:45:19 +08:00
										 |  |  | [B<-ocsp_uri>] | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | [B<-startdate>] | 
					
						
							|  |  |  | [B<-enddate>] | 
					
						
							|  |  |  | [B<-purpose>] | 
					
						
							|  |  |  | [B<-dates>] | 
					
						
							| 
									
										
										
										
											2014-07-03 10:42:40 +08:00
										 |  |  | [B<-checkend num>] | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | [B<-modulus>] | 
					
						
							| 
									
										
										
										
											2012-12-14 00:17:55 +08:00
										 |  |  | [B<-pubkey>] | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | [B<-fingerprint>] | 
					
						
							|  |  |  | [B<-alias>] | 
					
						
							|  |  |  | [B<-noout>] | 
					
						
							|  |  |  | [B<-trustout>] | 
					
						
							|  |  |  | [B<-clrtrust>] | 
					
						
							| 
									
										
										
										
											1999-11-27 09:14:04 +08:00
										 |  |  | [B<-clrreject>] | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | [B<-addtrust arg>] | 
					
						
							| 
									
										
										
										
											1999-11-27 09:14:04 +08:00
										 |  |  | [B<-addreject arg>] | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | [B<-setalias arg>] | 
					
						
							|  |  |  | [B<-days arg>] | 
					
						
							| 
									
										
										
										
											2001-03-09 21:57:14 +08:00
										 |  |  | [B<-set_serial n>] | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | [B<-signkey filename>] | 
					
						
							| 
									
										
										
										
											2014-07-03 10:42:40 +08:00
										 |  |  | [B<-passin arg>] | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | [B<-x509toreq>] | 
					
						
							|  |  |  | [B<-req>] | 
					
						
							|  |  |  | [B<-CA filename>] | 
					
						
							|  |  |  | [B<-CAkey filename>] | 
					
						
							|  |  |  | [B<-CAcreateserial>] | 
					
						
							|  |  |  | [B<-CAserial filename>] | 
					
						
							| 
									
										
										
										
											2013-08-21 20:39:27 +08:00
										 |  |  | [B<-force_pubkey key>] | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | [B<-text>] | 
					
						
							| 
									
										
										
										
											2014-07-03 10:42:40 +08:00
										 |  |  | [B<-certopt option>] | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | [B<-C>] | 
					
						
							| 
									
										
										
										
											2015-08-28 00:28:08 +08:00
										 |  |  | [B<-[digest]>] | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | [B<-clrext>] | 
					
						
							|  |  |  | [B<-extfile filename>] | 
					
						
							|  |  |  | [B<-extensions section>] | 
					
						
							| 
									
										
										
										
											2003-01-31 06:02:27 +08:00
										 |  |  | [B<-engine id>] | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =head1 DESCRIPTION | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The B<x509> command is a multi purpose certificate utility. It can be | 
					
						
							|  |  |  | used to display certificate information, convert certificates to | 
					
						
							|  |  |  | various forms, sign certificate requests like a "mini CA" or edit | 
					
						
							|  |  |  | certificate trust settings. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Since there are a large number of options they will split up into | 
					
						
							|  |  |  | various sections. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-11-18 16:15:45 +08:00
										 |  |  | =head1 OPTIONS | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-21 08:52:46 +08:00
										 |  |  | =head2 Input, Output, and General Purpose Options | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-06 00:58:45 +08:00
										 |  |  | =item B<-help> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Print out a usage message. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | =item B<-inform DER|PEM|NET> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This specifies the input format normally the command will expect an X509 | 
					
						
							|  |  |  | certificate but this can change if other options such as B<-req> are | 
					
						
							|  |  |  | present. The DER format is the DER encoding of the certificate and PEM | 
					
						
							|  |  |  | is the base64 encoding of the DER encoding with header and footer lines | 
					
						
							|  |  |  | added. The NET option is an obscure Netscape server format that is now | 
					
						
							|  |  |  | obsolete. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-outform DER|PEM|NET> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-20 20:11:46 +08:00
										 |  |  | This specifies the output format, the options have the same meaning as the | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | B<-inform> option. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-in filename> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This specifies the input filename to read a certificate from or standard input | 
					
						
							|  |  |  | if this option is not specified. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-out filename> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This specifies the output filename to write to or standard output by | 
					
						
							|  |  |  | default. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-28 00:28:08 +08:00
										 |  |  | =item B<-[digest]> | 
					
						
							| 
									
										
										
										
											1999-11-27 09:14:04 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | The digest to use. | 
					
						
							| 
									
										
										
										
											2015-08-28 00:28:08 +08:00
										 |  |  | This affects any signing or display option that uses a message | 
					
						
							|  |  |  | digest, such as the B<-fingerprint>, B<-signkey> and B<-CA> options. | 
					
						
							|  |  |  | Any digest supported by the OpenSSL B<dgst> command can be used. | 
					
						
							| 
									
										
										
										
											2016-05-12 22:02:04 +08:00
										 |  |  | If not specified then SHA1 is used with B<-fingerprint> or | 
					
						
							|  |  |  | the default digest for the signing algorithm is used, typically SHA256. | 
					
						
							| 
									
										
										
										
											1999-11-27 09:14:04 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-01-31 06:02:27 +08:00
										 |  |  | =item B<-engine id> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Specifying an engine (by its unique B<id> string) will cause B<x509> | 
					
						
							| 
									
										
										
										
											2003-01-31 06:02:27 +08:00
										 |  |  | to attempt to obtain a functional reference to the specified engine, | 
					
						
							|  |  |  | thus initialising it if needed. The engine will then be set as the default | 
					
						
							|  |  |  | for all available algorithms. | 
					
						
							| 
									
										
										
										
											1999-11-27 09:14:04 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-21 08:52:46 +08:00
										 |  |  | =head2 Display Options | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | Note: the B<-alias> and B<-purpose> options are also display options | 
					
						
							| 
									
										
										
										
											2002-11-14 19:03:30 +08:00
										 |  |  | but are described in the B<TRUST SETTINGS> section. | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-text> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Prints out the certificate in text form. Full details are output including the | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | public key, signature algorithms, issuer and subject names, serial number | 
					
						
							|  |  |  | any extensions present and any trust settings. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-03-15 09:15:54 +08:00
										 |  |  | =item B<-certopt option> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Customise the output format used with B<-text>. The B<option> argument | 
					
						
							|  |  |  | can be a single option or multiple options separated by commas. The | 
					
						
							|  |  |  | B<-certopt> switch may be also be used more than once to set multiple | 
					
						
							|  |  |  | options. See the B<TEXT OPTIONS> section for more information. | 
					
						
							| 
									
										
										
										
											2001-03-15 09:15:54 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | =item B<-noout> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | This option prevents output of the encoded version of the request. | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-12-14 00:17:55 +08:00
										 |  |  | =item B<-pubkey> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Outputs the certificate's SubjectPublicKeyInfo block in PEM format. | 
					
						
							| 
									
										
										
										
											2012-12-14 00:17:55 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | =item B<-modulus> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | This option prints out the value of the modulus of the public key | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | contained in the certificate. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-serial> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Outputs the certificate serial number. | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-07-04 04:45:09 +08:00
										 |  |  | =item B<-subject_hash> | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Outputs the "hash" of the certificate subject name. This is used in OpenSSL to | 
					
						
							| 
									
										
										
										
											1999-11-14 05:28:01 +08:00
										 |  |  | form an index to allow certificates in a directory to be looked up by subject | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | name. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-07-04 04:45:09 +08:00
										 |  |  | =item B<-issuer_hash> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Outputs the "hash" of the certificate issuer name. | 
					
						
							| 
									
										
										
										
											2003-07-04 04:45:09 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-07-03 10:42:40 +08:00
										 |  |  | =item B<-ocspid> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Outputs the OCSP hash values for the subject name and public key. | 
					
						
							| 
									
										
										
										
											2014-07-03 10:42:40 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-07-04 04:45:09 +08:00
										 |  |  | =item B<-hash> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Synonym for "-subject_hash" for backward compatibility reasons. | 
					
						
							| 
									
										
										
										
											2003-07-04 04:45:09 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-13 01:29:34 +08:00
										 |  |  | =item B<-subject_hash_old> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Outputs the "hash" of the certificate subject name using the older algorithm | 
					
						
							| 
									
										
										
										
											2010-01-13 01:29:34 +08:00
										 |  |  | as used by OpenSSL versions before 1.0.0. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-issuer_hash_old> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Outputs the "hash" of the certificate issuer name using the older algorithm | 
					
						
							| 
									
										
										
										
											2010-01-13 01:29:34 +08:00
										 |  |  | as used by OpenSSL versions before 1.0.0. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | =item B<-subject> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Outputs the subject name. | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<-issuer> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Outputs the issuer name. | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-07-30 09:27:59 +08:00
										 |  |  | =item B<-nameopt option> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Option which determines how the subject or issuer names are displayed. The | 
					
						
							| 
									
										
										
										
											2001-03-16 06:45:20 +08:00
										 |  |  | B<option> argument can be a single option or multiple options separated by | 
					
						
							|  |  |  | commas.  Alternatively the B<-nameopt> switch may be used more than once to | 
					
						
							| 
									
										
										
										
											2002-11-18 16:15:45 +08:00
										 |  |  | set multiple options. See the B<NAME OPTIONS> section for more information. | 
					
						
							| 
									
										
										
										
											2000-07-30 09:27:59 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-06-11 20:18:15 +08:00
										 |  |  | =item B<-email> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Outputs the email address(es) if any. | 
					
						
							| 
									
										
										
										
											2000-06-11 20:18:15 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-03 19:45:19 +08:00
										 |  |  | =item B<-ocsp_uri> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Outputs the OCSP responder address(es) if any. | 
					
						
							| 
									
										
										
										
											2009-04-03 19:45:19 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | =item B<-startdate> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Prints out the start date of the certificate, that is the notBefore date. | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<-enddate> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Prints out the expiry date of the certificate, that is the notAfter date. | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<-dates> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Prints out the start and expiry dates of a certificate. | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-07-03 10:42:40 +08:00
										 |  |  | =item B<-checkend arg> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Checks if the certificate expires within the next B<arg> seconds and exits | 
					
						
							| 
									
										
										
										
											2014-07-03 10:42:40 +08:00
										 |  |  | non-zero if yes it will expire or zero if not. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | =item B<-fingerprint> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Prints out the digest of the DER encoded version of the whole certificate | 
					
						
							| 
									
										
										
										
											2001-01-10 22:35:20 +08:00
										 |  |  | (see digest options). | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<-C> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | This outputs the certificate in the form of a C source file. | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-21 08:52:46 +08:00
										 |  |  | =head2 Trust Settings | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | A B<trusted certificate> is an ordinary certificate which has several | 
					
						
							|  |  |  | additional pieces of information attached to it such as the permitted | 
					
						
							|  |  |  | and prohibited uses of the certificate and an "alias". | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Normally when a certificate is being verified at least one certificate | 
					
						
							|  |  |  | must be "trusted". By default a trusted certificate must be stored | 
					
						
							|  |  |  | locally and must be a root CA: any certificate chain ending in this CA | 
					
						
							|  |  |  | is then usable for any purpose. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-11-29 09:09:25 +08:00
										 |  |  | Trust settings currently are only used with a root CA. They allow a finer | 
					
						
							|  |  |  | control over the purposes the root CA can be used for. For example a CA | 
					
						
							|  |  |  | may be trusted for SSL client but not SSL server use. | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | See the description of the B<verify> utility for more information on the | 
					
						
							|  |  |  | meaning of trust settings. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-02-04 07:23:24 +08:00
										 |  |  | Future versions of OpenSSL will recognize trust settings on any | 
					
						
							| 
									
										
										
										
											1999-11-29 09:09:25 +08:00
										 |  |  | certificate: not just root CAs. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-trustout> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | This causes B<x509> to output a B<trusted> certificate. An ordinary | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | or trusted certificate can be input but by default an ordinary | 
					
						
							|  |  |  | certificate is output and any trust settings are discarded. With the | 
					
						
							|  |  |  | B<-trustout> option a trusted certificate is output. A trusted | 
					
						
							|  |  |  | certificate is automatically output if any trust settings are modified. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-setalias arg> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Sets the alias of the certificate. This will allow the certificate | 
					
						
							| 
									
										
										
										
											2000-01-07 09:39:59 +08:00
										 |  |  | to be referred to using a nickname for example "Steve's Certificate". | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<-alias> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Outputs the certificate alias, if any. | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<-clrtrust> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Clears all the permitted or trusted uses of the certificate. | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-11-27 09:14:04 +08:00
										 |  |  | =item B<-clrreject> | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Clears all the prohibited or rejected uses of the certificate. | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<-addtrust arg> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Adds a trusted certificate use. | 
					
						
							| 
									
										
										
										
											2016-01-28 16:01:45 +08:00
										 |  |  | Any object name can be used here but currently only B<clientAuth> (SSL client | 
					
						
							|  |  |  | use), B<serverAuth> (SSL server use), B<emailProtection> (S/MIME email) and | 
					
						
							|  |  |  | B<anyExtendedKeyUsage> are used. | 
					
						
							|  |  |  | As of OpenSSL 1.1.0, the last of these blocks all purposes when rejected or | 
					
						
							|  |  |  | enables all purposes when trusted. | 
					
						
							| 
									
										
										
										
											2000-03-23 10:35:47 +08:00
										 |  |  | Other OpenSSL applications may define additional uses. | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-11-27 09:14:04 +08:00
										 |  |  | =item B<-addreject arg> | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Adds a prohibited use. It accepts the same values as the B<-addtrust> | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | option. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-purpose> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | This option performs tests on the certificate extensions and outputs | 
					
						
							| 
									
										
										
										
											1999-11-30 22:39:58 +08:00
										 |  |  | the results. For a more complete description see the B<CERTIFICATE | 
					
						
							|  |  |  | EXTENSIONS> section. | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-21 08:52:46 +08:00
										 |  |  | =head2 Signing Options | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | The B<x509> utility can be used to sign certificates and requests: it | 
					
						
							|  |  |  | can thus behave like a "mini CA". | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-signkey filename> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | This option causes the input file to be self signed using the supplied | 
					
						
							| 
									
										
										
										
											2016-05-20 20:11:46 +08:00
										 |  |  | private key. | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | If the input file is a certificate it sets the issuer name to the | 
					
						
							|  |  |  | subject name (i.e.  makes it self signed) changes the public key to the | 
					
						
							|  |  |  | supplied value and changes the start and end dates. The start date is | 
					
						
							|  |  |  | set to the current time and the end date is set to a value determined | 
					
						
							|  |  |  | by the B<-days> option. Any certificate extensions are retained unless | 
					
						
							| 
									
										
										
										
											2016-02-05 22:28:05 +08:00
										 |  |  | the B<-clrext> option is supplied; this includes, for example, any existing | 
					
						
							|  |  |  | key identifier extensions. | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | If the input is a certificate request then a self signed certificate | 
					
						
							|  |  |  | is created using the supplied private key using the subject name in | 
					
						
							|  |  |  | the request. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-07-03 10:42:40 +08:00
										 |  |  | =item B<-passin arg> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | The key password source. For more information about the format of B<arg> | 
					
						
							| 
									
										
										
										
											2015-08-18 03:21:33 +08:00
										 |  |  | see the B<PASS PHRASE ARGUMENTS> section in L<openssl(1)>. | 
					
						
							| 
									
										
										
										
											2014-07-03 10:42:40 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | =item B<-clrext> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Delete any extensions from a certificate. This option is used when a | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | certificate is being created from another certificate (for example with | 
					
						
							|  |  |  | the B<-signkey> or the B<-CA> options). Normally all extensions are | 
					
						
							|  |  |  | retained. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-keyform PEM|DER> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Specifies the format (DER or PEM) of the private key file used in the | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | B<-signkey> option. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-days arg> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Specifies the number of days to make a certificate valid for. The default | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | is 30 days. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-x509toreq> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Converts a certificate into a certificate request. The B<-signkey> option | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | is used to pass the required private key. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-req> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | By default a certificate is expected on input. With this option a | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | certificate request is expected instead. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-03-09 21:57:14 +08:00
										 |  |  | =item B<-set_serial n> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Specifies the serial number to use. This option can be used with either | 
					
						
							| 
									
										
										
										
											2001-03-09 21:57:14 +08:00
										 |  |  | the B<-signkey> or B<-CA> options. If used in conjunction with the B<-CA> | 
					
						
							|  |  |  | option the serial number file (as specified by the B<-CAserial> or | 
					
						
							|  |  |  | B<-CAcreateserial> options) is not used. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-26 04:07:28 +08:00
										 |  |  | The serial number can be decimal or hex (if preceded by B<0x>). | 
					
						
							| 
									
										
										
										
											2001-03-09 21:57:14 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | =item B<-CA filename> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Specifies the CA certificate to be used for signing. When this option is | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | present B<x509> behaves like a "mini CA". The input file is signed by this | 
					
						
							|  |  |  | CA using this option: that is its issuer name is set to the subject name | 
					
						
							|  |  |  | of the CA and it is digitally signed using the CAs private key. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This option is normally combined with the B<-req> option. Without the | 
					
						
							|  |  |  | B<-req> option the input is a certificate which must be self signed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-CAkey filename> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Sets the CA private key to sign a certificate with. If this option is | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | not specified then it is assumed that the CA private key is present in | 
					
						
							|  |  |  | the CA certificate file. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-CAserial filename> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Sets the CA serial number file to use. | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | When the B<-CA> option is used to sign a certificate it uses a serial | 
					
						
							|  |  |  | number specified in a file. This file consist of one line containing | 
					
						
							|  |  |  | an even number of hex digits with the serial number to use. After each | 
					
						
							|  |  |  | use the serial number is incremented and written out to the file again. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The default filename consists of the CA certificate file base name with | 
					
						
							| 
									
										
										
										
											2016-05-20 20:11:46 +08:00
										 |  |  | ".srl" appended. For example if the CA certificate file is called | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | "mycacert.pem" it expects to find a serial number file called "mycacert.srl". | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-11-09 05:51:09 +08:00
										 |  |  | =item B<-CAcreateserial> | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | With this option the CA serial number file is created if it does not exist: | 
					
						
							| 
									
										
										
										
											2000-01-21 10:42:14 +08:00
										 |  |  | it will contain the serial number "02" and the certificate being signed will | 
					
						
							| 
									
										
										
										
											2015-04-26 04:07:28 +08:00
										 |  |  | have the 1 as its serial number. If the B<-CA> option is specified | 
					
						
							|  |  |  | and the serial number file does not exist a random number is generated; | 
					
						
							|  |  |  | this is the recommended practice. | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<-extfile filename> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | File containing certificate extensions to use. If not specified then | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | no extensions are added to the certificate. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-extensions section> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | The section to add certificate extensions from. If this option is not | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | specified then the extensions should either be contained in the unnamed | 
					
						
							|  |  |  | (default) section or the default section should contain a variable called | 
					
						
							| 
									
										
										
										
											2006-11-07 20:51:27 +08:00
										 |  |  | "extensions" which contains the section to use. See the | 
					
						
							| 
									
										
										
										
											2015-08-18 03:21:33 +08:00
										 |  |  | L<x509v3_config(5)> manual page for details of the | 
					
						
							| 
									
										
										
										
											2006-11-07 20:51:27 +08:00
										 |  |  | extension section format. | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-08-21 20:39:27 +08:00
										 |  |  | =item B<-force_pubkey key> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | When a certificate is created set its public key to B<key> instead of the | 
					
						
							| 
									
										
										
										
											2013-08-21 20:39:27 +08:00
										 |  |  | key in the certificate or certificate request. This option is useful for | 
					
						
							|  |  |  | creating certificates where the algorithm can't normally sign requests, for | 
					
						
							|  |  |  | example DH. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The format or B<key> can be specified using the B<-keyform> option. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-21 08:52:46 +08:00
										 |  |  | =head2 Name Options | 
					
						
							| 
									
										
										
										
											2000-07-30 09:27:59 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | The B<nameopt> command line switch determines how the subject and issuer | 
					
						
							|  |  |  | names are displayed. If no B<nameopt> switch is present the default "oneline" | 
					
						
							|  |  |  | format is used which is compatible with previous versions of OpenSSL. | 
					
						
							|  |  |  | Each option is described in detail below, all options can be preceded by | 
					
						
							|  |  |  | a B<-> to turn the option off. Only the first four will normally be used. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<compat> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Use the old format. | 
					
						
							| 
									
										
										
										
											2000-07-30 09:27:59 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<RFC2253> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Displays names compatible with RFC2253 equivalent to B<esc_2253>, B<esc_ctrl>, | 
					
						
							| 
									
										
										
										
											2000-07-30 09:27:59 +08:00
										 |  |  | B<esc_msb>, B<utf8>, B<dump_nostr>, B<dump_unknown>, B<dump_der>, | 
					
						
							|  |  |  | B<sep_comma_plus>, B<dn_rev> and B<sname>. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<oneline> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | A oneline format which is more readable than RFC2253. It is equivalent to | 
					
						
							| 
									
										
										
										
											2000-07-30 09:27:59 +08:00
										 |  |  | specifying the  B<esc_2253>, B<esc_ctrl>, B<esc_msb>, B<utf8>, B<dump_nostr>, | 
					
						
							| 
									
										
										
										
											2007-02-03 18:28:08 +08:00
										 |  |  | B<dump_der>, B<use_quote>, B<sep_comma_plus_space>, B<space_eq> and B<sname> | 
					
						
							| 
									
										
										
										
											2016-02-06 04:23:54 +08:00
										 |  |  | options.  This is the I<default> of no name options are given explicitly. | 
					
						
							| 
									
										
										
										
											2000-07-30 09:27:59 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<multiline> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | A multiline format. It is equivalent B<esc_ctrl>, B<esc_msb>, B<sep_multiline>, | 
					
						
							| 
									
										
										
										
											2007-02-03 18:28:08 +08:00
										 |  |  | B<space_eq>, B<lname> and B<align>. | 
					
						
							| 
									
										
										
										
											2000-07-30 09:27:59 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<esc_2253> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Escape the "special" characters required by RFC2253 in a field. That is | 
					
						
							| 
									
										
										
										
											2001-09-07 14:13:40 +08:00
										 |  |  | B<,+"E<lt>E<gt>;>. Additionally B<#> is escaped at the beginning of a string | 
					
						
							| 
									
										
										
										
											2000-07-30 09:27:59 +08:00
										 |  |  | and a space character at the beginning or end of a string. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-18 23:39:33 +08:00
										 |  |  | =item B<esc_2254> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Escape the "special" characters required by RFC2254 in a field. That is | 
					
						
							| 
									
										
										
										
											2016-05-18 23:39:33 +08:00
										 |  |  | the B<NUL> character as well as and B<()*>. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-07-30 09:27:59 +08:00
										 |  |  | =item B<esc_ctrl> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Escape control characters. That is those with ASCII values less than | 
					
						
							| 
									
										
										
										
											2000-07-30 09:27:59 +08:00
										 |  |  | 0x20 (space) and the delete (0x7f) character. They are escaped using the | 
					
						
							|  |  |  | RFC2253 \XX notation (where XX are two hex digits representing the | 
					
						
							|  |  |  | character value). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<esc_msb> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Escape characters with the MSB set, that is with ASCII values larger than | 
					
						
							| 
									
										
										
										
											2000-07-30 09:27:59 +08:00
										 |  |  | 127. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<use_quote> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Escapes some characters by surrounding the whole string with B<"> characters, | 
					
						
							| 
									
										
										
										
											2000-07-30 09:27:59 +08:00
										 |  |  | without the option all escaping is done with the B<\> character. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<utf8> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Convert all strings to UTF8 format first. This is required by RFC2253. If | 
					
						
							| 
									
										
										
										
											2000-07-30 09:27:59 +08:00
										 |  |  | you are lucky enough to have a UTF8 compatible terminal then the use | 
					
						
							|  |  |  | of this option (and B<not> setting B<esc_msb>) may result in the correct | 
					
						
							|  |  |  | display of multibyte (international) characters. Is this option is not | 
					
						
							|  |  |  | present then multibyte characters larger than 0xff will be represented | 
					
						
							|  |  |  | using the format \UXXXX for 16 bits and \WXXXXXXXX for 32 bits. | 
					
						
							|  |  |  | Also if this option is off any UTF8Strings will be converted to their | 
					
						
							|  |  |  | character form first. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-07-03 10:42:40 +08:00
										 |  |  | =item B<ignore_type> | 
					
						
							| 
									
										
										
										
											2000-07-30 09:27:59 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | This option does not attempt to interpret multibyte characters in any | 
					
						
							| 
									
										
										
										
											2000-07-30 09:27:59 +08:00
										 |  |  | way. That is their content octets are merely dumped as though one octet | 
					
						
							|  |  |  | represents each character. This is useful for diagnostic purposes but | 
					
						
							|  |  |  | will result in rather odd looking output. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<show_type> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Show the type of the ASN1 character string. The type precedes the | 
					
						
							| 
									
										
										
										
											2000-07-30 09:27:59 +08:00
										 |  |  | field contents. For example "BMPSTRING: Hello World". | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<dump_der> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | When this option is set any fields that need to be hexdumped will | 
					
						
							| 
									
										
										
										
											2000-07-30 09:27:59 +08:00
										 |  |  | be dumped using the DER encoding of the field. Otherwise just the | 
					
						
							|  |  |  | content octets will be displayed. Both options use the RFC2253 | 
					
						
							|  |  |  | B<#XXXX...> format. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<dump_nostr> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Dump non character string types (for example OCTET STRING) if this | 
					
						
							| 
									
										
										
										
											2000-07-30 09:27:59 +08:00
										 |  |  | option is not set then non character string types will be displayed | 
					
						
							| 
									
										
										
										
											2001-09-07 14:13:40 +08:00
										 |  |  | as though each content octet represents a single character. | 
					
						
							| 
									
										
										
										
											2000-07-30 09:27:59 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<dump_all> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Dump all fields. This option when used with B<dump_der> allows the | 
					
						
							| 
									
										
										
										
											2000-07-30 09:27:59 +08:00
										 |  |  | DER encoding of the structure to be unambiguously determined. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<dump_unknown> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Dump any field whose OID is not recognised by OpenSSL. | 
					
						
							| 
									
										
										
										
											2000-07-30 09:27:59 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<sep_comma_plus>, B<sep_comma_plus_space>, B<sep_semi_plus_space>, | 
					
						
							|  |  |  | B<sep_multiline> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | These options determine the field separators. The first character is | 
					
						
							| 
									
										
										
										
											2000-07-30 09:27:59 +08:00
										 |  |  | between RDNs and the second between multiple AVAs (multiple AVAs are | 
					
						
							|  |  |  | very rare and their use is discouraged). The options ending in | 
					
						
							|  |  |  | "space" additionally place a space after the separator to make it | 
					
						
							|  |  |  | more readable. The B<sep_multiline> uses a linefeed character for | 
					
						
							|  |  |  | the RDN separator and a spaced B<+> for the AVA separator. It also | 
					
						
							| 
									
										
										
										
											2015-09-11 23:13:52 +08:00
										 |  |  | indents the fields by four characters. If no field separator is specified | 
					
						
							|  |  |  | then B<sep_comma_plus_space> is used by default. | 
					
						
							| 
									
										
										
										
											2000-07-30 09:27:59 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<dn_rev> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Reverse the fields of the DN. This is required by RFC2253. As a side | 
					
						
							| 
									
										
										
										
											2000-08-25 07:24:18 +08:00
										 |  |  | effect this also reverses the order of multiple AVAs but this is | 
					
						
							| 
									
										
										
										
											2000-07-30 09:27:59 +08:00
										 |  |  | permissible. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<nofname>, B<sname>, B<lname>, B<oid> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | These options alter how the field name is displayed. B<nofname> does | 
					
						
							| 
									
										
										
										
											2000-07-30 09:27:59 +08:00
										 |  |  | not display the field at all. B<sname> uses the "short name" form | 
					
						
							|  |  |  | (CN for commonName for example). B<lname> uses the long form. | 
					
						
							|  |  |  | B<oid> represents the OID in numerical form and is useful for | 
					
						
							|  |  |  | diagnostic purpose. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-03-16 06:45:20 +08:00
										 |  |  | =item B<align> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Align field values for a more readable output. Only usable with | 
					
						
							| 
									
										
										
										
											2001-03-16 06:45:20 +08:00
										 |  |  | B<sep_multiline>. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-02-03 18:28:08 +08:00
										 |  |  | =item B<space_eq> | 
					
						
							| 
									
										
										
										
											2000-07-30 09:27:59 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Places spaces round the B<=> character which follows the field | 
					
						
							| 
									
										
										
										
											2000-07-30 09:27:59 +08:00
										 |  |  | name. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-21 08:52:46 +08:00
										 |  |  | =head2 Text Options | 
					
						
							| 
									
										
										
										
											2001-03-15 09:15:54 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | As well as customising the name output format, it is also possible to | 
					
						
							|  |  |  | customise the actual fields printed using the B<certopt> options when | 
					
						
							|  |  |  | the B<text> option is present. The default behaviour is to print all fields. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-05-17 01:45:37 +08:00
										 |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-03-15 09:15:54 +08:00
										 |  |  | =item B<compatible> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Use the old format. This is equivalent to specifying no output options at all. | 
					
						
							| 
									
										
										
										
											2001-03-15 09:15:54 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<no_header> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Don't print header information: that is the lines saying "Certificate" | 
					
						
							|  |  |  | and "Data". | 
					
						
							| 
									
										
										
										
											2001-03-15 09:15:54 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<no_version> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Don't print out the version number. | 
					
						
							| 
									
										
										
										
											2001-03-15 09:15:54 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<no_serial> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Don't print out the serial number. | 
					
						
							| 
									
										
										
										
											2001-03-15 09:15:54 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<no_signame> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Don't print out the signature algorithm used. | 
					
						
							| 
									
										
										
										
											2001-03-15 09:15:54 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<no_validity> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Don't print the validity, that is the B<notBefore> and B<notAfter> fields. | 
					
						
							| 
									
										
										
										
											2001-03-15 09:15:54 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<no_subject> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Don't print out the subject name. | 
					
						
							| 
									
										
										
										
											2001-03-15 09:15:54 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<no_issuer> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Don't print out the issuer name. | 
					
						
							| 
									
										
										
										
											2001-03-15 09:15:54 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<no_pubkey> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Don't print out the public key. | 
					
						
							| 
									
										
										
										
											2001-03-15 09:15:54 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<no_sigdump> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Don't give a hexadecimal dump of the certificate signature. | 
					
						
							| 
									
										
										
										
											2001-03-15 09:15:54 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<no_aux> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Don't print out certificate trust information. | 
					
						
							| 
									
										
										
										
											2001-03-15 09:15:54 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<no_extensions> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Don't print out any X509V3 extensions. | 
					
						
							| 
									
										
										
										
											2001-03-15 09:15:54 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<ext_default> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Retain default extension behaviour: attempt to print out unsupported | 
					
						
							|  |  |  | certificate extensions. | 
					
						
							| 
									
										
										
										
											2001-03-15 09:15:54 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<ext_error> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Print an error message for unsupported certificate extensions. | 
					
						
							| 
									
										
										
										
											2001-03-15 09:15:54 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<ext_parse> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ASN1 parse unsupported extensions. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<ext_dump> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Hex dump unsupported extensions. | 
					
						
							| 
									
										
										
										
											2001-03-15 09:15:54 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-03-16 06:45:20 +08:00
										 |  |  | =item B<ca_default> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | The value used by the B<ca> utility, equivalent to B<no_issuer>, B<no_pubkey>, | 
					
						
							| 
									
										
										
										
											2016-06-04 04:49:01 +08:00
										 |  |  | B<no_header>, and B<no_version>. | 
					
						
							| 
									
										
										
										
											2001-03-16 06:45:20 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-03-15 09:15:54 +08:00
										 |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | =head1 EXAMPLES | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Note: in these examples the '\' means the example should be all on one | 
					
						
							|  |  |  | line. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Display the contents of a certificate: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-01-24 10:24:37 +08:00
										 |  |  |  openssl x509 -in cert.pem -noout -text | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-11-27 09:14:04 +08:00
										 |  |  | Display the certificate serial number: | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-01-24 10:24:37 +08:00
										 |  |  |  openssl x509 -in cert.pem -noout -serial | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-07-30 09:27:59 +08:00
										 |  |  | Display the certificate subject name: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  openssl x509 -in cert.pem -noout -subject | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Display the certificate subject name in RFC2253 form: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  openssl x509 -in cert.pem -noout -subject -nameopt RFC2253 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Display the certificate subject name in oneline form on a terminal | 
					
						
							|  |  |  | supporting UTF8: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-02-03 18:28:08 +08:00
										 |  |  |  openssl x509 -in cert.pem -noout -subject -nameopt oneline,-esc_msb | 
					
						
							| 
									
										
										
										
											2000-07-30 09:27:59 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-11-27 09:14:04 +08:00
										 |  |  | Display the certificate MD5 fingerprint: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-01-24 10:24:37 +08:00
										 |  |  |  openssl x509 -in cert.pem -noout -fingerprint | 
					
						
							| 
									
										
										
										
											1999-11-27 09:14:04 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | Display the certificate SHA1 fingerprint: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-01-24 10:24:37 +08:00
										 |  |  |  openssl x509 -sha1 -in cert.pem -noout -fingerprint | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | Convert a certificate from PEM to DER format: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-01-24 10:24:37 +08:00
										 |  |  |  openssl x509 -in cert.pem -inform PEM -out cert.der -outform DER | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | Convert a certificate to a certificate request: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-01-24 10:24:37 +08:00
										 |  |  |  openssl x509 -x509toreq -in cert.pem -out req.pem -signkey key.pem | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | Convert a certificate request into a self signed certificate using | 
					
						
							|  |  |  | extensions for a CA: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-08-25 07:24:18 +08:00
										 |  |  |  openssl x509 -req -in careq.pem -extfile openssl.cnf -extensions v3_ca \ | 
					
						
							| 
									
										
										
										
											2016-05-20 20:11:46 +08:00
										 |  |  |         -signkey key.pem -out cacert.pem | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-01-07 09:39:59 +08:00
										 |  |  | Sign a certificate request using the CA certificate above and add user | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | certificate extensions: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-08-25 07:24:18 +08:00
										 |  |  |  openssl x509 -req -in req.pem -extfile openssl.cnf -extensions v3_usr \ | 
					
						
							| 
									
										
										
										
											2016-05-20 20:11:46 +08:00
										 |  |  |         -CA cacert.pem -CAkey key.pem -CAcreateserial | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Set a certificate to be trusted for SSL client use and change set its alias to | 
					
						
							|  |  |  | "Steve's Class 1 CA" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-01-14 21:56:38 +08:00
										 |  |  |  openssl x509 -in cert.pem -addtrust clientAuth \ | 
					
						
							| 
									
										
										
										
											2016-05-20 20:11:46 +08:00
										 |  |  |         -setalias "Steve's Class 1 CA" -out trust.pem | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-11-14 05:58:39 +08:00
										 |  |  | =head1 NOTES | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The PEM format uses the header and footer lines: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-11-10 02:05:33 +08:00
										 |  |  |  -----BEGIN CERTIFICATE----- | 
					
						
							|  |  |  |  -----END CERTIFICATE----- | 
					
						
							| 
									
										
										
										
											1999-11-14 05:58:39 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | it will also handle files containing: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-11-10 02:05:33 +08:00
										 |  |  |  -----BEGIN X509 CERTIFICATE----- | 
					
						
							|  |  |  |  -----END X509 CERTIFICATE----- | 
					
						
							| 
									
										
										
										
											1999-11-14 05:58:39 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-11-27 09:14:04 +08:00
										 |  |  | Trusted certificates have the lines | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-11-10 02:05:33 +08:00
										 |  |  |  -----BEGIN TRUSTED CERTIFICATE----- | 
					
						
							|  |  |  |  -----END TRUSTED CERTIFICATE----- | 
					
						
							| 
									
										
										
										
											1999-11-27 09:14:04 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-07-30 09:27:59 +08:00
										 |  |  | The conversion to UTF8 format used with the name options assumes that | 
					
						
							|  |  |  | T61Strings use the ISO8859-1 character set. This is wrong but Netscape | 
					
						
							|  |  |  | and MSIE do this as do many certificates. So although this is incorrect | 
					
						
							|  |  |  | it is more likely to display the majority of certificates correctly. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-11-27 09:14:04 +08:00
										 |  |  | The B<-fingerprint> option takes the digest of the DER encoded certificate. | 
					
						
							|  |  |  | This is commonly called a "fingerprint". Because of the nature of message | 
					
						
							|  |  |  | digests the fingerprint of a certificate is unique to that certificate and | 
					
						
							|  |  |  | two certificates with the same fingerprint can be considered to be the same. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The Netscape fingerprint uses MD5 whereas MSIE uses SHA1. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-06-11 20:18:15 +08:00
										 |  |  | The B<-email> option searches the subject name and the subject alternative | 
					
						
							|  |  |  | name extension. Only unique email addresses will be printed out: it will | 
					
						
							|  |  |  | not print the same address more than once. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-11-30 22:39:58 +08:00
										 |  |  | =head1 CERTIFICATE EXTENSIONS | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The B<-purpose> option checks the certificate extensions and determines | 
					
						
							|  |  |  | what the certificate can be used for. The actual checks done are rather | 
					
						
							|  |  |  | complex and include various hacks and workarounds to handle broken | 
					
						
							|  |  |  | certificates and software. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The same code is used when verifying untrusted certificates in chains | 
					
						
							|  |  |  | so this section is useful if a chain is rejected by the verify code. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The basicConstraints extension CA flag is used to determine whether the | 
					
						
							|  |  |  | certificate can be used as a CA. If the CA flag is true then it is a CA, | 
					
						
							|  |  |  | if the CA flag is false then it is not a CA. B<All> CAs should have the | 
					
						
							|  |  |  | CA flag set to true. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If the basicConstraints extension is absent then the certificate is | 
					
						
							|  |  |  | considered to be a "possible CA" other extensions are checked according | 
					
						
							|  |  |  | to the intended use of the certificate. A warning is given in this case | 
					
						
							|  |  |  | because the certificate should really not be regarded as a CA: however | 
					
						
							|  |  |  | it is allowed to be a CA to work around some broken software. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If the certificate is a V1 certificate (and thus has no extensions) and | 
					
						
							|  |  |  | it is self signed it is also assumed to be a CA but a warning is again | 
					
						
							|  |  |  | given: this is to work around the problem of Verisign roots which are V1 | 
					
						
							|  |  |  | self signed certificates. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If the keyUsage extension is present then additional restraints are | 
					
						
							|  |  |  | made on the uses of the certificate. A CA certificate B<must> have the | 
					
						
							|  |  |  | keyCertSign bit set if the keyUsage extension is present. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The extended key usage extension places additional restrictions on the | 
					
						
							|  |  |  | certificate uses. If this extension is present (whether critical or not) | 
					
						
							|  |  |  | the key can only be used for the purposes specified. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | A complete description of each test is given below. The comments about | 
					
						
							|  |  |  | basicConstraints and keyUsage and V1 certificates above apply to B<all> | 
					
						
							|  |  |  | CA certificates. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<SSL Client> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The extended key usage extension must be absent or include the "web client | 
					
						
							|  |  |  | authentication" OID.  keyUsage must be absent or it must have the | 
					
						
							|  |  |  | digitalSignature bit set. Netscape certificate type must be absent or it must | 
					
						
							|  |  |  | have the SSL client bit set. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<SSL Client CA> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The extended key usage extension must be absent or include the "web client | 
					
						
							|  |  |  | authentication" OID. Netscape certificate type must be absent or it must have | 
					
						
							|  |  |  | the SSL CA bit set: this is used as a work around if the basicConstraints | 
					
						
							|  |  |  | extension is absent. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<SSL Server> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The extended key usage extension must be absent or include the "web server | 
					
						
							|  |  |  | authentication" and/or one of the SGC OIDs.  keyUsage must be absent or it | 
					
						
							|  |  |  | must have the digitalSignature, the keyEncipherment set or both bits set. | 
					
						
							|  |  |  | Netscape certificate type must be absent or have the SSL server bit set. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<SSL Server CA> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The extended key usage extension must be absent or include the "web server | 
					
						
							|  |  |  | authentication" and/or one of the SGC OIDs.  Netscape certificate type must | 
					
						
							|  |  |  | be absent or the SSL CA bit must be set: this is used as a work around if the | 
					
						
							|  |  |  | basicConstraints extension is absent. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<Netscape SSL Server> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | For Netscape SSL clients to connect to an SSL server it must have the | 
					
						
							|  |  |  | keyEncipherment bit set if the keyUsage extension is present. This isn't | 
					
						
							|  |  |  | always valid because some cipher suites use the key for digital signing. | 
					
						
							|  |  |  | Otherwise it is the same as a normal SSL server. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<Common S/MIME Client Tests> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The extended key usage extension must be absent or include the "email | 
					
						
							|  |  |  | protection" OID. Netscape certificate type must be absent or should have the | 
					
						
							| 
									
										
										
										
											2016-06-08 05:03:15 +08:00
										 |  |  | S/MIME bit set. If the S/MIME bit is not set in Netscape certificate type | 
					
						
							| 
									
										
										
										
											1999-11-30 22:39:58 +08:00
										 |  |  | then the SSL client bit is tolerated as an alternative but a warning is shown: | 
					
						
							|  |  |  | this is because some Verisign certificates don't set the S/MIME bit. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<S/MIME Signing> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | In addition to the common S/MIME client tests the digitalSignature bit must | 
					
						
							|  |  |  | be set if the keyUsage extension is present. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<S/MIME Encryption> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | In addition to the common S/MIME tests the keyEncipherment bit must be set | 
					
						
							|  |  |  | if the keyUsage extension is present. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<S/MIME CA> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The extended key usage extension must be absent or include the "email | 
					
						
							|  |  |  | protection" OID. Netscape certificate type must be absent or must have the | 
					
						
							|  |  |  | S/MIME CA bit set: this is used as a work around if the basicConstraints | 
					
						
							| 
									
										
										
										
											2016-05-20 20:11:46 +08:00
										 |  |  | extension is absent. | 
					
						
							| 
									
										
										
										
											1999-11-30 22:39:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<CRL Signing> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The keyUsage extension must be absent or it must have the CRL signing bit | 
					
						
							|  |  |  | set. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<CRL Signing CA> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The normal CA tests apply. Except in this case the basicConstraints extension | 
					
						
							|  |  |  | must be present. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | =head1 BUGS | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Extensions in certificates are not transferred to certificate requests and | 
					
						
							|  |  |  | vice versa. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | It is possible to produce invalid certificates or requests by specifying the | 
					
						
							|  |  |  | wrong private key or using inconsistent options in some cases: these should | 
					
						
							|  |  |  | be checked. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-11-27 09:14:04 +08:00
										 |  |  | There should be options to explicitly set such things as start and end | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | dates rather than an offset from the current time. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head1 SEE ALSO | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-18 03:21:33 +08:00
										 |  |  | L<req(1)>, L<ca(1)>, L<genrsa(1)>, | 
					
						
							|  |  |  | L<gendsa(1)>, L<verify(1)>, | 
					
						
							| 
									
										
										
										
											2016-05-20 20:11:46 +08:00
										 |  |  | L<x509v3_config(5)> | 
					
						
							| 
									
										
										
										
											1999-11-10 10:52:17 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-04-04 07:53:48 +08:00
										 |  |  | =head1 HISTORY | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-13 01:29:34 +08:00
										 |  |  | The hash algorithm used in the B<-subject_hash> and B<-issuer_hash> options | 
					
						
							|  |  |  | before OpenSSL 1.0.0 was based on the deprecated MD5 algorithm and the encoding | 
					
						
							|  |  |  | of the distinguished name. In OpenSSL 1.0.0 and later it is based on a | 
					
						
							|  |  |  | canonical version of the DN using SHA1. This means that any directories using | 
					
						
							| 
									
										
										
										
											2016-05-20 20:11:46 +08:00
										 |  |  | the old form must have their links rebuilt using B<c_rehash> or similar. | 
					
						
							| 
									
										
										
										
											2010-01-13 01:29:34 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-18 23:44:05 +08:00
										 |  |  | =head1 COPYRIGHT | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-30 05:38:30 +08:00
										 |  |  | Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved. | 
					
						
							| 
									
										
										
										
											2016-05-18 23:44:05 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | Licensed under the OpenSSL license (the "License").  You may not use | 
					
						
							|  |  |  | this file except in compliance with the License.  You can obtain a copy | 
					
						
							|  |  |  | in the file LICENSE in the source distribution or at | 
					
						
							|  |  |  | L<https://www.openssl.org/source/license.html>. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =cut |