| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | =pod | 
					
						
							|  |  |  | {- OpenSSL::safe::output_do_not_edit_headers(); -} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head1 NAME | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-21 17:54:46 +08:00
										 |  |  | openssl-cmp - Certificate Management Protocol (CMP, RFC 4210) application | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =head1 SYNOPSIS | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | B<openssl> B<cmp> | 
					
						
							|  |  |  | [B<-help>] | 
					
						
							|  |  |  | [B<-config> I<filename>] | 
					
						
							|  |  |  | [B<-section> I<names>] | 
					
						
							| 
									
										
										
										
											2020-09-21 17:54:46 +08:00
										 |  |  | [B<-verbosity> I<level>] | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-21 17:54:46 +08:00
										 |  |  | Generic message options: | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-09 20:32:43 +08:00
										 |  |  | [B<-cmd> I<ir|cr|kur|p10cr|rr|genm>] | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | [B<-infotype> I<name>] | 
					
						
							|  |  |  | [B<-geninfo> I<OID:int:N>] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-21 17:54:46 +08:00
										 |  |  | Certificate enrollment options: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-30 14:25:46 +08:00
										 |  |  | [B<-newkey> I<filename>|I<uri>] | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | [B<-newkeypass> I<arg>] | 
					
						
							|  |  |  | [B<-subject> I<name>] | 
					
						
							|  |  |  | [B<-issuer> I<name>] | 
					
						
							|  |  |  | [B<-days> I<number>] | 
					
						
							|  |  |  | [B<-reqexts> I<name>] | 
					
						
							|  |  |  | [B<-sans> I<spec>] | 
					
						
							|  |  |  | [B<-san_nodefault>] | 
					
						
							|  |  |  | [B<-policies> I<name>] | 
					
						
							|  |  |  | [B<-policy_oids> I<names>] | 
					
						
							|  |  |  | [B<-policy_oids_critical>] | 
					
						
							|  |  |  | [B<-popo> I<number>] | 
					
						
							|  |  |  | [B<-csr> I<filename>] | 
					
						
							| 
									
										
										
										
											2021-01-12 19:16:32 +08:00
										 |  |  | [B<-out_trusted> I<filenames>|I<uris>] | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | [B<-implicit_confirm>] | 
					
						
							|  |  |  | [B<-disable_confirm>] | 
					
						
							|  |  |  | [B<-certout> I<filename>] | 
					
						
							| 
									
										
										
										
											2020-09-04 15:29:01 +08:00
										 |  |  | [B<-chainout> I<filename>] | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-21 17:54:46 +08:00
										 |  |  | Certificate enrollment and revocation options: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-12 19:16:32 +08:00
										 |  |  | [B<-oldcert> I<filename>|I<uri>] | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | [B<-revreason> I<number>] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-21 17:54:46 +08:00
										 |  |  | Message transfer options: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-29 05:10:47 +08:00
										 |  |  | [B<-server> I<[http[s]://][userinfo@]host[:port][/path][?query][#fragment]>] | 
					
						
							|  |  |  | [B<-proxy> I<[http[s]://][userinfo@]host[:port][/path][?query][#fragment]>] | 
					
						
							| 
									
										
										
										
											2020-09-21 17:54:46 +08:00
										 |  |  | [B<-no_proxy> I<addresses>] | 
					
						
							| 
									
										
										
										
											2021-03-09 20:32:43 +08:00
										 |  |  | [B<-recipient> I<name>] | 
					
						
							| 
									
										
										
										
											2021-12-07 14:32:12 +08:00
										 |  |  | [B<-path> I<remote_path>] | 
					
						
							| 
									
										
										
										
											2021-05-05 06:09:43 +08:00
										 |  |  | [B<-keep_alive> I<value>] | 
					
						
							| 
									
										
										
										
											2020-09-21 17:54:46 +08:00
										 |  |  | [B<-msg_timeout> I<seconds>] | 
					
						
							|  |  |  | [B<-total_timeout> I<seconds>] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Server authentication options: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-12 19:16:32 +08:00
										 |  |  | [B<-trusted> I<filenames>|I<uris>] | 
					
						
							| 
									
										
										
										
											2021-03-09 20:32:43 +08:00
										 |  |  | [B<-untrusted> I<filenames>|I<uris>] | 
					
						
							| 
									
										
										
										
											2021-01-12 19:16:32 +08:00
										 |  |  | [B<-srvcert> I<filename>|I<uri>] | 
					
						
							| 
									
										
										
										
											2020-09-21 17:54:46 +08:00
										 |  |  | [B<-expect_sender> I<name>] | 
					
						
							|  |  |  | [B<-ignore_keyusage>] | 
					
						
							|  |  |  | [B<-unprotected_errors>] | 
					
						
							|  |  |  | [B<-extracertsout> I<filename>] | 
					
						
							|  |  |  | [B<-cacertsout> I<filename>] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-09 20:32:43 +08:00
										 |  |  | Client authentication and protection options: | 
					
						
							| 
									
										
										
										
											2020-09-21 17:54:46 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | [B<-ref> I<value>] | 
					
						
							|  |  |  | [B<-secret> I<arg>] | 
					
						
							| 
									
										
										
										
											2021-01-12 19:16:32 +08:00
										 |  |  | [B<-cert> I<filename>|I<uri>] | 
					
						
							|  |  |  | [B<-own_trusted> I<filenames>|I<uris>] | 
					
						
							|  |  |  | [B<-key> I<filename>|I<uri>] | 
					
						
							| 
									
										
										
										
											2020-09-21 17:54:46 +08:00
										 |  |  | [B<-keypass> I<arg>] | 
					
						
							|  |  |  | [B<-digest> I<name>] | 
					
						
							|  |  |  | [B<-mac> I<name>] | 
					
						
							| 
									
										
										
										
											2021-03-09 20:32:43 +08:00
										 |  |  | [B<-extracerts> I<filenames>|I<uris>] | 
					
						
							| 
									
										
										
										
											2020-09-21 17:54:46 +08:00
										 |  |  | [B<-unprotected_requests>] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Credentials format options: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | [B<-certform> I<PEM|DER>] | 
					
						
							|  |  |  | [B<-keyform> I<PEM|DER|P12|ENGINE>] | 
					
						
							|  |  |  | [B<-otherpass> I<arg>] | 
					
						
							| 
									
										
										
										
											2020-09-21 17:54:46 +08:00
										 |  |  | {- $OpenSSL::safe::opt_engine_synopsis -}{- $OpenSSL::safe::opt_provider_synopsis -} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-03 18:19:10 +08:00
										 |  |  | Random state options: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | {- $OpenSSL::safe::opt_r_synopsis -} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-21 17:54:46 +08:00
										 |  |  | TLS connection options: | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | [B<-tls_used>] | 
					
						
							| 
									
										
										
										
											2021-01-12 19:16:32 +08:00
										 |  |  | [B<-tls_cert> I<filename>|I<uri>] | 
					
						
							| 
									
										
										
										
											2020-11-30 14:25:46 +08:00
										 |  |  | [B<-tls_key> I<filename>|I<uri>] | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | [B<-tls_keypass> I<arg>] | 
					
						
							| 
									
										
										
										
											2021-01-12 19:16:32 +08:00
										 |  |  | [B<-tls_extra> I<filenames>|I<uris>] | 
					
						
							|  |  |  | [B<-tls_trusted> I<filenames>|I<uris>] | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | [B<-tls_host> I<name>] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-21 17:54:46 +08:00
										 |  |  | Client-side debugging options: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | [B<-batch>] | 
					
						
							|  |  |  | [B<-repeat> I<number>] | 
					
						
							| 
									
										
										
										
											2021-03-09 20:32:43 +08:00
										 |  |  | [B<-reqin> I<filenames>] | 
					
						
							| 
									
										
										
										
											2020-04-30 00:06:43 +08:00
										 |  |  | [B<-reqin_new_tid>] | 
					
						
							| 
									
										
										
										
											2021-03-09 20:32:43 +08:00
										 |  |  | [B<-reqout> I<filenames>] | 
					
						
							|  |  |  | [B<-rspin> I<filenames>] | 
					
						
							|  |  |  | [B<-rspout> I<filenames>] | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | [B<-use_mock_srv>] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-21 17:54:46 +08:00
										 |  |  | Mock server options: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [B<-port> I<number>] | 
					
						
							|  |  |  | [B<-max_msgs> I<number>] | 
					
						
							|  |  |  | [B<-srv_ref> I<value>] | 
					
						
							|  |  |  | [B<-srv_secret> I<arg>] | 
					
						
							| 
									
										
										
										
											2021-01-12 19:16:32 +08:00
										 |  |  | [B<-srv_cert> I<filename>|I<uri>] | 
					
						
							|  |  |  | [B<-srv_key> I<filename>|I<uri>] | 
					
						
							| 
									
										
										
										
											2020-09-21 17:54:46 +08:00
										 |  |  | [B<-srv_keypass> I<arg>] | 
					
						
							| 
									
										
										
										
											2021-01-12 19:16:32 +08:00
										 |  |  | [B<-srv_trusted> I<filenames>|I<uris>] | 
					
						
							|  |  |  | [B<-srv_untrusted> I<filenames>|I<uris>] | 
					
						
							|  |  |  | [B<-rsp_cert> I<filename>|I<uri>] | 
					
						
							|  |  |  | [B<-rsp_extracerts> I<filenames>|I<uris>] | 
					
						
							|  |  |  | [B<-rsp_capubs> I<filenames>|I<uris>] | 
					
						
							| 
									
										
										
										
											2020-09-21 17:54:46 +08:00
										 |  |  | [B<-poll_count> I<number>] | 
					
						
							|  |  |  | [B<-check_after> I<number>] | 
					
						
							|  |  |  | [B<-grant_implicitconf>] | 
					
						
							|  |  |  | [B<-pkistatus> I<number>] | 
					
						
							|  |  |  | [B<-failure> I<number>] | 
					
						
							|  |  |  | [B<-failurebits> I<number>] | 
					
						
							|  |  |  | [B<-statusstring> I<arg>] | 
					
						
							|  |  |  | [B<-send_error>] | 
					
						
							|  |  |  | [B<-send_unprotected>] | 
					
						
							|  |  |  | [B<-send_unprot_err>] | 
					
						
							|  |  |  | [B<-accept_unprotected>] | 
					
						
							|  |  |  | [B<-accept_unprot_err>] | 
					
						
							|  |  |  | [B<-accept_raverified>] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Certificate verification options, for both CMP and TLS: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-28 18:01:04 +08:00
										 |  |  | {- $OpenSSL::safe::opt_v_synopsis -} | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =head1 DESCRIPTION | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The B<cmp> command is a client implementation for the Certificate | 
					
						
							|  |  |  | Management Protocol (CMP) as defined in RFC4210. | 
					
						
							|  |  |  | It can be used to request certificates from a CA server, | 
					
						
							|  |  |  | update their certificates, | 
					
						
							| 
									
										
										
										
											2020-05-29 19:30:03 +08:00
										 |  |  | request certificates to be revoked, and perform other types of CMP requests. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =head1 OPTIONS | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-help> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Display a summary of all options | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-config> I<filename> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Configuration file to use. | 
					
						
							|  |  |  | An empty string C<""> means none. | 
					
						
							|  |  |  | Default filename is from the environment variable C<OPENSSL_CONF>. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-section> I<names> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Section(s) to use within config file defining CMP options. | 
					
						
							|  |  |  | An empty string C<""> means no specific section. | 
					
						
							|  |  |  | Default is C<cmp>. | 
					
						
							| 
									
										
										
										
											2020-08-28 19:37:04 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | Multiple section names may be given, separated by commas and/or whitespace | 
					
						
							|  |  |  | (where in the latter case the whole argument must be enclosed in "..."). | 
					
						
							|  |  |  | Contents of sections named later may override contents of sections named before. | 
					
						
							|  |  |  | In any case, as usual, the C<[default]> section and finally the unnamed | 
					
						
							|  |  |  | section (as far as present) can provide per-option fallback values. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-21 17:54:46 +08:00
										 |  |  | =item B<-verbosity> I<level> | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-21 17:54:46 +08:00
										 |  |  | Level of verbosity for logging, error output, etc. | 
					
						
							|  |  |  | 0 = EMERG, 1 = ALERT, 2 = CRIT, 3 = ERR, 4 = WARN, 5 = NOTE, | 
					
						
							|  |  |  | 6 = INFO, 7 = DEBUG, 8 = TRACE. | 
					
						
							|  |  |  | Defaults to 6 = INFO. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =back | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =head2 Generic message options | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-cmd> I<ir|cr|kur|p10cr|rr|genm> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | CMP command to execute. | 
					
						
							|  |  |  | Currently implemented commands are: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =over 8 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item  ir E<nbsp>  - Initialization Request | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item  cr E<nbsp>  - Certificate Request | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item  p10cr - PKCS#10 Certification Request (for legacy support) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item  kur E<nbsp>E<nbsp>- Key Update Request | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item  rr E<nbsp>  - Revocation Request | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item  genm  - General Message | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-01 17:23:41 +08:00
										 |  |  | B<ir> requests initialization of an end entity into a PKI hierarchy | 
					
						
							| 
									
										
										
										
											2020-05-29 19:30:03 +08:00
										 |  |  | by issuing a first certificate. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-01 17:23:41 +08:00
										 |  |  | B<cr> requests issuing an additional certificate for an end entity already | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | initialized to the PKI hierarchy. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-29 19:30:03 +08:00
										 |  |  | B<p10cr> requests issuing an additional certificate similarly to B<cr> | 
					
						
							| 
									
										
										
										
											2021-03-01 17:23:41 +08:00
										 |  |  | but using legacy PKCS#10 CSR format. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-21 03:41:15 +08:00
										 |  |  | B<kur> requests a (key) update for an existing certificate. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-21 03:41:15 +08:00
										 |  |  | B<rr> requests revocation of an existing certificate. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | B<genm> requests information using a General Message, where optionally | 
					
						
							|  |  |  | included B<InfoTypeAndValue>s may be used to state which info is of interest. | 
					
						
							|  |  |  | Upon receipt of the General Response, information about all received | 
					
						
							|  |  |  | ITAV B<infoType>s is printed to stdout. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-infotype> I<name> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Set InfoType name to use for requesting specific info in B<genm>, | 
					
						
							|  |  |  | e.g., C<signKeyPairTypes>. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-geninfo> I<OID:int:N> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | generalInfo integer values to place in request PKIHeader with given OID, | 
					
						
							| 
									
										
										
										
											2020-09-09 16:15:45 +08:00
										 |  |  | e.g., C<1.2.3.4:int:56789>. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-21 17:54:46 +08:00
										 |  |  | =head2 Certificate enrollment options | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-30 14:25:46 +08:00
										 |  |  | =item B<-newkey> I<filename>|I<uri> | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-30 14:25:46 +08:00
										 |  |  | The source of the private or public key for the certificate requested | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | in Initialization Request (IR), Certification Request(CR), or | 
					
						
							|  |  |  | Key Update Request (KUR). | 
					
						
							| 
									
										
										
										
											2022-02-18 02:40:29 +08:00
										 |  |  | Defaults to the public key in the PKCS#10 CSR given with the B<-csr> option, | 
					
						
							|  |  |  | the public key of the reference certificate, or the current client key. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<-newkeypass> I<arg> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Pass phrase source for the key given with the B<-newkey> option. | 
					
						
							|  |  |  | If not given here, the password will be prompted for if needed. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-01 00:36:00 +08:00
										 |  |  | For more information about the format of I<arg> see | 
					
						
							| 
									
										
										
										
											2021-01-18 17:09:58 +08:00
										 |  |  | L<openssl-passphrase-options(1)>. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<-subject> I<name> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | X509 Distinguished Name (DN) of subject to use in the requested certificate | 
					
						
							|  |  |  | template. | 
					
						
							| 
									
										
										
										
											2021-03-09 20:32:43 +08:00
										 |  |  | If the NULL-DN (C<"/">) is given then no subject is placed in the template. | 
					
						
							| 
									
										
										
										
											2022-08-02 02:34:19 +08:00
										 |  |  | Default is the subject DN of any PKCS#10 CSR given with the B<-csr> option. | 
					
						
							|  |  |  | For KUR, a further fallback is the subject DN | 
					
						
							|  |  |  | of the reference certificate (see B<-oldcert>) if provided. | 
					
						
							|  |  |  | This fallback is used for IR and CR only if no SANs are set. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-01 17:23:41 +08:00
										 |  |  | If provided and neither B<-cert> nor B<-oldcert> is given, | 
					
						
							|  |  |  | the subject DN is used as fallback sender of outgoing CMP messages. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-02 19:52:23 +08:00
										 |  |  | The argument must be formatted as I</type0=value0/type1=value1/type2=...>. | 
					
						
							| 
									
										
										
										
											2021-03-01 17:23:41 +08:00
										 |  |  | Special characters may be escaped by C<\> (backslash); whitespace is retained. | 
					
						
							| 
									
										
										
										
											2020-09-02 19:52:23 +08:00
										 |  |  | Empty values are permitted, but the corresponding type will not be included. | 
					
						
							|  |  |  | Giving a single C</> will lead to an empty sequence of RDNs (a NULL-DN). | 
					
						
							|  |  |  | Multi-valued RDNs can be formed by placing a C<+> character instead of a C</> | 
					
						
							|  |  |  | between the AttributeValueAssertions (AVAs) that specify the members of the set. | 
					
						
							|  |  |  | Example: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | C</DC=org/DC=OpenSSL/DC=users/UID=123456+CN=John Doe> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | =item B<-issuer> I<name> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | X509 issuer Distinguished Name (DN) of the CA server | 
					
						
							|  |  |  | to place in the requested certificate template in IR/CR/KUR. | 
					
						
							| 
									
										
										
										
											2021-03-09 20:32:43 +08:00
										 |  |  | If the NULL-DN (C<"/">) is given then no issuer is placed in the template. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-01 17:23:41 +08:00
										 |  |  | If provided and neither B<-recipient> nor B<-srvcert> is given, | 
					
						
							|  |  |  | the issuer DN is used as fallback recipient of outgoing CMP messages. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The argument must be formatted as I</type0=value0/type1=value1/type2=...>. | 
					
						
							|  |  |  | For details see the description of the B<-subject> option. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<-days> I<number> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Number of days the new certificate is requested to be valid for, counting from | 
					
						
							|  |  |  | the current time of the host. | 
					
						
							|  |  |  | Also triggers the explicit request that the | 
					
						
							|  |  |  | validity period starts from the current time (as seen by the host). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-reqexts> I<name> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Name of section in OpenSSL config file defining certificate request extensions. | 
					
						
							| 
									
										
										
										
											2021-02-15 03:25:42 +08:00
										 |  |  | If the B<-csr> option is present, these extensions augment the extensions | 
					
						
							|  |  |  | contained the given PKCS#10 CSR, overriding any extensions with same OIDs. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<-sans> I<spec> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | One or more IP addresses, DNS names, or URIs separated by commas or whitespace | 
					
						
							|  |  |  | (where in the latter case the whole argument must be enclosed in "...") | 
					
						
							|  |  |  | to add as Subject Alternative Name(s) (SAN) certificate request extension. | 
					
						
							|  |  |  | If the special element "critical" is given the SANs are flagged as critical. | 
					
						
							|  |  |  | Cannot be used if any Subject Alternative Name extension is set via B<-reqexts>. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-san_nodefault> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | When Subject Alternative Names are not given via B<-sans> | 
					
						
							|  |  |  | nor defined via B<-reqexts>, | 
					
						
							|  |  |  | they are copied by default from the reference certificate (see B<-oldcert>). | 
					
						
							|  |  |  | This can be disabled by giving the B<-san_nodefault> option. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-policies> I<name> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Name of section in OpenSSL config file defining policies to be set | 
					
						
							|  |  |  | as certificate request extension. | 
					
						
							|  |  |  | This option cannot be used together with B<-policy_oids>. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-policy_oids> I<names> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | One or more OID(s), separated by commas and/or whitespace | 
					
						
							|  |  |  | (where in the latter case the whole argument must be enclosed in "...") | 
					
						
							|  |  |  | to add as certificate policies request extension. | 
					
						
							|  |  |  | This option cannot be used together with B<-policies>. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-policy_oids_critical> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Flag the policies given with B<-policy_oids> as critical. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-popo> I<number> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Proof-of-Possession (POPO) method to use for IR/CR/KUR; values: C<-1>..<2> where | 
					
						
							|  |  |  | C<-1> = NONE, C<0> = RAVERIFIED, C<1> = SIGNATURE (default), C<2> = KEYENC. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Note that a signature-based POPO can only be produced if a private key | 
					
						
							|  |  |  | is provided via the B<-newkey> or B<-key> options. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-csr> I<filename> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-12 19:16:32 +08:00
										 |  |  | PKCS#10 CSR in PEM or DER format containing a certificate request. | 
					
						
							| 
									
										
										
										
											2021-01-21 03:41:15 +08:00
										 |  |  | With B<-cmd> I<p10cr> it is used directly in a legacy P10CR message. | 
					
						
							| 
									
										
										
										
											2022-08-02 02:34:19 +08:00
										 |  |  | When used with B<-cmd> I<ir>, I<cr>, or I<kur>, | 
					
						
							|  |  |  | it is transformed into the respective regular CMP request, | 
					
						
							|  |  |  | while its public key is ignored if I<-newkey> is given. | 
					
						
							| 
									
										
										
										
											2021-01-21 03:41:15 +08:00
										 |  |  | It may also be used with B<-cmd> I<rr> to specify the certificate to be revoked | 
					
						
							| 
									
										
										
										
											2021-03-01 17:23:41 +08:00
										 |  |  | via the included subject name and public key. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-12 19:16:32 +08:00
										 |  |  | =item B<-out_trusted> I<filenames>|I<uris> | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-01 17:23:41 +08:00
										 |  |  | Trusted certificate(s) to use for validating the newly enrolled certificate. | 
					
						
							| 
									
										
										
										
											2023-01-28 04:17:50 +08:00
										 |  |  | During this verification, any certificate status checking is disabled. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-12 19:16:32 +08:00
										 |  |  | Multiple sources may be given, separated by commas and/or whitespace | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | (where in the latter case the whole argument must be enclosed in "..."). | 
					
						
							|  |  |  | Each source may contain multiple certificates. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-28 18:01:04 +08:00
										 |  |  | The certificate verification options | 
					
						
							|  |  |  | B<-verify_hostname>, B<-verify_ip>, and B<-verify_email> | 
					
						
							|  |  |  | only affect the certificate verification enabled via this option. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<-implicit_confirm> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Request implicit confirmation of newly enrolled certificates. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-disable_confirm> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Do not send certificate confirmation message for newly enrolled certificate | 
					
						
							|  |  |  | without requesting implicit confirmation | 
					
						
							|  |  |  | to cope with broken servers not supporting implicit confirmation correctly. | 
					
						
							|  |  |  | B<WARNING:> This leads to behavior violating RFC 4210. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-certout> I<filename> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The file where the newly enrolled certificate should be saved. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-04 15:29:01 +08:00
										 |  |  | =item B<-chainout> I<filename> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The file where the chain of the newly enrolled certificate should be saved. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-21 17:54:46 +08:00
										 |  |  | =head2 Certificate enrollment and revocation options | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-09 20:32:43 +08:00
										 |  |  | =item B<-oldcert> I<filename>|I<uri> | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | The certificate to be updated (i.e., renewed or re-keyed) in Key Update Request | 
					
						
							|  |  |  | (KUR) messages or to be revoked in Revocation Request (RR) messages. | 
					
						
							| 
									
										
										
										
											2021-01-21 03:41:15 +08:00
										 |  |  | For KUR the certificate to be updated defaults to B<-cert>, | 
					
						
							|  |  |  | and the resulting certificate is called I<reference certificate>. | 
					
						
							| 
									
										
										
										
											2021-03-01 17:23:41 +08:00
										 |  |  | For RR the certificate to be revoked can also be specified using B<-csr>. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-12 19:16:32 +08:00
										 |  |  | The reference certificate, if any, is also used for | 
					
						
							| 
									
										
										
										
											2020-10-27 19:00:22 +08:00
										 |  |  | deriving default subject DN and Subject Alternative Names and the | 
					
						
							| 
									
										
										
										
											2021-01-21 03:41:15 +08:00
										 |  |  | default issuer entry in the requested certificate template of an IR/CR/KUR. | 
					
						
							| 
									
										
										
										
											2020-05-29 19:30:03 +08:00
										 |  |  | Its subject is used as sender of outgoing messages if B<-cert> is not given. | 
					
						
							| 
									
										
										
										
											2020-05-20 21:10:05 +08:00
										 |  |  | Its issuer is used as default recipient in CMP message headers | 
					
						
							|  |  |  | if neither B<-recipient>, B<-srvcert>, nor B<-issuer> is given. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<-revreason> I<number> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Set CRLReason to be included in revocation request (RR); values: C<0>..C<10> | 
					
						
							|  |  |  | or C<-1> for none (which is the default). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Reason numbers defined in RFC 5280 are: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    CRLReason ::= ENUMERATED { | 
					
						
							|  |  |  |         unspecified             (0), | 
					
						
							|  |  |  |         keyCompromise           (1), | 
					
						
							|  |  |  |         cACompromise            (2), | 
					
						
							|  |  |  |         affiliationChanged      (3), | 
					
						
							|  |  |  |         superseded              (4), | 
					
						
							|  |  |  |         cessationOfOperation    (5), | 
					
						
							|  |  |  |         certificateHold         (6), | 
					
						
							|  |  |  |         -- value 7 is not used | 
					
						
							|  |  |  |         removeFromCRL           (8), | 
					
						
							|  |  |  |         privilegeWithdrawn      (9), | 
					
						
							|  |  |  |         aACompromise           (10) | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head2 Message transfer options | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-29 05:10:47 +08:00
										 |  |  | =item B<-server> I<[http[s]://][userinfo@]host[:port][/path][?query][#fragment]> | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-08 02:07:43 +08:00
										 |  |  | The DNS hostname or IP address and optionally port | 
					
						
							|  |  |  | of the CMP server to connect to using HTTP(S). | 
					
						
							|  |  |  | This excludes I<-port> and I<-use_mock_srv> and is ignored with I<-rspin>. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-01 00:36:00 +08:00
										 |  |  | The scheme C<https> may be given only if the B<-tls_used> option is used. | 
					
						
							|  |  |  | In this case the default port is 443, else 80. | 
					
						
							| 
									
										
										
										
											2021-01-29 05:10:47 +08:00
										 |  |  | The optional userinfo and fragment components are ignored. | 
					
						
							|  |  |  | Any given query component is handled as part of the path component. | 
					
						
							| 
									
										
										
										
											2020-09-04 14:11:41 +08:00
										 |  |  | If a path is included it provides the default value for the B<-path> option. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-01 00:36:00 +08:00
										 |  |  | =item B<-proxy> I<[http[s]://][userinfo@]host[:port][/path][?query][#fragment]> | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-01 00:36:00 +08:00
										 |  |  | The HTTP(S) proxy server to use for reaching the CMP server unless B<-no_proxy> | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | applies, see below. | 
					
						
							| 
									
										
										
										
											2021-05-01 00:36:00 +08:00
										 |  |  | The proxy port defaults to 80 or 443 if the scheme is C<https>; apart from that | 
					
						
							|  |  |  | the optional C<http://> or C<https://> prefix is ignored (note that TLS may be | 
					
						
							|  |  |  | selected by B<-tls_used>), as well as any path, userinfo, and query, and fragment | 
					
						
							| 
									
										
										
										
											2021-01-29 05:10:47 +08:00
										 |  |  | components. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | Defaults to the environment variable C<http_proxy> if set, else C<HTTP_PROXY> | 
					
						
							|  |  |  | in case no TLS is used, otherwise C<https_proxy> if set, else C<HTTPS_PROXY>. | 
					
						
							| 
									
										
										
										
											2021-12-08 02:07:43 +08:00
										 |  |  | This option is ignored if I<-server> is not given. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<-no_proxy> I<addresses> | 
					
						
							| 
									
										
										
										
											2020-09-19 15:22:34 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | List of IP addresses and/or DNS names of servers | 
					
						
							|  |  |  | not to use an HTTP(S) proxy for, separated by commas and/or whitespace | 
					
						
							|  |  |  | (where in the latter case the whole argument must be enclosed in "..."). | 
					
						
							|  |  |  | Default is from the environment variable C<no_proxy> if set, else C<NO_PROXY>. | 
					
						
							| 
									
										
										
										
											2021-12-08 02:07:43 +08:00
										 |  |  | This option is ignored if I<-server> is not given. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-09 20:32:43 +08:00
										 |  |  | =item B<-recipient> I<name> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Distinguished Name (DN) to use in the recipient field of CMP request message | 
					
						
							|  |  |  | headers, i.e., the CMP server (usually the addressed CA). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The recipient field in the header of a CMP message is mandatory. | 
					
						
							|  |  |  | If not given explicitly the recipient is determined in the following order: | 
					
						
							|  |  |  | the subject of the CMP server certificate given with the B<-srvcert> option, | 
					
						
							|  |  |  | the B<-issuer> option, | 
					
						
							|  |  |  | the issuer of the certificate given with the B<-oldcert> option, | 
					
						
							|  |  |  | the issuer of the CMP client certificate (B<-cert> option), | 
					
						
							|  |  |  | as far as any of those is present, else the NULL-DN as last resort. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The argument must be formatted as I</type0=value0/type1=value1/type2=...>. | 
					
						
							|  |  |  | For details see the description of the B<-subject> option. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-07 14:32:12 +08:00
										 |  |  | =item B<-path> I<remote_path> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HTTP path at the CMP server (aka CMP alias) to use for POST requests. | 
					
						
							|  |  |  | Defaults to any path given with B<-server>, else C<"/">. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-05 06:09:43 +08:00
										 |  |  | =item B<-keep_alive> I<value> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If the given value is 0 then HTTP connections are not kept open | 
					
						
							|  |  |  | after receiving a response, which is the default behavior for HTTP 1.0. | 
					
						
							|  |  |  | If the value is 1 or 2 then persistent connections are requested. | 
					
						
							|  |  |  | If the value is 2 then persistent connections are required, | 
					
						
							|  |  |  | i.e., in case the server does not grant them an error occurs. | 
					
						
							|  |  |  | The default value is 1, which means preferring to keep the connection open. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | =item B<-msg_timeout> I<seconds> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-25 19:08:42 +08:00
										 |  |  | Number of seconds a CMP request-response message round trip | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | is allowed to take before a timeout error is returned. | 
					
						
							| 
									
										
										
										
											2022-11-25 19:08:42 +08:00
										 |  |  | A value <= 0 means no limitation (waiting indefinitely). | 
					
						
							| 
									
										
										
										
											2021-05-05 06:09:43 +08:00
										 |  |  | Default is to use the B<-total_timeout> setting. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<-total_timeout> I<seconds> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-25 19:08:42 +08:00
										 |  |  | Maximum total number of seconds a transaction may take, | 
					
						
							|  |  |  | including polling etc. | 
					
						
							|  |  |  | A value <= 0 means no limitation (waiting indefinitely). | 
					
						
							|  |  |  | Default is 0. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head2 Server authentication options | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-12 19:16:32 +08:00
										 |  |  | =item B<-trusted> I<filenames>|I<uris> | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-19 17:56:50 +08:00
										 |  |  | The certificate(s), typically of root CAs, the client shall use as trust anchors | 
					
						
							|  |  |  | when validating signature-based protection of CMP response messages. | 
					
						
							|  |  |  | This option is ignored if the B<-srvcert> option is given as well. | 
					
						
							|  |  |  | It provides more flexibility than B<-srvcert> because the CMP protection | 
					
						
							|  |  |  | certificate of the server is not pinned but may be any certificate | 
					
						
							|  |  |  | from which a chain to one of the given trust anchors can be constructed. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-19 17:56:50 +08:00
										 |  |  | If none of B<-trusted>, B<-srvcert>, and B<-secret> is given, message validation | 
					
						
							|  |  |  | errors will be thrown unless B<-unprotected_errors> permits an exception. | 
					
						
							| 
									
										
										
										
											2020-08-28 19:37:04 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-12 19:16:32 +08:00
										 |  |  | Multiple sources may be given, separated by commas and/or whitespace | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | (where in the latter case the whole argument must be enclosed in "..."). | 
					
						
							|  |  |  | Each source may contain multiple certificates. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-28 18:01:04 +08:00
										 |  |  | The certificate verification options | 
					
						
							|  |  |  | B<-verify_hostname>, B<-verify_ip>, and B<-verify_email> | 
					
						
							|  |  |  | have no effect on the certificate verification enabled via this option. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-09 20:32:43 +08:00
										 |  |  | =item B<-untrusted> I<filenames>|I<uris> | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-28 20:55:38 +08:00
										 |  |  | Non-trusted intermediate CA certificate(s). | 
					
						
							|  |  |  | Any extra certificates given with the B<-cert> option are appended to it. | 
					
						
							|  |  |  | All these certificates may be useful for cert path construction | 
					
						
							| 
									
										
										
										
											2022-12-19 17:56:50 +08:00
										 |  |  | for the own CMP signer certificate (to include in the extraCerts field of | 
					
						
							|  |  |  | request messages) and for the TLS client certificate (if TLS is enabled) | 
					
						
							| 
									
										
										
										
											2020-08-28 20:55:38 +08:00
										 |  |  | as well as for chain building | 
					
						
							| 
									
										
										
										
											2022-12-19 17:56:50 +08:00
										 |  |  | when validating server certificates (checking signature-based | 
					
						
							| 
									
										
										
										
											2021-03-01 17:23:41 +08:00
										 |  |  | CMP message protection) and when validating newly enrolled certificates. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-19 17:56:50 +08:00
										 |  |  | Multiple filenames or URLs may be given, separated by commas and/or whitespace. | 
					
						
							|  |  |  | Each source may contain multiple certificates. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-09 20:32:43 +08:00
										 |  |  | =item B<-srvcert> I<filename>|I<uri> | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-19 15:47:46 +08:00
										 |  |  | The specific CMP server certificate to expect and directly trust (even if it is | 
					
						
							| 
									
										
										
										
											2022-12-19 17:56:50 +08:00
										 |  |  | expired) when verifying signature-based protection of CMP response messages. | 
					
						
							|  |  |  | This pins the accepted server and results in ignoring the B<-trusted> option. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-19 15:47:46 +08:00
										 |  |  | If set, the subject of the certificate is also used | 
					
						
							|  |  |  | as default value for the recipient of CMP requests | 
					
						
							| 
									
										
										
										
											2022-12-19 17:56:50 +08:00
										 |  |  | and as default value for the expected sender of CMP responses. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<-expect_sender> I<name> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-29 19:30:03 +08:00
										 |  |  | Distinguished Name (DN) expected in the sender field of incoming CMP messages. | 
					
						
							| 
									
										
										
										
											2020-05-19 15:47:46 +08:00
										 |  |  | Defaults to the subject DN of the pinned B<-srvcert>, if any. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-19 15:47:46 +08:00
										 |  |  | This can be used to make sure that only a particular entity is accepted as | 
					
						
							|  |  |  | CMP message signer, and attackers are not able to use arbitrary certificates | 
					
						
							|  |  |  | of a trusted PKI hierarchy to fraudulently pose as a CMP server. | 
					
						
							|  |  |  | Note that this option gives slightly more freedom than setting the B<-srvcert>, | 
					
						
							|  |  |  | which pins the server to the holder of a particular certificate, while the | 
					
						
							|  |  |  | expected sender name will continue to match after updates of the server cert. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-01 17:23:41 +08:00
										 |  |  | The argument must be formatted as I</type0=value0/type1=value1/type2=...>. | 
					
						
							|  |  |  | For details see the description of the B<-subject> option. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | =item B<-ignore_keyusage> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-01 17:23:41 +08:00
										 |  |  | Ignore key usage restrictions in CMP signer certificates when validating | 
					
						
							| 
									
										
										
										
											2022-12-19 17:56:50 +08:00
										 |  |  | signature-based protection of incoming CMP messages. | 
					
						
							|  |  |  | By default, C<digitalSignature> must be allowed by CMP signer certificates. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<-unprotected_errors> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Accept missing or invalid protection of negative responses from the server. | 
					
						
							|  |  |  | This applies to the following message types and contents: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item * error messages | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item * negative certificate responses (IP/CP/KUP) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item * negative revocation responses (RP) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item * negative PKIConf messages | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | B<WARNING:> This setting leads to unspecified behavior and it is meant | 
					
						
							|  |  |  | exclusively to allow interoperability with server implementations violating | 
					
						
							|  |  |  | RFC 4210, e.g.: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item * section 5.1.3.1 allows exceptions from protecting only for special | 
					
						
							|  |  |  | cases: | 
					
						
							|  |  |  | "There MAY be cases in which the PKIProtection BIT STRING is deliberately not | 
					
						
							|  |  |  | used to protect a message [...] because other protection, external to PKIX, will | 
					
						
							|  |  |  | be applied instead." | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item * section 5.3.21 is clear on ErrMsgContent: "The CA MUST always sign it | 
					
						
							|  |  |  | with a signature key." | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item * appendix D.4 shows PKIConf message having protection | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-extracertsout> I<filename> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-08 21:30:33 +08:00
										 |  |  | The file where to save all certificates contained in the extraCerts field | 
					
						
							|  |  |  | of the last received response message (except for pollRep and PKIConf). | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<-cacertsout> I<filename> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-08 21:30:33 +08:00
										 |  |  | The file where to save any CA certificates contained in the caPubs field of | 
					
						
							|  |  |  | the last received certificate response (i.e., IP, CP, or KUP) message. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head2 Client authentication options | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-ref> I<value> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Reference number/string/value to use as fallback senderKID; this is required | 
					
						
							|  |  |  | if no sender name can be determined from the B<-cert> or <-subject> options and | 
					
						
							|  |  |  | is typically used when authenticating with pre-shared key (password-based MAC). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-secret> I<arg> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-28 19:28:24 +08:00
										 |  |  | Prefer PBM-based message protection with given source of a secret value. | 
					
						
							|  |  |  | The secret is used for creating PBM-based protection of outgoing messages | 
					
						
							| 
									
										
										
										
											2021-03-01 17:23:41 +08:00
										 |  |  | and (as far as needed) for validating PBM-based protection of incoming messages. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | PBM stands for Password-Based Message Authentication Code. | 
					
						
							| 
									
										
										
										
											2020-08-28 19:28:24 +08:00
										 |  |  | This takes precedence over the B<-cert> and B<-key> options. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-01 00:36:00 +08:00
										 |  |  | For more information about the format of I<arg> see | 
					
						
							| 
									
										
										
										
											2021-01-18 17:09:58 +08:00
										 |  |  | L<openssl-passphrase-options(1)>. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-09 20:32:43 +08:00
										 |  |  | =item B<-cert> I<filename>|I<uri> | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-04 21:24:14 +08:00
										 |  |  | The client's current CMP signer certificate. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | Requires the corresponding key to be given with B<-key>. | 
					
						
							| 
									
										
										
										
											2020-05-29 19:30:03 +08:00
										 |  |  | The subject of this certificate will be used as sender of outgoing CMP messages, | 
					
						
							|  |  |  | while the subject of B<-oldcert> or B<-subjectName> may provide fallback values. | 
					
						
							| 
									
										
										
										
											2020-10-27 19:00:22 +08:00
										 |  |  | The issuer of this certificate is used as one of the recipient fallback values | 
					
						
							|  |  |  | and as fallback issuer entry in the certificate template of IR/CR/KUR. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | When using signature-based message protection, this "protection certificate" | 
					
						
							| 
									
										
										
										
											2020-08-28 19:28:24 +08:00
										 |  |  | will be included first in the extraCerts field of outgoing messages | 
					
						
							|  |  |  | and the signature is done with the corresponding key. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | In Initialization Request (IR) messages this can be used for authenticating | 
					
						
							|  |  |  | using an external entity certificate as defined in appendix E.7 of RFC 4210. | 
					
						
							|  |  |  | For Key Update Request (KUR) messages this is also used as | 
					
						
							|  |  |  | the certificate to be updated if the B<-oldcert> option is not given. | 
					
						
							| 
									
										
										
										
											2020-08-28 19:28:24 +08:00
										 |  |  | If the file includes further certs, they are appended to the untrusted certs | 
					
						
							|  |  |  | because they typically constitute the chain of the client certificate, which | 
					
						
							|  |  |  | is included in the extraCerts field in signature-protected request messages. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-12 19:16:32 +08:00
										 |  |  | =item B<-own_trusted> I<filenames>|I<uris> | 
					
						
							| 
									
										
										
										
											2020-09-04 21:24:14 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | If this list of certificates is provided then the chain built for | 
					
						
							| 
									
										
										
										
											2020-09-28 18:01:04 +08:00
										 |  |  | the client-side CMP signer certificate given with the B<-cert> option | 
					
						
							|  |  |  | is verified using the given certificates as trust anchors. | 
					
						
							| 
									
										
										
										
											2020-09-04 21:24:14 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-12 19:16:32 +08:00
										 |  |  | Multiple sources may be given, separated by commas and/or whitespace | 
					
						
							| 
									
										
										
										
											2020-09-04 21:24:14 +08:00
										 |  |  | (where in the latter case the whole argument must be enclosed in "..."). | 
					
						
							|  |  |  | Each source may contain multiple certificates. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-28 18:01:04 +08:00
										 |  |  | The certificate verification options | 
					
						
							|  |  |  | B<-verify_hostname>, B<-verify_ip>, and B<-verify_email> | 
					
						
							|  |  |  | have no effect on the certificate verification enabled via this option. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-09 20:32:43 +08:00
										 |  |  | =item B<-key> I<filename>|I<uri> | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | The corresponding private key file for the client's current certificate given in | 
					
						
							|  |  |  | the B<-cert> option. | 
					
						
							|  |  |  | This will be used for signature-based message protection unless | 
					
						
							|  |  |  | the B<-secret> option indicating PBM or B<-unprotected_requests> is given. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-keypass> I<arg> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Pass phrase source for the private key given with the B<-key> option. | 
					
						
							|  |  |  | Also used for B<-cert> and B<-oldcert> in case it is an encrypted PKCS#12 file. | 
					
						
							|  |  |  | If not given here, the password will be prompted for if needed. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-01 00:36:00 +08:00
										 |  |  | For more information about the format of I<arg> see | 
					
						
							| 
									
										
										
										
											2021-01-18 17:09:58 +08:00
										 |  |  | L<openssl-passphrase-options(1)>. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<-digest> I<name> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Specifies name of supported digest to use in RFC 4210's MSG_SIG_ALG | 
					
						
							|  |  |  | and as the one-way function (OWF) in MSG_MAC_ALG. | 
					
						
							|  |  |  | If applicable, this is used for message protection and | 
					
						
							|  |  |  | Proof-of-Possession (POPO) signatures. | 
					
						
							| 
									
										
										
										
											2021-05-01 00:36:00 +08:00
										 |  |  | To see the list of supported digests, use C<openssl list -digest-commands>. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | Defaults to C<sha256>. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-mac> I<name> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Specifies the name of the MAC algorithm in MSG_MAC_ALG. | 
					
						
							| 
									
										
										
										
											2021-05-01 00:36:00 +08:00
										 |  |  | To get the names of supported MAC algorithms use C<openssl list -mac-algorithms> | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | and possibly combine such a name with the name of a supported digest algorithm, | 
					
						
							|  |  |  | e.g., hmacWithSHA256. | 
					
						
							|  |  |  | Defaults to C<hmac-sha1> as per RFC 4210. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-09 20:32:43 +08:00
										 |  |  | =item B<-extracerts> I<filenames>|I<uris> | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | Certificates to append in the extraCerts field when sending messages. | 
					
						
							| 
									
										
										
										
											2020-08-28 18:11:31 +08:00
										 |  |  | They can be used as the default CMP signer certificate chain to include. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-12 19:16:32 +08:00
										 |  |  | Multiple sources may be given, separated by commas and/or whitespace | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | (where in the latter case the whole argument must be enclosed in "..."). | 
					
						
							|  |  |  | Each source may contain multiple certificates. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-unprotected_requests> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-19 17:56:50 +08:00
										 |  |  | Send request messages without CMP-level protection. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head2 Credentials format options | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-certform> I<PEM|DER> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | File format to use when saving a certificate to a file. | 
					
						
							|  |  |  | Default value is PEM. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-15 03:58:34 +08:00
										 |  |  | =item B<-keyform> I<PEM|DER|P12|ENGINE> | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-03 20:15:26 +08:00
										 |  |  | The format of the key input; unspecified by default. | 
					
						
							| 
									
										
										
										
											2020-11-30 14:25:46 +08:00
										 |  |  | See L<openssl(1)/Format Options> for details. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<-otherpass> I<arg> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Pass phrase source for certificate given with the B<-trusted>, B<-untrusted>, | 
					
						
							| 
									
										
										
										
											2020-08-28 20:55:38 +08:00
										 |  |  | B<-own_trusted>, B<-srvcert>, B<-out_trusted>, B<-extracerts>, | 
					
						
							|  |  |  | B<-srv_trusted>, B<-srv_untrusted>, B<-rsp_extracerts>, B<-rsp_capubs>, | 
					
						
							|  |  |  | B<-tls_extra>, and B<-tls_trusted> options. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | If not given here, the password will be prompted for if needed. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-01 00:36:00 +08:00
										 |  |  | For more information about the format of I<arg> see | 
					
						
							| 
									
										
										
										
											2021-01-18 17:09:58 +08:00
										 |  |  | L<openssl-passphrase-options(1)>. | 
					
						
							| 
									
										
										
										
											2020-11-30 14:25:46 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | {- $OpenSSL::safe::opt_engine_item -} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-25 09:27:51 +08:00
										 |  |  | {- output_off() if $disabled{"deprecated-3.0"}; "" -} | 
					
						
							| 
									
										
										
										
											2020-11-30 14:25:46 +08:00
										 |  |  | As an alternative to using this combination: | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-30 14:25:46 +08:00
										 |  |  |     -engine {engineid} -key {keyid} -keyform ENGINE | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-30 14:25:46 +08:00
										 |  |  | ... it's also possible to just give the key ID in URI form to B<-key>, | 
					
						
							|  |  |  | like this: | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-30 14:25:46 +08:00
										 |  |  |     -key org.openssl.engine:{engineid}:{keyid} | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-30 14:25:46 +08:00
										 |  |  | This applies to all options specifying keys: B<-key>, B<-newkey>, and | 
					
						
							|  |  |  | B<-tls_key>. | 
					
						
							| 
									
										
										
										
											2020-06-25 09:27:51 +08:00
										 |  |  | {- output_on() if $disabled{"deprecated-3.0"}; "" -} | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-03 19:08:16 +08:00
										 |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head2 Provider options | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | {- $OpenSSL::safe::opt_provider_item -} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-03 18:19:10 +08:00
										 |  |  | =head2 Random state options | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | {- $OpenSSL::safe::opt_r_item -} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-21 17:54:46 +08:00
										 |  |  | =head2 TLS connection options | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-tls_used> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Enable using TLS (even when other TLS_related options are not set) | 
					
						
							| 
									
										
										
										
											2021-12-08 02:07:43 +08:00
										 |  |  | when connecting to CMP server via HTTP. | 
					
						
							|  |  |  | This option is not supported with the I<-port> option | 
					
						
							|  |  |  | and is ignored with the I<-use_mock_srv> and I<-rspin> options | 
					
						
							|  |  |  | or if the I<-server> option is not given. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-09 20:32:43 +08:00
										 |  |  | =item B<-tls_cert> I<filename>|I<uri> | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | Client's TLS certificate. | 
					
						
							| 
									
										
										
										
											2021-01-12 19:16:32 +08:00
										 |  |  | If the source includes further certs they are used (along with B<-untrusted> | 
					
						
							| 
									
										
										
										
											2020-05-29 19:30:03 +08:00
										 |  |  | certs) for constructing the client cert chain provided to the TLS server. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-30 14:25:46 +08:00
										 |  |  | =item B<-tls_key> I<filename>|I<uri> | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | Private key for the client's TLS certificate. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-tls_keypass> I<arg> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-01 00:36:00 +08:00
										 |  |  | Pass phrase source for client's private TLS key B<-tls_key>. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | Also used for B<-tls_cert> in case it is an encrypted PKCS#12 file. | 
					
						
							|  |  |  | If not given here, the password will be prompted for if needed. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-01 00:36:00 +08:00
										 |  |  | For more information about the format of I<arg> see | 
					
						
							| 
									
										
										
										
											2021-01-18 17:09:58 +08:00
										 |  |  | L<openssl-passphrase-options(1)>. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-12 19:16:32 +08:00
										 |  |  | =item B<-tls_extra> I<filenames>|I<uris> | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | Extra certificates to provide to TLS server during TLS handshake | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-12 19:16:32 +08:00
										 |  |  | =item B<-tls_trusted> I<filenames>|I<uris> | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-01 17:23:41 +08:00
										 |  |  | Trusted certificate(s) to use for validating the TLS server certificate. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | This implies hostname validation. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-12 19:16:32 +08:00
										 |  |  | Multiple sources may be given, separated by commas and/or whitespace | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | (where in the latter case the whole argument must be enclosed in "..."). | 
					
						
							|  |  |  | Each source may contain multiple certificates. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-28 18:01:04 +08:00
										 |  |  | The certificate verification options | 
					
						
							|  |  |  | B<-verify_hostname>, B<-verify_ip>, and B<-verify_email> | 
					
						
							|  |  |  | have no effect on the certificate verification enabled via this option. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | =item B<-tls_host> I<name> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-21 08:59:56 +08:00
										 |  |  | Address to be checked during hostname validation. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | This may be a DNS name or an IP address. | 
					
						
							|  |  |  | If not given it defaults to the B<-server> address. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head2 Client-side debugging options | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-batch> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Do not interactively prompt for input, for instance when a password is needed. | 
					
						
							|  |  |  | This can be useful for batch processing and testing. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-repeat> I<number> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-21 19:08:21 +08:00
										 |  |  | Invoke the command the given positive number of times with the same parameters. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | Default is one invocation. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-reqin> I<filenames> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-03 02:13:47 +08:00
										 |  |  | Take the sequence of CMP requests to send to the server from file(s). | 
					
						
							|  |  |  | This option is ignored if the B<-rspin> option is given | 
					
						
							|  |  |  | because in the latter case no requests are actually sent. | 
					
						
							| 
									
										
										
										
											2020-08-28 19:37:04 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | Multiple filenames may be given, separated by commas and/or whitespace | 
					
						
							|  |  |  | (where in the latter case the whole argument must be enclosed in "..."). | 
					
						
							|  |  |  | As many files are read as needed for a complete transaction. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-30 00:06:43 +08:00
										 |  |  | =item B<-reqin_new_tid> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Use a fresh transactionID for CMP request messages read using B<-reqin>, | 
					
						
							|  |  |  | which requires re-protecting them as far as they were protected before. | 
					
						
							|  |  |  | This may be needed in case the sequence of requests is reused | 
					
						
							|  |  |  | and the CMP server complains that the transaction ID has already been used. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | =item B<-reqout> I<filenames> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-03 02:13:47 +08:00
										 |  |  | Save the sequence of CMP requests created by the client to file(s). | 
					
						
							|  |  |  | These requests are not sent to the server if the B<-reqin> option is used, too. | 
					
						
							| 
									
										
										
										
											2020-08-28 19:37:04 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | Multiple filenames may be given, separated by commas and/or whitespace. | 
					
						
							|  |  |  | As many files are written as needed to store the complete transaction. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-rspin> I<filenames> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-03 02:13:47 +08:00
										 |  |  | Process the sequence of CMP responses provided in file(s), skipping server. | 
					
						
							| 
									
										
										
										
											2021-12-08 02:07:43 +08:00
										 |  |  | This excludes I<-server>, I<-port>, and I<-use_mock_srv>. | 
					
						
							| 
									
										
										
										
											2020-08-28 19:37:04 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | Multiple filenames may be given, separated by commas and/or whitespace. | 
					
						
							|  |  |  | As many files are read as needed for the complete transaction. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-rspout> I<filenames> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-03 02:13:47 +08:00
										 |  |  | Save the sequence of received CMP responses to file(s). | 
					
						
							| 
									
										
										
										
											2020-08-28 19:37:04 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | Multiple filenames may be given, separated by commas and/or whitespace. | 
					
						
							|  |  |  | As many files are written as needed to store the complete transaction. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-use_mock_srv> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-08 02:07:43 +08:00
										 |  |  | Test the client using the internal CMP server mock-up at API level, | 
					
						
							|  |  |  | bypassing socket-based transfer via HTTP. | 
					
						
							|  |  |  | This excludes I<-server>, I<-port>, and I<-rspin>. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-21 17:54:46 +08:00
										 |  |  | =head2 Mock server options | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-port> I<number> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-08 02:07:43 +08:00
										 |  |  | Act as HTTP-based CMP server mock-up listening on the given port. | 
					
						
							|  |  |  | This excludes I<-server>, I<-rspin>, and I<-use_mock_srv>. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<-max_msgs> I<number> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Maximum number of CMP (request) messages the CMP HTTP server mock-up | 
					
						
							| 
									
										
										
										
											2020-07-17 18:31:26 +08:00
										 |  |  | should handle, which must be nonnegative. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | The default value is 0, which means that no limit is imposed. | 
					
						
							|  |  |  | In any case the server terminates on internal errors, but not when it | 
					
						
							|  |  |  | detects a CMP-level error that it can successfully answer with an error message. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-srv_ref> I<value> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Reference value to use as senderKID of server in case no B<-srv_cert> is given. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-srv_secret> I<arg> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Password source for server authentication with a pre-shared key (secret). | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-09 20:32:43 +08:00
										 |  |  | =item B<-srv_cert> I<filename>|I<uri> | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | Certificate of the server. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-09 20:32:43 +08:00
										 |  |  | =item B<-srv_key> I<filename>|I<uri> | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | Private key used by the server for signing messages. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-srv_keypass> I<arg> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Server private key (and cert) file pass phrase source. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-12 19:16:32 +08:00
										 |  |  | =item B<-srv_trusted> I<filenames>|I<uris> | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | Trusted certificates for client authentication. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-28 18:01:04 +08:00
										 |  |  | The certificate verification options | 
					
						
							|  |  |  | B<-verify_hostname>, B<-verify_ip>, and B<-verify_email> | 
					
						
							|  |  |  | have no effect on the certificate verification enabled via this option. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-12 19:16:32 +08:00
										 |  |  | =item B<-srv_untrusted> I<filenames>|I<uris> | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-01 17:23:41 +08:00
										 |  |  | Intermediate CA certs that may be useful when validating client certificates. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-09 20:32:43 +08:00
										 |  |  | =item B<-rsp_cert> I<filename>|I<uri> | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | Certificate to be returned as mock enrollment result. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-12 19:16:32 +08:00
										 |  |  | =item B<-rsp_extracerts> I<filenames>|I<uris> | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | Extra certificates to be included in mock certification responses. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-12 19:16:32 +08:00
										 |  |  | =item B<-rsp_capubs> I<filenames>|I<uris> | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | CA certificates to be included in mock Initialization Response (IP) message. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-poll_count> I<number> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Number of times the client must poll before receiving a certificate. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-check_after> I<number> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The checkAfter value (number of seconds to wait) to include in poll response. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-grant_implicitconf> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Grant implicit confirmation of newly enrolled certificate. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-pkistatus> I<number> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | PKIStatus to be included in server response. | 
					
						
							|  |  |  | Valid range is 0 (accepted) .. 6 (keyUpdateWarning). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-failure> I<number> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | A single failure info bit number to be included in server response. | 
					
						
							|  |  |  | Valid range is 0 (badAlg) .. 26 (duplicateCertReq). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-failurebits> I<number> | 
					
						
							|  |  |  | Number representing failure bits to be included in server response. | 
					
						
							|  |  |  | Valid range is 0 .. 2^27 - 1. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-statusstring> I<arg> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Text to be included as status string in server response. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-send_error> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Force server to reply with error message. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-send_unprotected> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Send response messages without CMP-level protection. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-send_unprot_err> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | In case of negative responses, server shall send unprotected error messages, | 
					
						
							|  |  |  | certificate responses (IP/CP/KUP), and revocation responses (RP). | 
					
						
							|  |  |  | WARNING: This setting leads to behavior violating RFC 4210. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-accept_unprotected> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Accept missing or invalid protection of requests. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item B<-accept_unprot_err> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Accept unprotected error messages from client. | 
					
						
							| 
									
										
										
										
											2022-12-19 17:56:50 +08:00
										 |  |  | So far this has no effect because the server does not accept any error messages. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item B<-accept_raverified> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Accept RAVERIFED as proof-of-possession (POPO). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-21 17:54:46 +08:00
										 |  |  | =head2 Certificate verification options, for both CMP and TLS | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-28 18:01:04 +08:00
										 |  |  | {- $OpenSSL::safe::opt_v_item -} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The certificate verification options | 
					
						
							|  |  |  | B<-verify_hostname>, B<-verify_ip>, and B<-verify_email> | 
					
						
							|  |  |  | only affect the certificate verification enabled via the B<-out_trusted> option. | 
					
						
							| 
									
										
										
										
											2020-09-21 17:54:46 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =back | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =head1 NOTES | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | When setting up CMP configurations and experimenting with enrollment options | 
					
						
							|  |  |  | typically various errors occur until the configuration is correct and complete. | 
					
						
							|  |  |  | When the CMP server reports an error the client will by default | 
					
						
							|  |  |  | check the protection of the CMP response message. | 
					
						
							|  |  |  | Yet some CMP services tend not to protect negative responses. | 
					
						
							|  |  |  | In this case the client will reject them, and thus their contents are not shown | 
					
						
							|  |  |  | although they usually contain hints that would be helpful for diagnostics. | 
					
						
							|  |  |  | For assisting in such cases the CMP client offers a workaround via the | 
					
						
							|  |  |  | B<-unprotected_errors> option, which allows accepting such negative messages. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head1 EXAMPLES | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head2 Simple examples using the default OpenSSL configuration file | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This CMP client implementation comes with demonstrative CMP sections | 
					
						
							|  |  |  | in the example configuration file F<openssl/apps/openssl.cnf>, | 
					
						
							|  |  |  | which can be used to interact conveniently with the Insta Demo CA. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | In order to enroll an initial certificate from that CA it is sufficient | 
					
						
							|  |  |  | to issue the following shell commands. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-09 20:32:43 +08:00
										 |  |  |   export OPENSSL_CONF=/path/to/openssl/apps/openssl.cnf | 
					
						
							| 
									
										
										
										
											2020-09-19 15:22:34 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-25 19:47:04 +08:00
										 |  |  | =begin comment | 
					
						
							| 
									
										
										
										
											2020-09-19 15:22:34 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-11 13:57:57 +08:00
										 |  |  |   wget 'http://pki.certificate.fi:8081/install-ca-cert.html/ca-certificate.crt\ | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  |         ?ca-id=632&download-certificate=1' -O insta.ca.crt | 
					
						
							| 
									
										
										
										
											2020-09-19 15:22:34 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-25 19:47:04 +08:00
										 |  |  | =end comment | 
					
						
							| 
									
										
										
										
											2020-09-19 15:22:34 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  |   openssl genrsa -out insta.priv.pem | 
					
						
							|  |  |  |   openssl cmp -section insta | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This should produce the file F<insta.cert.pem> containing a new certificate | 
					
						
							|  |  |  | for the private key held in F<insta.priv.pem>. | 
					
						
							|  |  |  | It can be viewed using, e.g., | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   openssl x509 -noout -text -in insta.cert.pem | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | In case the network setup requires using an HTTP proxy it may be given as usual | 
					
						
							| 
									
										
										
										
											2021-05-01 00:36:00 +08:00
										 |  |  | via the environment variable B<http_proxy> or via the B<-proxy> option in the | 
					
						
							| 
									
										
										
										
											2021-03-09 20:32:43 +08:00
										 |  |  | configuration file or the CMP command-line argument B<-proxy>, for example | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   -proxy http://192.168.1.1:8080 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | In the Insta Demo CA scenario both clients and the server may use the pre-shared | 
					
						
							| 
									
										
										
										
											2020-05-29 19:30:03 +08:00
										 |  |  | secret I<insta> and the reference value I<3078> to authenticate to each other. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | Alternatively, CMP messages may be protected in signature-based manner, | 
					
						
							|  |  |  | where the trust anchor in this case is F<insta.ca.crt> | 
					
						
							|  |  |  | and the client may use any certificate already obtained from that CA, | 
					
						
							|  |  |  | as specified in the B<[signature]> section of the example configuration. | 
					
						
							|  |  |  | This can be used in combination with the B<[insta]> section simply by | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   openssl cmp -section insta,signature | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | By default the CMP IR message type is used, yet CR works equally here. | 
					
						
							|  |  |  | This may be specified directly at the command line: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   openssl cmp -section insta -cmd cr | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | or by referencing in addition the B<[cr]> section of the example configuration: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   openssl cmp -section insta,cr | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | In order to update the enrolled certificate one may call | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   openssl cmp -section insta,kur | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | using with PBM-based protection or | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   openssl cmp -section insta,kur,signature | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | using signature-based protection. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | In a similar way any previously enrolled certificate may be revoked by | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   openssl cmp -section insta,rr -trusted insta.ca.crt | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | or | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   openssl cmp -section insta,rr,signature | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-09 20:32:43 +08:00
										 |  |  | Many more options can be given in the configuration file | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | and/or on the command line. | 
					
						
							| 
									
										
										
										
											2020-07-25 19:47:04 +08:00
										 |  |  | For instance, the B<-reqexts> CLI option may refer to a section in the | 
					
						
							|  |  |  | configuration file defining X.509 extensions to use in certificate requests, | 
					
						
							| 
									
										
										
										
											2021-05-01 00:36:00 +08:00
										 |  |  | such as C<v3_req> in F<openssl/apps/openssl.cnf>: | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-25 19:47:04 +08:00
										 |  |  |   openssl cmp -section insta,cr -reqexts v3_req | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =head2 Certificate enrollment | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-09 20:32:43 +08:00
										 |  |  | The following examples do not make use of a configuration file at first. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | They assume that a CMP server can be contacted on the local TCP port 80 | 
					
						
							| 
									
										
										
										
											2020-05-29 19:30:03 +08:00
										 |  |  | and accepts requests under the alias I</pkix/>. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-09 20:32:43 +08:00
										 |  |  | For enrolling its very first certificate the client generates a client key | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | and sends an initial request message to the local CMP server | 
					
						
							|  |  |  | using a pre-shared secret key for mutual authentication. | 
					
						
							|  |  |  | In this example the client does not have the CA certificate yet, | 
					
						
							|  |  |  | so we specify the name of the CA with the B<-recipient> option | 
					
						
							|  |  |  | and save any CA certificates that we may receive in the C<capubs.pem> file. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-09 20:32:43 +08:00
										 |  |  | In below command line usage examples the C<\> at line ends is used just | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | for formatting; each of the command invocations should be on a single line. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   openssl genrsa -out cl_key.pem | 
					
						
							| 
									
										
										
										
											2021-03-09 20:32:43 +08:00
										 |  |  |   openssl cmp -cmd ir -server 127.0.0.1:80/pkix/ -recipient "/CN=CMPserver" \ | 
					
						
							|  |  |  |     -ref 1234 -secret pass:1234-5678 \ | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  |     -newkey cl_key.pem -subject "/CN=MyName" \ | 
					
						
							|  |  |  |     -cacertsout capubs.pem -certout cl_cert.pem | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head2 Certificate update | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Then, when the client certificate and its related key pair needs to be updated, | 
					
						
							|  |  |  | the client can send a key update request taking the certs in C<capubs.pem> | 
					
						
							|  |  |  | as trusted for authenticating the server and using the previous cert and key | 
					
						
							|  |  |  | for its own authentication. | 
					
						
							|  |  |  | Then it can start using the new cert and key. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   openssl genrsa -out cl_key_new.pem | 
					
						
							| 
									
										
										
										
											2020-09-21 17:54:46 +08:00
										 |  |  |   openssl cmp -cmd kur -server 127.0.0.1:80/pkix/ \ | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  |     -trusted capubs.pem \ | 
					
						
							|  |  |  |     -cert cl_cert.pem -key cl_key.pem \ | 
					
						
							|  |  |  |     -newkey cl_key_new.pem -certout cl_cert.pem | 
					
						
							|  |  |  |   cp cl_key_new.pem cl_key.pem | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This command sequence can be repated as often as needed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head2 Requesting information from CMP server | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Requesting "all relevant information" with an empty General Message. | 
					
						
							|  |  |  | This prints information about all received ITAV B<infoType>s to stdout. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-09 20:32:43 +08:00
										 |  |  |   openssl cmp -cmd genm -server 127.0.0.1/pkix/ -recipient "/CN=CMPserver" \ | 
					
						
							|  |  |  |     -ref 1234 -secret pass:1234-5678 | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =head2 Using a custom configuration file | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | For CMP client invocations, in particular for certificate enrollment, | 
					
						
							|  |  |  | usually many parameters need to be set, which is tedious and error-prone to do | 
					
						
							|  |  |  | on the command line. | 
					
						
							| 
									
										
										
										
											2020-06-30 03:13:07 +08:00
										 |  |  | Therefore, the client offers the possibility to read | 
					
						
							| 
									
										
										
										
											2021-05-01 00:36:00 +08:00
										 |  |  | options from sections of the OpenSSL config file, usually called F<openssl.cnf>. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | The values found there can still be extended and even overridden by any | 
					
						
							|  |  |  | subsequently loaded sections and on the command line. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | After including in the configuration file the following sections: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   [cmp] | 
					
						
							|  |  |  |   server = 127.0.0.1 | 
					
						
							|  |  |  |   path = pkix/ | 
					
						
							|  |  |  |   trusted = capubs.pem | 
					
						
							|  |  |  |   cert = cl_cert.pem | 
					
						
							|  |  |  |   key = cl_key.pem | 
					
						
							|  |  |  |   newkey = cl_key.pem | 
					
						
							|  |  |  |   certout = cl_cert.pem | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-09 20:32:43 +08:00
										 |  |  |   [init] | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  |   recipient = "/CN=CMPserver" | 
					
						
							|  |  |  |   trusted = | 
					
						
							|  |  |  |   cert = | 
					
						
							|  |  |  |   key = | 
					
						
							|  |  |  |   ref = 1234 | 
					
						
							|  |  |  |   secret = pass:1234-5678-1234-567 | 
					
						
							|  |  |  |   subject = "/CN=MyName" | 
					
						
							|  |  |  |   cacertsout = capubs.pem | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-09 20:32:43 +08:00
										 |  |  | the above enrollment transactions reduce to | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-09 20:32:43 +08:00
										 |  |  |   openssl cmp -section cmp,init | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  |   openssl cmp -cmd kur -newkey cl_key_new.pem | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-09 20:32:43 +08:00
										 |  |  | and the above transaction using a general message reduces to | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-09 20:32:43 +08:00
										 |  |  |   openssl cmp -section cmp,init -cmd genm | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =head1 SEE ALSO | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | L<openssl-genrsa(1)>, L<openssl-ecparam(1)>, L<openssl-list(1)>, | 
					
						
							|  |  |  | L<openssl-req(1)>, L<openssl-x509(1)>, L<x509v3_config(5)> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-30 14:25:46 +08:00
										 |  |  | =head1 HISTORY | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The B<cmp> application was added in OpenSSL 3.0. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The B<-engine option> was deprecated in OpenSSL 3.0. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | =head1 COPYRIGHT | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-07 19:59:59 +08:00
										 |  |  | Copyright 2007-2023 The OpenSSL Project Authors. All Rights Reserved. | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-11 16:44:52 +08:00
										 |  |  | Licensed under the Apache License 2.0 (the "License").  You may not use | 
					
						
							| 
									
										
										
										
											2020-04-03 16:43:58 +08:00
										 |  |  | 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 |