summaryrefslogtreecommitdiffstats
path: root/upstream/debian-unstable/man1/openssl-cmp.1ssl
diff options
context:
space:
mode:
Diffstat (limited to 'upstream/debian-unstable/man1/openssl-cmp.1ssl')
-rw-r--r--upstream/debian-unstable/man1/openssl-cmp.1ssl1283
1 files changed, 1283 insertions, 0 deletions
diff --git a/upstream/debian-unstable/man1/openssl-cmp.1ssl b/upstream/debian-unstable/man1/openssl-cmp.1ssl
new file mode 100644
index 00000000..e0599ea1
--- /dev/null
+++ b/upstream/debian-unstable/man1/openssl-cmp.1ssl
@@ -0,0 +1,1283 @@
+.\" -*- mode: troff; coding: utf-8 -*-
+.\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
+.ie n \{\
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds C`
+. ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is >0, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+. if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. if !\nF==2 \{\
+. nr % 0
+. nr F 2
+. \}
+. \}
+.\}
+.rr rF
+.\" ========================================================================
+.\"
+.IX Title "OPENSSL-CMP 1SSL"
+.TH OPENSSL-CMP 1SSL 2024-02-03 3.1.5 OpenSSL
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH NAME
+openssl\-cmp \- Certificate Management Protocol (CMP, RFC 4210) application
+.SH SYNOPSIS
+.IX Header "SYNOPSIS"
+\&\fBopenssl\fR \fBcmp\fR
+[\fB\-help\fR]
+[\fB\-config\fR \fIfilename\fR]
+[\fB\-section\fR \fInames\fR]
+[\fB\-verbosity\fR \fIlevel\fR]
+.PP
+Generic message options:
+.PP
+[\fB\-cmd\fR \fIir|cr|kur|p10cr|rr|genm\fR]
+[\fB\-infotype\fR \fIname\fR]
+[\fB\-geninfo\fR \fIOID:int:N\fR]
+.PP
+Certificate enrollment options:
+.PP
+[\fB\-newkey\fR \fIfilename\fR|\fIuri\fR]
+[\fB\-newkeypass\fR \fIarg\fR]
+[\fB\-subject\fR \fIname\fR]
+[\fB\-issuer\fR \fIname\fR]
+[\fB\-days\fR \fInumber\fR]
+[\fB\-reqexts\fR \fIname\fR]
+[\fB\-sans\fR \fIspec\fR]
+[\fB\-san_nodefault\fR]
+[\fB\-policies\fR \fIname\fR]
+[\fB\-policy_oids\fR \fInames\fR]
+[\fB\-policy_oids_critical\fR]
+[\fB\-popo\fR \fInumber\fR]
+[\fB\-csr\fR \fIfilename\fR]
+[\fB\-out_trusted\fR \fIfilenames\fR|\fIuris\fR]
+[\fB\-implicit_confirm\fR]
+[\fB\-disable_confirm\fR]
+[\fB\-certout\fR \fIfilename\fR]
+[\fB\-chainout\fR \fIfilename\fR]
+.PP
+Certificate enrollment and revocation options:
+.PP
+[\fB\-oldcert\fR \fIfilename\fR|\fIuri\fR]
+[\fB\-revreason\fR \fInumber\fR]
+.PP
+Message transfer options:
+.PP
+[\fB\-server\fR \fI[http[s]://][userinfo@]host[:port][/path][?query][#fragment]\fR]
+[\fB\-proxy\fR \fI[http[s]://][userinfo@]host[:port][/path][?query][#fragment]\fR]
+[\fB\-no_proxy\fR \fIaddresses\fR]
+[\fB\-recipient\fR \fIname\fR]
+[\fB\-path\fR \fIremote_path\fR]
+[\fB\-keep_alive\fR \fIvalue\fR]
+[\fB\-msg_timeout\fR \fIseconds\fR]
+[\fB\-total_timeout\fR \fIseconds\fR]
+.PP
+Server authentication options:
+.PP
+[\fB\-trusted\fR \fIfilenames\fR|\fIuris\fR]
+[\fB\-untrusted\fR \fIfilenames\fR|\fIuris\fR]
+[\fB\-srvcert\fR \fIfilename\fR|\fIuri\fR]
+[\fB\-expect_sender\fR \fIname\fR]
+[\fB\-ignore_keyusage\fR]
+[\fB\-unprotected_errors\fR]
+[\fB\-extracertsout\fR \fIfilename\fR]
+[\fB\-cacertsout\fR \fIfilename\fR]
+.PP
+Client authentication and protection options:
+.PP
+[\fB\-ref\fR \fIvalue\fR]
+[\fB\-secret\fR \fIarg\fR]
+[\fB\-cert\fR \fIfilename\fR|\fIuri\fR]
+[\fB\-own_trusted\fR \fIfilenames\fR|\fIuris\fR]
+[\fB\-key\fR \fIfilename\fR|\fIuri\fR]
+[\fB\-keypass\fR \fIarg\fR]
+[\fB\-digest\fR \fIname\fR]
+[\fB\-mac\fR \fIname\fR]
+[\fB\-extracerts\fR \fIfilenames\fR|\fIuris\fR]
+[\fB\-unprotected_requests\fR]
+.PP
+Credentials format options:
+.PP
+[\fB\-certform\fR \fIPEM|DER\fR]
+[\fB\-keyform\fR \fIPEM|DER|P12|ENGINE\fR]
+[\fB\-otherpass\fR \fIarg\fR]
+[\fB\-engine\fR \fIid\fR]
+[\fB\-provider\fR \fIname\fR]
+[\fB\-provider\-path\fR \fIpath\fR]
+[\fB\-propquery\fR \fIpropq\fR]
+.PP
+Random state options:
+.PP
+[\fB\-rand\fR \fIfiles\fR]
+[\fB\-writerand\fR \fIfile\fR]
+.PP
+TLS connection options:
+.PP
+[\fB\-tls_used\fR]
+[\fB\-tls_cert\fR \fIfilename\fR|\fIuri\fR]
+[\fB\-tls_key\fR \fIfilename\fR|\fIuri\fR]
+[\fB\-tls_keypass\fR \fIarg\fR]
+[\fB\-tls_extra\fR \fIfilenames\fR|\fIuris\fR]
+[\fB\-tls_trusted\fR \fIfilenames\fR|\fIuris\fR]
+[\fB\-tls_host\fR \fIname\fR]
+.PP
+Client-side debugging options:
+.PP
+[\fB\-batch\fR]
+[\fB\-repeat\fR \fInumber\fR]
+[\fB\-reqin\fR \fIfilenames\fR]
+[\fB\-reqin_new_tid\fR]
+[\fB\-reqout\fR \fIfilenames\fR]
+[\fB\-rspin\fR \fIfilenames\fR]
+[\fB\-rspout\fR \fIfilenames\fR]
+[\fB\-use_mock_srv\fR]
+.PP
+Mock server options:
+.PP
+[\fB\-port\fR \fInumber\fR]
+[\fB\-max_msgs\fR \fInumber\fR]
+[\fB\-srv_ref\fR \fIvalue\fR]
+[\fB\-srv_secret\fR \fIarg\fR]
+[\fB\-srv_cert\fR \fIfilename\fR|\fIuri\fR]
+[\fB\-srv_key\fR \fIfilename\fR|\fIuri\fR]
+[\fB\-srv_keypass\fR \fIarg\fR]
+[\fB\-srv_trusted\fR \fIfilenames\fR|\fIuris\fR]
+[\fB\-srv_untrusted\fR \fIfilenames\fR|\fIuris\fR]
+[\fB\-rsp_cert\fR \fIfilename\fR|\fIuri\fR]
+[\fB\-rsp_extracerts\fR \fIfilenames\fR|\fIuris\fR]
+[\fB\-rsp_capubs\fR \fIfilenames\fR|\fIuris\fR]
+[\fB\-poll_count\fR \fInumber\fR]
+[\fB\-check_after\fR \fInumber\fR]
+[\fB\-grant_implicitconf\fR]
+[\fB\-pkistatus\fR \fInumber\fR]
+[\fB\-failure\fR \fInumber\fR]
+[\fB\-failurebits\fR \fInumber\fR]
+[\fB\-statusstring\fR \fIarg\fR]
+[\fB\-send_error\fR]
+[\fB\-send_unprotected\fR]
+[\fB\-send_unprot_err\fR]
+[\fB\-accept_unprotected\fR]
+[\fB\-accept_unprot_err\fR]
+[\fB\-accept_raverified\fR]
+.PP
+Certificate verification options, for both CMP and TLS:
+.PP
+[\fB\-allow_proxy_certs\fR]
+[\fB\-attime\fR \fItimestamp\fR]
+[\fB\-no_check_time\fR]
+[\fB\-check_ss_sig\fR]
+[\fB\-crl_check\fR]
+[\fB\-crl_check_all\fR]
+[\fB\-explicit_policy\fR]
+[\fB\-extended_crl\fR]
+[\fB\-ignore_critical\fR]
+[\fB\-inhibit_any\fR]
+[\fB\-inhibit_map\fR]
+[\fB\-partial_chain\fR]
+[\fB\-policy\fR \fIarg\fR]
+[\fB\-policy_check\fR]
+[\fB\-policy_print\fR]
+[\fB\-purpose\fR \fIpurpose\fR]
+[\fB\-suiteB_128\fR]
+[\fB\-suiteB_128_only\fR]
+[\fB\-suiteB_192\fR]
+[\fB\-trusted_first\fR]
+[\fB\-no_alt_chains\fR]
+[\fB\-use_deltas\fR]
+[\fB\-auth_level\fR \fInum\fR]
+[\fB\-verify_depth\fR \fInum\fR]
+[\fB\-verify_email\fR \fIemail\fR]
+[\fB\-verify_hostname\fR \fIhostname\fR]
+[\fB\-verify_ip\fR \fIip\fR]
+[\fB\-verify_name\fR \fIname\fR]
+[\fB\-x509_strict\fR]
+[\fB\-issuer_checks\fR]
+.SH DESCRIPTION
+.IX Header "DESCRIPTION"
+The \fBcmp\fR 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,
+request certificates to be revoked, and perform other types of CMP requests.
+.SH OPTIONS
+.IX Header "OPTIONS"
+.IP \fB\-help\fR 4
+.IX Item "-help"
+Display a summary of all options
+.IP "\fB\-config\fR \fIfilename\fR" 4
+.IX Item "-config filename"
+Configuration file to use.
+An empty string \f(CW""\fR means none.
+Default filename is from the environment variable \f(CW\*(C`OPENSSL_CONF\*(C'\fR.
+.IP "\fB\-section\fR \fInames\fR" 4
+.IX Item "-section names"
+Section(s) to use within config file defining CMP options.
+An empty string \f(CW""\fR means no specific section.
+Default is \f(CW\*(C`cmp\*(C'\fR.
+.Sp
+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 \f(CW\*(C`[default]\*(C'\fR section and finally the unnamed
+section (as far as present) can provide per-option fallback values.
+.IP "\fB\-verbosity\fR \fIlevel\fR" 4
+.IX Item "-verbosity level"
+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.
+.SS "Generic message options"
+.IX Subsection "Generic message options"
+.IP "\fB\-cmd\fR \fIir|cr|kur|p10cr|rr|genm\fR" 4
+.IX Item "-cmd ir|cr|kur|p10cr|rr|genm"
+CMP command to execute.
+Currently implemented commands are:
+.RS 4
+.IP "ir \ \- Initialization Request" 8
+.IX Item "ir \ - Initialization Request"
+.PD 0
+.IP "cr \ \- Certificate Request" 8
+.IX Item "cr \ - Certificate Request"
+.IP "p10cr \- PKCS#10 Certification Request (for legacy support)" 8
+.IX Item "p10cr - PKCS#10 Certification Request (for legacy support)"
+.IP "kur \ \ \- Key Update Request" 8
+.IX Item "kur \ \ - Key Update Request"
+.IP "rr \ \- Revocation Request" 8
+.IX Item "rr \ - Revocation Request"
+.IP "genm \- General Message" 8
+.IX Item "genm - General Message"
+.RE
+.RS 4
+.PD
+.Sp
+\&\fBir\fR requests initialization of an end entity into a PKI hierarchy
+by issuing a first certificate.
+.Sp
+\&\fBcr\fR requests issuing an additional certificate for an end entity already
+initialized to the PKI hierarchy.
+.Sp
+\&\fBp10cr\fR requests issuing an additional certificate similarly to \fBcr\fR
+but using legacy PKCS#10 CSR format.
+.Sp
+\&\fBkur\fR requests a (key) update for an existing certificate.
+.Sp
+\&\fBrr\fR requests revocation of an existing certificate.
+.Sp
+\&\fBgenm\fR requests information using a General Message, where optionally
+included \fBInfoTypeAndValue\fRs may be used to state which info is of interest.
+Upon receipt of the General Response, information about all received
+ITAV \fBinfoType\fRs is printed to stdout.
+.RE
+.IP "\fB\-infotype\fR \fIname\fR" 4
+.IX Item "-infotype name"
+Set InfoType name to use for requesting specific info in \fBgenm\fR,
+e.g., \f(CW\*(C`signKeyPairTypes\*(C'\fR.
+.IP "\fB\-geninfo\fR \fIOID:int:N\fR" 4
+.IX Item "-geninfo OID:int:N"
+generalInfo integer values to place in request PKIHeader with given OID,
+e.g., \f(CW\*(C`1.2.3.4:int:56789\*(C'\fR.
+.SS "Certificate enrollment options"
+.IX Subsection "Certificate enrollment options"
+.IP "\fB\-newkey\fR \fIfilename\fR|\fIuri\fR" 4
+.IX Item "-newkey filename|uri"
+The source of the private or public key for the certificate being requested.
+Defaults to the public key in the PKCS#10 CSR given with the \fB\-csr\fR option,
+the public key of the reference certificate, or the current client key.
+.Sp
+The public portion of the key is placed in the certification request.
+.Sp
+Unless \fB\-cmd\fR \fIp10cr\fR, \fB\-popo\fR \fI\-1\fR, or \fB\-popo\fR \fI0\fR is given, the
+private key will be needed as well to provide the proof of possession (POPO),
+where the \fB\-key\fR option may provide a fallback.
+.IP "\fB\-newkeypass\fR \fIarg\fR" 4
+.IX Item "-newkeypass arg"
+Pass phrase source for the key given with the \fB\-newkey\fR option.
+If not given here, the password will be prompted for if needed.
+.Sp
+For more information about the format of \fIarg\fR see
+\&\fBopenssl\-passphrase\-options\fR\|(1).
+.IP "\fB\-subject\fR \fIname\fR" 4
+.IX Item "-subject name"
+X509 Distinguished Name (DN) of subject to use in the requested certificate
+template.
+If the NULL-DN (\f(CW"/"\fR) is given then no subject is placed in the template.
+Default is the subject DN of any PKCS#10 CSR given with the \fB\-csr\fR option.
+For KUR, a further fallback is the subject DN
+of the reference certificate (see \fB\-oldcert\fR) if provided.
+This fallback is used for IR and CR only if no SANs are set.
+.Sp
+If provided and neither \fB\-cert\fR nor \fB\-oldcert\fR is given,
+the subject DN is used as fallback sender of outgoing CMP messages.
+.Sp
+The argument must be formatted as \fI/type0=value0/type1=value1/type2=...\fR.
+Special characters may be escaped by \f(CW\*(C`\e\*(C'\fR (backslash); whitespace is retained.
+Empty values are permitted, but the corresponding type will not be included.
+Giving a single \f(CW\*(C`/\*(C'\fR will lead to an empty sequence of RDNs (a NULL-DN).
+Multi-valued RDNs can be formed by placing a \f(CW\*(C`+\*(C'\fR character instead of a \f(CW\*(C`/\*(C'\fR
+between the AttributeValueAssertions (AVAs) that specify the members of the set.
+Example:
+.Sp
+\&\f(CW\*(C`/DC=org/DC=OpenSSL/DC=users/UID=123456+CN=John Doe\*(C'\fR
+.IP "\fB\-issuer\fR \fIname\fR" 4
+.IX Item "-issuer name"
+X509 issuer Distinguished Name (DN) of the CA server
+to place in the requested certificate template in IR/CR/KUR.
+If the NULL-DN (\f(CW"/"\fR) is given then no issuer is placed in the template.
+.Sp
+If provided and neither \fB\-recipient\fR nor \fB\-srvcert\fR is given,
+the issuer DN is used as fallback recipient of outgoing CMP messages.
+.Sp
+The argument must be formatted as \fI/type0=value0/type1=value1/type2=...\fR.
+For details see the description of the \fB\-subject\fR option.
+.IP "\fB\-days\fR \fInumber\fR" 4
+.IX Item "-days 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).
+.IP "\fB\-reqexts\fR \fIname\fR" 4
+.IX Item "-reqexts name"
+Name of section in OpenSSL config file defining certificate request extensions.
+If the \fB\-csr\fR option is present, these extensions augment the extensions
+contained the given PKCS#10 CSR, overriding any extensions with same OIDs.
+.IP "\fB\-sans\fR \fIspec\fR" 4
+.IX Item "-sans 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 \fB\-reqexts\fR.
+.IP \fB\-san_nodefault\fR 4
+.IX Item "-san_nodefault"
+When Subject Alternative Names are not given via \fB\-sans\fR
+nor defined via \fB\-reqexts\fR,
+they are copied by default from the reference certificate (see \fB\-oldcert\fR).
+This can be disabled by giving the \fB\-san_nodefault\fR option.
+.IP "\fB\-policies\fR \fIname\fR" 4
+.IX Item "-policies name"
+Name of section in OpenSSL config file defining policies to be set
+as certificate request extension.
+This option cannot be used together with \fB\-policy_oids\fR.
+.IP "\fB\-policy_oids\fR \fInames\fR" 4
+.IX Item "-policy_oids 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 \fB\-policies\fR.
+.IP \fB\-policy_oids_critical\fR 4
+.IX Item "-policy_oids_critical"
+Flag the policies given with \fB\-policy_oids\fR as critical.
+.IP "\fB\-popo\fR \fInumber\fR" 4
+.IX Item "-popo number"
+Proof-of-possession (POPO) method to use for IR/CR/KUR; values: \f(CW\-1\fR..<2> where
+\&\f(CW\-1\fR = NONE, \f(CW0\fR = RAVERIFIED, \f(CW1\fR = SIGNATURE (default), \f(CW2\fR = KEYENC.
+.Sp
+Note that a signature-based POPO can only be produced if a private key
+is provided via the \fB\-newkey\fR or \fB\-key\fR options.
+.IP "\fB\-csr\fR \fIfilename\fR" 4
+.IX Item "-csr filename"
+PKCS#10 CSR in PEM or DER format containing a certificate request.
+With \fB\-cmd\fR \fIp10cr\fR it is used directly in a legacy P10CR message.
+.Sp
+When used with \fB\-cmd\fR \fIir\fR, \fIcr\fR, or \fIkur\fR,
+it is transformed into the respective regular CMP request.
+In this case, a private key must be provided (with \fB\-newkey\fR or \fB\-key\fR)
+for the proof of possession (unless \fB\-popo\fR \fI\-1\fR or \fB\-popo\fR \fI0\fR is used)
+and the respective public key is placed in the certification request
+(rather than taking over the public key contained in the PKCS#10 CSR).
+.Sp
+PKCS#10 CSR input may also be used with \fB\-cmd\fR \fIrr\fR
+to specify the certificate to be revoked
+via the included subject name and public key.
+.IP "\fB\-out_trusted\fR \fIfilenames\fR|\fIuris\fR" 4
+.IX Item "-out_trusted filenames|uris"
+Trusted certificate(s) to use for validating the newly enrolled certificate.
+During this verification, any certificate status checking is disabled.
+.Sp
+Multiple sources may be given, separated by commas and/or whitespace
+(where in the latter case the whole argument must be enclosed in "...").
+Each source may contain multiple certificates.
+.Sp
+The certificate verification options
+\&\fB\-verify_hostname\fR, \fB\-verify_ip\fR, and \fB\-verify_email\fR
+only affect the certificate verification enabled via this option.
+.IP \fB\-implicit_confirm\fR 4
+.IX Item "-implicit_confirm"
+Request implicit confirmation of newly enrolled certificates.
+.IP \fB\-disable_confirm\fR 4
+.IX Item "-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.
+\&\fBWARNING:\fR This leads to behavior violating RFC 4210.
+.IP "\fB\-certout\fR \fIfilename\fR" 4
+.IX Item "-certout filename"
+The file where the newly enrolled certificate should be saved.
+.IP "\fB\-chainout\fR \fIfilename\fR" 4
+.IX Item "-chainout filename"
+The file where the chain of the newly enrolled certificate should be saved.
+.SS "Certificate enrollment and revocation options"
+.IX Subsection "Certificate enrollment and revocation options"
+.IP "\fB\-oldcert\fR \fIfilename\fR|\fIuri\fR" 4
+.IX Item "-oldcert filename|uri"
+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.
+For KUR the certificate to be updated defaults to \fB\-cert\fR,
+and the resulting certificate is called \fIreference certificate\fR.
+For RR the certificate to be revoked can also be specified using \fB\-csr\fR.
+.Sp
+The reference certificate, if any, is also used for
+deriving default subject DN and Subject Alternative Names and the
+default issuer entry in the requested certificate template of an IR/CR/KUR.
+Its public key is used as a fallback in the template of certification requests.
+Its subject is used as sender of outgoing messages if \fB\-cert\fR is not given.
+Its issuer is used as default recipient in CMP message headers
+if neither \fB\-recipient\fR, \fB\-srvcert\fR, nor \fB\-issuer\fR is given.
+.IP "\fB\-revreason\fR \fInumber\fR" 4
+.IX Item "-revreason number"
+Set CRLReason to be included in revocation request (RR); values: \f(CW0\fR..\f(CW10\fR
+or \f(CW\-1\fR for none (which is the default).
+.Sp
+Reason numbers defined in RFC 5280 are:
+.Sp
+.Vb 10
+\& 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)
+\& }
+.Ve
+.SS "Message transfer options"
+.IX Subsection "Message transfer options"
+.IP "\fB\-server\fR \fI[http[s]://][userinfo@]host[:port][/path][?query][#fragment]\fR" 4
+.IX Item "-server [http[s]://][userinfo@]host[:port][/path][?query][#fragment]"
+The DNS hostname or IP address and optionally port
+of the CMP server to connect to using HTTP(S).
+This option excludes \fI\-port\fR and \fI\-use_mock_srv\fR.
+It is ignored if \fI\-rspin\fR is given with enough filename arguments.
+.Sp
+The scheme \f(CW\*(C`https\*(C'\fR may be given only if the \fB\-tls_used\fR option is used.
+In this case the default port is 443, else 80.
+The optional userinfo and fragment components are ignored.
+Any given query component is handled as part of the path component.
+If a path is included it provides the default value for the \fB\-path\fR option.
+.IP "\fB\-proxy\fR \fI[http[s]://][userinfo@]host[:port][/path][?query][#fragment]\fR" 4
+.IX Item "-proxy [http[s]://][userinfo@]host[:port][/path][?query][#fragment]"
+The HTTP(S) proxy server to use for reaching the CMP server unless \fB\-no_proxy\fR
+applies, see below.
+The proxy port defaults to 80 or 443 if the scheme is \f(CW\*(C`https\*(C'\fR; apart from that
+the optional \f(CW\*(C`http://\*(C'\fR or \f(CW\*(C`https://\*(C'\fR prefix is ignored (note that TLS may be
+selected by \fB\-tls_used\fR), as well as any path, userinfo, and query, and fragment
+components.
+Defaults to the environment variable \f(CW\*(C`http_proxy\*(C'\fR if set, else \f(CW\*(C`HTTP_PROXY\*(C'\fR
+in case no TLS is used, otherwise \f(CW\*(C`https_proxy\*(C'\fR if set, else \f(CW\*(C`HTTPS_PROXY\*(C'\fR.
+This option is ignored if \fI\-server\fR is not given.
+.IP "\fB\-no_proxy\fR \fIaddresses\fR" 4
+.IX Item "-no_proxy addresses"
+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 \f(CW\*(C`no_proxy\*(C'\fR if set, else \f(CW\*(C`NO_PROXY\*(C'\fR.
+This option is ignored if \fI\-server\fR is not given.
+.IP "\fB\-recipient\fR \fIname\fR" 4
+.IX Item "-recipient name"
+Distinguished Name (DN) to use in the recipient field of CMP request message
+headers, i.e., the CMP server (usually the addressed CA).
+.Sp
+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 \fB\-srvcert\fR option,
+the \fB\-issuer\fR option,
+the issuer of the certificate given with the \fB\-oldcert\fR option,
+the issuer of the CMP client certificate (\fB\-cert\fR option),
+as far as any of those is present, else the NULL-DN as last resort.
+.Sp
+The argument must be formatted as \fI/type0=value0/type1=value1/type2=...\fR.
+For details see the description of the \fB\-subject\fR option.
+.IP "\fB\-path\fR \fIremote_path\fR" 4
+.IX Item "-path remote_path"
+HTTP path at the CMP server (aka CMP alias) to use for POST requests.
+Defaults to any path given with \fB\-server\fR, else \f(CW"/"\fR.
+.IP "\fB\-keep_alive\fR \fIvalue\fR" 4
+.IX Item "-keep_alive 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.
+.IP "\fB\-msg_timeout\fR \fIseconds\fR" 4
+.IX Item "-msg_timeout seconds"
+Number of seconds a CMP request-response message round trip
+is allowed to take before a timeout error is returned.
+A value <= 0 means no limitation (waiting indefinitely).
+Default is to use the \fB\-total_timeout\fR setting.
+.IP "\fB\-total_timeout\fR \fIseconds\fR" 4
+.IX Item "-total_timeout seconds"
+Maximum total number of seconds a transaction may take,
+including polling etc.
+A value <= 0 means no limitation (waiting indefinitely).
+Default is 0.
+.SS "Server authentication options"
+.IX Subsection "Server authentication options"
+.IP "\fB\-trusted\fR \fIfilenames\fR|\fIuris\fR" 4
+.IX Item "-trusted filenames|uris"
+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 \fB\-srvcert\fR option is given as well.
+It provides more flexibility than \fB\-srvcert\fR 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.
+.Sp
+If none of \fB\-trusted\fR, \fB\-srvcert\fR, and \fB\-secret\fR is given, message validation
+errors will be thrown unless \fB\-unprotected_errors\fR permits an exception.
+.Sp
+Multiple sources may be given, separated by commas and/or whitespace
+(where in the latter case the whole argument must be enclosed in "...").
+Each source may contain multiple certificates.
+.Sp
+The certificate verification options
+\&\fB\-verify_hostname\fR, \fB\-verify_ip\fR, and \fB\-verify_email\fR
+have no effect on the certificate verification enabled via this option.
+.IP "\fB\-untrusted\fR \fIfilenames\fR|\fIuris\fR" 4
+.IX Item "-untrusted filenames|uris"
+Non-trusted intermediate CA certificate(s).
+Any extra certificates given with the \fB\-cert\fR option are appended to it.
+All these certificates may be useful for cert path construction
+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)
+as well as for chain building
+when validating server certificates (checking signature-based
+CMP message protection) and when validating newly enrolled certificates.
+.Sp
+Multiple filenames or URLs may be given, separated by commas and/or whitespace.
+Each source may contain multiple certificates.
+.IP "\fB\-srvcert\fR \fIfilename\fR|\fIuri\fR" 4
+.IX Item "-srvcert filename|uri"
+The specific CMP server certificate to expect and directly trust (even if it is
+expired) when verifying signature-based protection of CMP response messages.
+This pins the accepted server and results in ignoring the \fB\-trusted\fR option.
+.Sp
+If set, the subject of the certificate is also used
+as default value for the recipient of CMP requests
+and as default value for the expected sender of CMP responses.
+.IP "\fB\-expect_sender\fR \fIname\fR" 4
+.IX Item "-expect_sender name"
+Distinguished Name (DN) expected in the sender field of incoming CMP messages.
+Defaults to the subject DN of the pinned \fB\-srvcert\fR, if any.
+.Sp
+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 \fB\-srvcert\fR,
+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.
+.Sp
+The argument must be formatted as \fI/type0=value0/type1=value1/type2=...\fR.
+For details see the description of the \fB\-subject\fR option.
+.IP \fB\-ignore_keyusage\fR 4
+.IX Item "-ignore_keyusage"
+Ignore key usage restrictions in CMP signer certificates when validating
+signature-based protection of incoming CMP messages.
+By default, \f(CW\*(C`digitalSignature\*(C'\fR must be allowed by CMP signer certificates.
+.IP \fB\-unprotected_errors\fR 4
+.IX Item "-unprotected_errors"
+Accept missing or invalid protection of negative responses from the server.
+This applies to the following message types and contents:
+.RS 4
+.IP \(bu 4
+error messages
+.IP \(bu 4
+negative certificate responses (IP/CP/KUP)
+.IP \(bu 4
+negative revocation responses (RP)
+.IP \(bu 4
+negative PKIConf messages
+.RE
+.RS 4
+.Sp
+\&\fBWARNING:\fR This setting leads to unspecified behavior and it is meant
+exclusively to allow interoperability with server implementations violating
+RFC 4210, e.g.:
+.IP \(bu 4
+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."
+.IP \(bu 4
+section 5.3.21 is clear on ErrMsgContent: "The CA MUST always sign it
+with a signature key."
+.IP \(bu 4
+appendix D.4 shows PKIConf message having protection
+.RE
+.RS 4
+.RE
+.IP "\fB\-extracertsout\fR \fIfilename\fR" 4
+.IX Item "-extracertsout filename"
+The file where to save all certificates contained in the extraCerts field
+of the last received response message (except for pollRep and PKIConf).
+.IP "\fB\-cacertsout\fR \fIfilename\fR" 4
+.IX Item "-cacertsout filename"
+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.
+.SS "Client authentication options"
+.IX Subsection "Client authentication options"
+.IP "\fB\-ref\fR \fIvalue\fR" 4
+.IX Item "-ref value"
+Reference number/string/value to use as fallback senderKID; this is required
+if no sender name can be determined from the \fB\-cert\fR or <\-subject> options and
+is typically used when authenticating with pre-shared key (password-based MAC).
+.IP "\fB\-secret\fR \fIarg\fR" 4
+.IX Item "-secret arg"
+Provides the source of a secret value to use with MAC-based message protection.
+This takes precedence over the \fB\-cert\fR and \fB\-key\fR options.
+The secret is used for creating MAC-based protection of outgoing messages
+and for validating incoming messages that have MAC-based protection.
+The algorithm used by default is Password-Based Message Authentication Code (PBM)
+as defined in RFC 4210 section 5.1.3.1.
+.Sp
+For more information about the format of \fIarg\fR see
+\&\fBopenssl\-passphrase\-options\fR\|(1).
+.IP "\fB\-cert\fR \fIfilename\fR|\fIuri\fR" 4
+.IX Item "-cert filename|uri"
+The client's current CMP signer certificate.
+Requires the corresponding key to be given with \fB\-key\fR.
+.Sp
+The subject and the public key contained in this certificate
+serve as fallback values in the certificate template of IR/CR/KUR messages.
+.Sp
+The subject of this certificate will be used as sender of outgoing CMP messages,
+while the subject of \fB\-oldcert\fR or \fB\-subjectName\fR may provide fallback values.
+.Sp
+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 messages.
+.Sp
+When performing signature-based message protection,
+this "protection certificate", also called "signer certificate",
+will be included first in the extraCerts field of outgoing messages
+and the signature is done with the corresponding key.
+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.
+.Sp
+For Key Update Request (KUR) messages this is also used as
+the certificate to be updated if the \fB\-oldcert\fR option is not given.
+.Sp
+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.
+.IP "\fB\-own_trusted\fR \fIfilenames\fR|\fIuris\fR" 4
+.IX Item "-own_trusted filenames|uris"
+If this list of certificates is provided then the chain built for
+the client-side CMP signer certificate given with the \fB\-cert\fR option
+is verified using the given certificates as trust anchors.
+.Sp
+Multiple sources may be given, separated by commas and/or whitespace
+(where in the latter case the whole argument must be enclosed in "...").
+Each source may contain multiple certificates.
+.Sp
+The certificate verification options
+\&\fB\-verify_hostname\fR, \fB\-verify_ip\fR, and \fB\-verify_email\fR
+have no effect on the certificate verification enabled via this option.
+.IP "\fB\-key\fR \fIfilename\fR|\fIuri\fR" 4
+.IX Item "-key filename|uri"
+The corresponding private key file for the client's current certificate given in
+the \fB\-cert\fR option.
+This will be used for signature-based message protection unless the \fB\-secret\fR
+option indicating MAC-based protection or \fB\-unprotected_requests\fR is given.
+.Sp
+It is also used as a fallback for the \fB\-newkey\fR option with IR/CR/KUR messages.
+.IP "\fB\-keypass\fR \fIarg\fR" 4
+.IX Item "-keypass arg"
+Pass phrase source for the private key given with the \fB\-key\fR option.
+Also used for \fB\-cert\fR and \fB\-oldcert\fR in case it is an encrypted PKCS#12 file.
+If not given here, the password will be prompted for if needed.
+.Sp
+For more information about the format of \fIarg\fR see
+\&\fBopenssl\-passphrase\-options\fR\|(1).
+.IP "\fB\-digest\fR \fIname\fR" 4
+.IX Item "-digest name"
+Specifies name of supported digest to use in RFC 4210's MSG_SIG_ALG
+and as the one-way function (OWF) in \f(CW\*(C`MSG_MAC_ALG\*(C'\fR.
+If applicable, this is used for message protection and
+proof-of-possession (POPO) signatures.
+To see the list of supported digests, use \f(CW\*(C`openssl list \-digest\-commands\*(C'\fR.
+Defaults to \f(CW\*(C`sha256\*(C'\fR.
+.IP "\fB\-mac\fR \fIname\fR" 4
+.IX Item "-mac name"
+Specifies the name of the MAC algorithm in \f(CW\*(C`MSG_MAC_ALG\*(C'\fR.
+To get the names of supported MAC algorithms use \f(CW\*(C`openssl list \-mac\-algorithms\*(C'\fR
+and possibly combine such a name with the name of a supported digest algorithm,
+e.g., hmacWithSHA256.
+Defaults to \f(CW\*(C`hmac\-sha1\*(C'\fR as per RFC 4210.
+.IP "\fB\-extracerts\fR \fIfilenames\fR|\fIuris\fR" 4
+.IX Item "-extracerts filenames|uris"
+Certificates to append in the extraCerts field when sending messages.
+They can be used as the default CMP signer certificate chain to include.
+.Sp
+Multiple sources may be given, separated by commas and/or whitespace
+(where in the latter case the whole argument must be enclosed in "...").
+Each source may contain multiple certificates.
+.IP \fB\-unprotected_requests\fR 4
+.IX Item "-unprotected_requests"
+Send request messages without CMP-level protection.
+.SS "Credentials format options"
+.IX Subsection "Credentials format options"
+.IP "\fB\-certform\fR \fIPEM|DER\fR" 4
+.IX Item "-certform PEM|DER"
+File format to use when saving a certificate to a file.
+Default value is PEM.
+.IP "\fB\-keyform\fR \fIPEM|DER|P12|ENGINE\fR" 4
+.IX Item "-keyform PEM|DER|P12|ENGINE"
+The format of the key input; unspecified by default.
+See "Format Options" in \fBopenssl\fR\|(1) for details.
+.IP "\fB\-otherpass\fR \fIarg\fR" 4
+.IX Item "-otherpass arg"
+Pass phrase source for certificate given with the \fB\-trusted\fR, \fB\-untrusted\fR,
+\&\fB\-own_trusted\fR, \fB\-srvcert\fR, \fB\-out_trusted\fR, \fB\-extracerts\fR,
+\&\fB\-srv_trusted\fR, \fB\-srv_untrusted\fR, \fB\-rsp_extracerts\fR, \fB\-rsp_capubs\fR,
+\&\fB\-tls_extra\fR, and \fB\-tls_trusted\fR options.
+If not given here, the password will be prompted for if needed.
+.Sp
+For more information about the format of \fIarg\fR see
+\&\fBopenssl\-passphrase\-options\fR\|(1).
+.IP "\fB\-engine\fR \fIid\fR" 4
+.IX Item "-engine id"
+See "Engine Options" in \fBopenssl\fR\|(1).
+This option is deprecated.
+.Sp
+As an alternative to using this combination:
+.Sp
+.Vb 1
+\& \-engine {engineid} \-key {keyid} \-keyform ENGINE
+.Ve
+.Sp
+\&... it's also possible to just give the key ID in URI form to \fB\-key\fR,
+like this:
+.Sp
+.Vb 1
+\& \-key org.openssl.engine:{engineid}:{keyid}
+.Ve
+.Sp
+This applies to all options specifying keys: \fB\-key\fR, \fB\-newkey\fR, and
+\&\fB\-tls_key\fR.
+.SS "Provider options"
+.IX Subsection "Provider options"
+.IP "\fB\-provider\fR \fIname\fR" 4
+.IX Item "-provider name"
+.PD 0
+.IP "\fB\-provider\-path\fR \fIpath\fR" 4
+.IX Item "-provider-path path"
+.IP "\fB\-propquery\fR \fIpropq\fR" 4
+.IX Item "-propquery propq"
+.PD
+See "Provider Options" in \fBopenssl\fR\|(1), \fBprovider\fR\|(7), and \fBproperty\fR\|(7).
+.SS "Random state options"
+.IX Subsection "Random state options"
+.IP "\fB\-rand\fR \fIfiles\fR, \fB\-writerand\fR \fIfile\fR" 4
+.IX Item "-rand files, -writerand file"
+See "Random State Options" in \fBopenssl\fR\|(1) for details.
+.SS "TLS connection options"
+.IX Subsection "TLS connection options"
+.IP \fB\-tls_used\fR 4
+.IX Item "-tls_used"
+Enable using TLS (even when other TLS-related options are not set)
+for message exchange with CMP server via HTTP.
+This option is not supported with the \fI\-port\fR option.
+It is ignored if the \fI\-server\fR option is not given or \fI\-use_mock_srv\fR is given
+or \fI\-rspin\fR is given with enough filename arguments.
+.Sp
+The following TLS-related options are ignored
+if \fB\-tls_used\fR is not given or does not take effect.
+.IP "\fB\-tls_cert\fR \fIfilename\fR|\fIuri\fR" 4
+.IX Item "-tls_cert filename|uri"
+Client's TLS certificate.
+If the source includes further certs they are used (along with \fB\-untrusted\fR
+certs) for constructing the client cert chain provided to the TLS server.
+.IP "\fB\-tls_key\fR \fIfilename\fR|\fIuri\fR" 4
+.IX Item "-tls_key filename|uri"
+Private key for the client's TLS certificate.
+.IP "\fB\-tls_keypass\fR \fIarg\fR" 4
+.IX Item "-tls_keypass arg"
+Pass phrase source for client's private TLS key \fB\-tls_key\fR.
+Also used for \fB\-tls_cert\fR in case it is an encrypted PKCS#12 file.
+If not given here, the password will be prompted for if needed.
+.Sp
+For more information about the format of \fIarg\fR see
+\&\fBopenssl\-passphrase\-options\fR\|(1).
+.IP "\fB\-tls_extra\fR \fIfilenames\fR|\fIuris\fR" 4
+.IX Item "-tls_extra filenames|uris"
+Extra certificates to provide to TLS server during TLS handshake
+.IP "\fB\-tls_trusted\fR \fIfilenames\fR|\fIuris\fR" 4
+.IX Item "-tls_trusted filenames|uris"
+Trusted certificate(s) to use for validating the TLS server certificate.
+This implies hostname validation.
+.Sp
+Multiple sources may be given, separated by commas and/or whitespace
+(where in the latter case the whole argument must be enclosed in "...").
+Each source may contain multiple certificates.
+.Sp
+The certificate verification options
+\&\fB\-verify_hostname\fR, \fB\-verify_ip\fR, and \fB\-verify_email\fR
+have no effect on the certificate verification enabled via this option.
+.IP "\fB\-tls_host\fR \fIname\fR" 4
+.IX Item "-tls_host name"
+Address to be checked during hostname validation.
+This may be a DNS name or an IP address.
+If not given it defaults to the \fB\-server\fR address.
+.SS "Client-side debugging options"
+.IX Subsection "Client-side debugging options"
+.IP \fB\-batch\fR 4
+.IX Item "-batch"
+Do not interactively prompt for input, for instance when a password is needed.
+This can be useful for batch processing and testing.
+.IP "\fB\-repeat\fR \fInumber\fR" 4
+.IX Item "-repeat number"
+Invoke the command the given positive number of times with the same parameters.
+Default is one invocation.
+.IP "\fB\-reqin\fR \fIfilenames\fR" 4
+.IX Item "-reqin filenames"
+Take the sequence of CMP requests to send to the server from the given file(s)
+rather than from the sequence of requests produced internally.
+.Sp
+This option is ignored if the \fB\-rspin\fR option is given
+because in the latter case no requests are actually sent.
+.Sp
+Multiple filenames may be given, separated by commas and/or whitespace
+(where in the latter case the whole argument must be enclosed in "...").
+.Sp
+The files are read as far as needed to complete the transaction
+and filenames have been provided. If more requests are needed,
+the remaining ones are taken from the items at the respective position
+in the sequence of requests produced internally.
+.Sp
+The client needs to update the recipNonce field in the given requests (except
+for the first one) in order to satisfy the checks to be performed by the server.
+This causes re-protection (if protecting requests is required).
+.IP \fB\-reqin_new_tid\fR 4
+.IX Item "-reqin_new_tid"
+Use a fresh transactionID for CMP request messages read using \fB\-reqin\fR,
+which causes their reprotection (if protecting requests is required).
+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.
+.IP "\fB\-reqout\fR \fIfilenames\fR" 4
+.IX Item "-reqout filenames"
+Save the sequence of CMP requests created by the client to the given file(s).
+These requests are not sent to the server if the \fB\-reqin\fR option is used, too.
+.Sp
+Multiple filenames may be given, separated by commas and/or whitespace.
+.Sp
+Files are written as far as needed to save the transaction
+and filenames have been provided.
+If the transaction contains more requests, the remaining ones are not saved.
+.IP "\fB\-rspin\fR \fIfilenames\fR" 4
+.IX Item "-rspin filenames"
+Process the sequence of CMP responses provided in the given file(s),
+not contacting any given server,
+as long as enough filenames are provided to complete the transaction.
+.Sp
+Multiple filenames may be given, separated by commas and/or whitespace.
+.Sp
+Any server specified via the \fI\-server\fR or \fI\-use_mock_srv\fR options is contacted
+only if more responses are needed to complete the transaction.
+In this case the transaction will fail
+unless the server has been prepared to continue the already started transaction.
+.IP "\fB\-rspout\fR \fIfilenames\fR" 4
+.IX Item "-rspout filenames"
+Save the sequence of actually used CMP responses to the given file(s).
+These have been received from the server unless \fB\-rspin\fR takes effect.
+.Sp
+Multiple filenames may be given, separated by commas and/or whitespace.
+.Sp
+Files are written as far as needed to save the responses
+contained in the transaction and filenames have been provided.
+If the transaction contains more responses, the remaining ones are not saved.
+.IP \fB\-use_mock_srv\fR 4
+.IX Item "-use_mock_srv"
+Test the client using the internal CMP server mock-up at API level,
+bypassing socket-based transfer via HTTP.
+This excludes the \fB\-server\fR and \fB\-port\fR options.
+.SS "Mock server options"
+.IX Subsection "Mock server options"
+.IP "\fB\-port\fR \fInumber\fR" 4
+.IX Item "-port number"
+Act as HTTP-based CMP server mock-up listening on the given port.
+This excludes the \fB\-server\fR and \fB\-use_mock_srv\fR options.
+The \fB\-rspin\fR, \fB\-rspout\fR, \fB\-reqin\fR, and \fB\-reqout\fR options
+so far are not supported in this mode.
+.IP "\fB\-max_msgs\fR \fInumber\fR" 4
+.IX Item "-max_msgs number"
+Maximum number of CMP (request) messages the CMP HTTP server mock-up
+should handle, which must be nonnegative.
+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.
+.IP "\fB\-srv_ref\fR \fIvalue\fR" 4
+.IX Item "-srv_ref value"
+Reference value to use as senderKID of server in case no \fB\-srv_cert\fR is given.
+.IP "\fB\-srv_secret\fR \fIarg\fR" 4
+.IX Item "-srv_secret arg"
+Password source for server authentication with a pre-shared key (secret).
+.IP "\fB\-srv_cert\fR \fIfilename\fR|\fIuri\fR" 4
+.IX Item "-srv_cert filename|uri"
+Certificate of the server.
+.IP "\fB\-srv_key\fR \fIfilename\fR|\fIuri\fR" 4
+.IX Item "-srv_key filename|uri"
+Private key used by the server for signing messages.
+.IP "\fB\-srv_keypass\fR \fIarg\fR" 4
+.IX Item "-srv_keypass arg"
+Server private key (and cert) file pass phrase source.
+.IP "\fB\-srv_trusted\fR \fIfilenames\fR|\fIuris\fR" 4
+.IX Item "-srv_trusted filenames|uris"
+Trusted certificates for client authentication.
+.Sp
+The certificate verification options
+\&\fB\-verify_hostname\fR, \fB\-verify_ip\fR, and \fB\-verify_email\fR
+have no effect on the certificate verification enabled via this option.
+.IP "\fB\-srv_untrusted\fR \fIfilenames\fR|\fIuris\fR" 4
+.IX Item "-srv_untrusted filenames|uris"
+Intermediate CA certs that may be useful when validating client certificates.
+.IP "\fB\-rsp_cert\fR \fIfilename\fR|\fIuri\fR" 4
+.IX Item "-rsp_cert filename|uri"
+Certificate to be returned as mock enrollment result.
+.IP "\fB\-rsp_extracerts\fR \fIfilenames\fR|\fIuris\fR" 4
+.IX Item "-rsp_extracerts filenames|uris"
+Extra certificates to be included in mock certification responses.
+.IP "\fB\-rsp_capubs\fR \fIfilenames\fR|\fIuris\fR" 4
+.IX Item "-rsp_capubs filenames|uris"
+CA certificates to be included in mock Initialization Response (IP) message.
+.IP "\fB\-poll_count\fR \fInumber\fR" 4
+.IX Item "-poll_count number"
+Number of times the client must poll before receiving a certificate.
+.IP "\fB\-check_after\fR \fInumber\fR" 4
+.IX Item "-check_after number"
+The checkAfter value (number of seconds to wait) to include in poll response.
+.IP \fB\-grant_implicitconf\fR 4
+.IX Item "-grant_implicitconf"
+Grant implicit confirmation of newly enrolled certificate.
+.IP "\fB\-pkistatus\fR \fInumber\fR" 4
+.IX Item "-pkistatus number"
+PKIStatus to be included in server response.
+Valid range is 0 (accepted) .. 6 (keyUpdateWarning).
+.IP "\fB\-failure\fR \fInumber\fR" 4
+.IX Item "-failure number"
+A single failure info bit number to be included in server response.
+Valid range is 0 (badAlg) .. 26 (duplicateCertReq).
+.IP "\fB\-failurebits\fR \fInumber\fR Number representing failure bits to be included in server response. Valid range is 0 .. 2^27 \- 1." 4
+.IX Item "-failurebits number Number representing failure bits to be included in server response. Valid range is 0 .. 2^27 - 1."
+.PD 0
+.IP "\fB\-statusstring\fR \fIarg\fR" 4
+.IX Item "-statusstring arg"
+.PD
+Text to be included as status string in server response.
+.IP \fB\-send_error\fR 4
+.IX Item "-send_error"
+Force server to reply with error message.
+.IP \fB\-send_unprotected\fR 4
+.IX Item "-send_unprotected"
+Send response messages without CMP-level protection.
+.IP \fB\-send_unprot_err\fR 4
+.IX Item "-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.
+.IP \fB\-accept_unprotected\fR 4
+.IX Item "-accept_unprotected"
+Accept missing or invalid protection of requests.
+.IP \fB\-accept_unprot_err\fR 4
+.IX Item "-accept_unprot_err"
+Accept unprotected error messages from client.
+So far this has no effect because the server does not accept any error messages.
+.IP \fB\-accept_raverified\fR 4
+.IX Item "-accept_raverified"
+Accept RAVERIFED as proof of possession (POPO).
+.SS "Certificate verification options, for both CMP and TLS"
+.IX Subsection "Certificate verification options, for both CMP and TLS"
+.IP "\fB\-allow_proxy_certs\fR, \fB\-attime\fR, \fB\-no_check_time\fR, \fB\-check_ss_sig\fR, \fB\-crl_check\fR, \fB\-crl_check_all\fR, \fB\-explicit_policy\fR, \fB\-extended_crl\fR, \fB\-ignore_critical\fR, \fB\-inhibit_any\fR, \fB\-inhibit_map\fR, \fB\-no_alt_chains\fR, \fB\-partial_chain\fR, \fB\-policy\fR, \fB\-policy_check\fR, \fB\-policy_print\fR, \fB\-purpose\fR, \fB\-suiteB_128\fR, \fB\-suiteB_128_only\fR, \fB\-suiteB_192\fR, \fB\-trusted_first\fR, \fB\-use_deltas\fR, \fB\-auth_level\fR, \fB\-verify_depth\fR, \fB\-verify_email\fR, \fB\-verify_hostname\fR, \fB\-verify_ip\fR, \fB\-verify_name\fR, \fB\-x509_strict\fR \fB\-issuer_checks\fR" 4
+.IX Item "-allow_proxy_certs, -attime, -no_check_time, -check_ss_sig, -crl_check, -crl_check_all, -explicit_policy, -extended_crl, -ignore_critical, -inhibit_any, -inhibit_map, -no_alt_chains, -partial_chain, -policy, -policy_check, -policy_print, -purpose, -suiteB_128, -suiteB_128_only, -suiteB_192, -trusted_first, -use_deltas, -auth_level, -verify_depth, -verify_email, -verify_hostname, -verify_ip, -verify_name, -x509_strict -issuer_checks"
+Set various options of certificate chain verification.
+See "Verification Options" in \fBopenssl\-verification\-options\fR\|(1) for details.
+.Sp
+The certificate verification options
+\&\fB\-verify_hostname\fR, \fB\-verify_ip\fR, and \fB\-verify_email\fR
+only affect the certificate verification enabled via the \fB\-out_trusted\fR option.
+.SH NOTES
+.IX Header "NOTES"
+When a client obtains from a CMP server CA certificates that it is going to
+trust, for instance via the \f(CW\*(C`caPubs\*(C'\fR field of a certificate response,
+authentication of the CMP server is particularly critical.
+So special care must be taken setting up server authentication
+using \fB\-trusted\fR and related options for certificate-based authentication
+or \fB\-secret\fR for MAC-based protection.
+.PP
+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
+\&\fB\-unprotected_errors\fR option, which allows accepting such negative messages.
+.PP
+If OpenSSL was built with trace support enabled
+and the environment variable \fBOPENSSL_TRACE\fR includes \fBHTTP\fR,
+the request and response headers of HTTP transfers are printed.
+.SH EXAMPLES
+.IX Header "EXAMPLES"
+.SS "Simple examples using the default OpenSSL configuration file"
+.IX Subsection "Simple examples using the default OpenSSL configuration file"
+This CMP client implementation comes with demonstrative CMP sections
+in the example configuration file \fIopenssl/apps/openssl.cnf\fR,
+which can be used to interact conveniently with the Insta Demo CA.
+.PP
+In order to enroll an initial certificate from that CA it is sufficient
+to issue the following shell commands.
+.PP
+.Vb 1
+\& export OPENSSL_CONF=/path/to/openssl/apps/openssl.cnf
+.Ve
+.PP
+.Vb 2
+\& openssl genrsa \-out insta.priv.pem
+\& openssl cmp \-section insta
+.Ve
+.PP
+This should produce the file \fIinsta.cert.pem\fR containing a new certificate
+for the private key held in \fIinsta.priv.pem\fR.
+It can be viewed using, e.g.,
+.PP
+.Vb 1
+\& openssl x509 \-noout \-text \-in insta.cert.pem
+.Ve
+.PP
+In case the network setup requires using an HTTP proxy it may be given as usual
+via the environment variable \fBhttp_proxy\fR or via the \fB\-proxy\fR option in the
+configuration file or the CMP command-line argument \fB\-proxy\fR, for example
+.PP
+.Vb 1
+\& \-proxy http://192.168.1.1:8080
+.Ve
+.PP
+In the Insta Demo CA scenario both clients and the server may use the pre-shared
+secret \fIinsta\fR and the reference value \fI3078\fR to authenticate to each other.
+.PP
+Alternatively, CMP messages may be protected in signature-based manner,
+where the trust anchor in this case is \fIinsta.ca.crt\fR
+and the client may use any certificate already obtained from that CA,
+as specified in the \fB[signature]\fR section of the example configuration.
+This can be used in combination with the \fB[insta]\fR section simply by
+.PP
+.Vb 1
+\& openssl cmp \-section insta,signature
+.Ve
+.PP
+By default the CMP IR message type is used, yet CR works equally here.
+This may be specified directly at the command line:
+.PP
+.Vb 1
+\& openssl cmp \-section insta \-cmd cr
+.Ve
+.PP
+or by referencing in addition the \fB[cr]\fR section of the example configuration:
+.PP
+.Vb 1
+\& openssl cmp \-section insta,cr
+.Ve
+.PP
+In order to update the enrolled certificate one may call
+.PP
+.Vb 1
+\& openssl cmp \-section insta,kur
+.Ve
+.PP
+using MAC-based protection with PBM or
+.PP
+.Vb 1
+\& openssl cmp \-section insta,kur,signature
+.Ve
+.PP
+using signature-based protection.
+.PP
+In a similar way any previously enrolled certificate may be revoked by
+.PP
+.Vb 1
+\& openssl cmp \-section insta,rr \-trusted insta.ca.crt
+.Ve
+.PP
+or
+.PP
+.Vb 1
+\& openssl cmp \-section insta,rr,signature
+.Ve
+.PP
+Many more options can be given in the configuration file
+and/or on the command line.
+For instance, the \fB\-reqexts\fR CLI option may refer to a section in the
+configuration file defining X.509 extensions to use in certificate requests,
+such as \f(CW\*(C`v3_req\*(C'\fR in \fIopenssl/apps/openssl.cnf\fR:
+.PP
+.Vb 1
+\& openssl cmp \-section insta,cr \-reqexts v3_req
+.Ve
+.SS "Certificate enrollment"
+.IX Subsection "Certificate enrollment"
+The following examples do not make use of a configuration file at first.
+They assume that a CMP server can be contacted on the local TCP port 80
+and accepts requests under the alias \fI/pkix/\fR.
+.PP
+For enrolling its very first certificate the client generates a client key
+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 \fB\-recipient\fR option
+and save any CA certificates that we may receive in the \f(CW\*(C`capubs.pem\*(C'\fR file.
+.PP
+In below command line usage examples the \f(CW\*(C`\e\*(C'\fR at line ends is used just
+for formatting; each of the command invocations should be on a single line.
+.PP
+.Vb 5
+\& openssl genrsa \-out cl_key.pem
+\& openssl cmp \-cmd ir \-server 127.0.0.1:80/pkix/ \-recipient "/CN=CMPserver" \e
+\& \-ref 1234 \-secret pass:1234\-5678 \e
+\& \-newkey cl_key.pem \-subject "/CN=MyName" \e
+\& \-cacertsout capubs.pem \-certout cl_cert.pem
+.Ve
+.SS "Certificate update"
+.IX Subsection "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 \f(CW\*(C`capubs.pem\*(C'\fR
+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.
+.PP
+.Vb 6
+\& openssl genrsa \-out cl_key_new.pem
+\& openssl cmp \-cmd kur \-server 127.0.0.1:80/pkix/ \e
+\& \-trusted capubs.pem \e
+\& \-cert cl_cert.pem \-key cl_key.pem \e
+\& \-newkey cl_key_new.pem \-certout cl_cert.pem
+\& cp cl_key_new.pem cl_key.pem
+.Ve
+.PP
+This command sequence can be repeated as often as needed.
+.SS "Requesting information from CMP server"
+.IX Subsection "Requesting information from CMP server"
+Requesting "all relevant information" with an empty General Message.
+This prints information about all received ITAV \fBinfoType\fRs to stdout.
+.PP
+.Vb 2
+\& openssl cmp \-cmd genm \-server 127.0.0.1/pkix/ \-recipient "/CN=CMPserver" \e
+\& \-ref 1234 \-secret pass:1234\-5678
+.Ve
+.SS "Using a custom configuration file"
+.IX Subsection "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.
+Therefore, the client offers the possibility to read
+options from sections of the OpenSSL config file, usually called \fIopenssl.cnf\fR.
+The values found there can still be extended and even overridden by any
+subsequently loaded sections and on the command line.
+.PP
+After including in the configuration file the following sections:
+.PP
+.Vb 8
+\& [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
+\&
+\& [init]
+\& recipient = "/CN=CMPserver"
+\& trusted =
+\& cert =
+\& key =
+\& ref = 1234
+\& secret = pass:1234\-5678\-1234\-567
+\& subject = "/CN=MyName"
+\& cacertsout = capubs.pem
+.Ve
+.PP
+the above enrollment transactions reduce to
+.PP
+.Vb 2
+\& openssl cmp \-section cmp,init
+\& openssl cmp \-cmd kur \-newkey cl_key_new.pem
+.Ve
+.PP
+and the above transaction using a general message reduces to
+.PP
+.Vb 1
+\& openssl cmp \-section cmp,init \-cmd genm
+.Ve
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fBopenssl\-genrsa\fR\|(1), \fBopenssl\-ecparam\fR\|(1), \fBopenssl\-list\fR\|(1),
+\&\fBopenssl\-req\fR\|(1), \fBopenssl\-x509\fR\|(1), \fBx509v3_config\fR\|(5)
+.SH HISTORY
+.IX Header "HISTORY"
+The \fBcmp\fR application was added in OpenSSL 3.0.
+.PP
+The \fB\-engine option\fR was deprecated in OpenSSL 3.0.
+.SH COPYRIGHT
+.IX Header "COPYRIGHT"
+Copyright 2007\-2023 The OpenSSL Project Authors. All Rights Reserved.
+.PP
+Licensed under the Apache License 2.0 (the "License"). You may not use
+this file except in compliance with the License. You can obtain a copy
+in the file LICENSE in the source distribution or at
+<https://www.openssl.org/source/license.html>.