rfc-9811

Internet X.509 Public Key Infrastructure -- HTTP Transfer for the Certificate Management Protocol (CMP)

H. Brockhaus, D. von Oheimb, M. Ounsworth, J. Gray
date2025-07 streamIETF areasec wglamps statusPROPOSED STANDARD pages10 canonicalhttps://www.rfc-editor.org/rfc/rfc9811 doi10.17487/RFC9811
This document describes how to layer the Certificate Management Protocol (CMP) over HTTP. It includes the updates to RFC 6712 specified in Section 3 of RFC 9480; these updates introduce CMP URIs using a well-known prefix. It obsoletes RFC 6712; and, together with RFC 9810, it also obsoletes RFC 9480.

obsoletes

Extracted elements (22)

design-rationale §1.2

HTTP/1.0 support was removed in this document (compared to RFC 6712) in accordance with Section 4.1 of BCP 56 (RFC 9205), reflecting updated best practices for building protocols with HTTP.

http, pkix

design-rationale §1

HTTP POST is used exclusively (rather than GET or other methods) because PKI management operations can only be triggered via CMP PKI messages; while tunneling over POST is generally bad practice per BCP 56, HTTP is widely implemented, traverses proxies, and is already prevalent in existing CMP deployments.

http, pkix

design-rationale §1.1

The '/.well-known/cmp' URI prefix was introduced (via RFC 9480) to ease interworking in multi-vendor environments and support PKI management operations defined in the Lightweight CMP Profile.

http, pkix

interoperability-note §4

Implementations based on earlier documents may use the unregistered 'application/pkixcmp-poll' media type; conforming implementations MAY handle this type like 'application/pkixcmp'.

http, pkix

normative-requirement §3.1 MUST

A DER-encoded PKIMessage MUST be sent as the content of an HTTP POST request. The HTTP response status code for a successful request MUST be 200 (OK); other 2xx status codes MUST NOT be used for this purpose.

http, pkix, crypto

normative-requirement §3.4 MUST

Each CMP server supporting HTTP or HTTPS transfer MUST support the use of the path prefix '/.well-known/' as defined in RFC 8615 and the registered name 'cmp'.

http, pkix, registry

normative-requirement §3 SHOULD

HTTP SHOULD be utilized for conveying CMP messages when a reliable transport protocol like TCP is available for direct interaction between two entities.

http, pkix, tcp

normative-requirement §3.5 MUST

If the announced issue was successfully stored in a database or was already present, the answer MUST be an HTTP response with a 201 (Created) status code and empty content. A receiver MUST answer with a suitable 4xx or 5xx error code when a problem occurs.

http, pkix

normative-requirement §3.3 MUST

If the receipt of an HTTP request is not confirmed by receiving an HTTP response, it MUST be assumed that the transferred CMP message was not successfully delivered to its destination.

http, pkix

normative-requirement §3.2 MUST

The Internet media type 'application/pkixcmp' MUST be set in the HTTP 'Content-Type' header field when conveying a PKIMessage.

http, pkix

normative-requirement §3.5 MUST

When pushing announcement messages, PKIMessage structures MUST be sent as the content of an HTTP POST request. The recipient MUST acknowledge receipt with an HTTP response having an appropriate status code and empty content.

http, pkix

normative-requirement §3.1 MUST

Whenever a client receives an HTTP response with a status code in the 2xx, 4xx, or 5xx ranges, it MUST support handling response message content containing a CMP response PKIMessage.

http, pkix

privacy-consideration §5

Unencrypted CMP messages do not contain directly sensitive PKI-endangering information, but an eavesdropper could gather confidential personal, technical, or business-critical information; TLS or VPN protection is recommended to ensure EE privacy.

privacy, pkix, tls

protocol-element §3.5

CMP announcement messages (CA Key Update Announcement [15], Certificate Announcement [16], Revocation Announcement [17], CRL Announcement [18]) may be pushed by a CA via HTTP POST; recipients respond with HTTP status codes only, not CMP responses.

http, pkix

protocol-element §1

CMP over HTTP exclusively uses the POST method for requests, effectively tunneling CMP over HTTP. Other HTTP request methods such as GET are not used because PKI management operations can only be triggered using CMP's PKI messages.

http, pkix

protocol-element §3.4

The CMP well-known URI structure supports the following path patterns: '/.well-known/cmp', '/.well-known/cmp/<operation>', '/.well-known/cmp/p/<name>', and '/.well-known/cmp/p/<name>/<operation>'.

http, pkix

registry §6

IANA updated references for 'application/pkixcmp' in the Media Types registry and CoAP Content-Formats registry, and updated the 'cmp' entry in the Well-Known URIs registry and 'p' in the CMP Well-Known URI Path Segments registry to point to this document.

registry, http, pkix

security-consideration §5

CMP provides inbuilt integrity protection and authentication; however, an eavesdropper may gather confidential information from unencrypted CMP messages. Users should consider HTTP over TLS (RFC 9110) or IPsec VPNs to protect confidentiality and ensure EE privacy.

security, privacy, tls, pkix

security-consideration §5

Storing the target location of an HTTP 301 (Moved Permanently) response could be exploited by a meddler-in-the-middle attacker to permanently block clients from contacting the correct server; Redirection 3xx support should only be enabled after careful security consideration.

security, http

security-consideration §5

There is risk of denial-of-service attacks through resource consumption by opening many connections to an HTTP server; idle connections should be terminated after an appropriate timeout.

security, http

security-consideration §5

Without TLS or HTTP digest protection, there is no integrity protection at the HTTP level; information from HTTP headers should not be used to change transaction state regardless of any authentication mechanism in place.

security, http, tls

wire-format §3.1

PKIMessage structures are DER-encoded per ITU-T X.690 and transmitted as the body of HTTP POST requests with Content-Type 'application/pkixcmp'.

http, pkix, crypto