rfc9811.original | rfc9811.txt | |||
---|---|---|---|---|
LAMPS Working Group H. Brockhaus | Internet Engineering Task Force (IETF) H. Brockhaus | |||
Internet-Draft D. von Oheimb | Request for Comments: 9811 D. von Oheimb | |||
Obsoletes: 6712 9480 (if approved) Siemens | Obsoletes: 6712, 9480 Siemens | |||
Intended status: Standards Track M. Ounsworth | Category: Standards Track M. Ounsworth | |||
Expires: 13 July 2025 J. Gray | ISSN: 2070-1721 J. Gray | |||
Entrust | Entrust | |||
9 January 2025 | July 2025 | |||
Internet X.509 Public Key Infrastructure -- HTTP Transfer for the | Internet X.509 Public Key Infrastructure -- HTTP Transfer for the | |||
Certificate Management Protocol (CMP) | Certificate Management Protocol (CMP) | |||
draft-ietf-lamps-rfc6712bis-10 | ||||
Abstract | Abstract | |||
This document describes how to layer the Certificate Management | This document describes how to layer the Certificate Management | |||
Protocol (CMP) over HTTP. | Protocol (CMP) over HTTP. | |||
It includes the updates to RFC 6712 specified in RFC 9480 Section 3. | It includes the updates to RFC 6712 specified in Section 3 of RFC | |||
These updates introduce CMP URIs using a Well-known prefix. It | 9480; these updates introduce CMP URIs using a well-known prefix. It | |||
obsoletes RFC 6712 and together with I-D.ietf-lamps-rfc4210bis and it | obsoletes RFC 6712; and, together with RFC 9810, it also obsoletes | |||
also obsoletes RFC 9480. | RFC 9480. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on 13 July 2025. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9811. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2025 IETF Trust and the persons identified as the | Copyright (c) 2025 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | ||||
Please review these documents carefully, as they describe your rights | carefully, as they describe your rights and restrictions with respect | |||
and restrictions with respect to this document. Code Components | to this document. Code Components extracted from this document must | |||
extracted from this document must include Revised BSD License text as | include Revised BSD License text as described in Section 4.e of the | |||
described in Section 4.e of the Trust Legal Provisions and are | Trust Legal Provisions and are provided without warranty as described | |||
provided without warranty as described in the Revised BSD License. | in the Revised BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction | |||
1.1. Changes Made by RFC 9480 . . . . . . . . . . . . . . . . 4 | 1.1. Changes Made by RFC 9480 | |||
1.2. Changes Made by This Document . . . . . . . . . . . . . . 4 | 1.2. Changes Made by This Document | |||
2. Conventions Used in This Document . . . . . . . . . . . . . . 4 | 2. Conventions Used in This Document | |||
3. HTTP-Based Protocol . . . . . . . . . . . . . . . . . . . . . 4 | 3. HTTP-Based Protocol | |||
3.1. General Form . . . . . . . . . . . . . . . . . . . . . . 5 | 3.1. General Form | |||
3.2. Media Type . . . . . . . . . . . . . . . . . . . . . . . 5 | 3.2. Media Type | |||
3.3. Communication Workflow . . . . . . . . . . . . . . . . . 5 | 3.3. Communication Workflow | |||
3.4. HTTP Request-URI . . . . . . . . . . . . . . . . . . . . 6 | 3.4. HTTP Request-URI | |||
3.5. Pushing of Announcements . . . . . . . . . . . . . . . . 6 | 3.5. Pushing of Announcements | |||
4. Implementation Considerations . . . . . . . . . . . . . . . . 7 | 4. Implementation Considerations | |||
5. Security Considerations . . . . . . . . . . . . . . . . . . . 8 | 5. Security Considerations | |||
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | 6. IANA Considerations | |||
7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 9 | 7. References | |||
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 7.1. Normative References | |||
8.1. Normative References . . . . . . . . . . . . . . . . . . 9 | 7.2. Informative References | |||
8.2. Informative References . . . . . . . . . . . . . . . . . 10 | Acknowledgements | |||
Appendix A. History of Changes . . . . . . . . . . . . . . . . . 11 | Authors' Addresses | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 13 | ||||
1. Introduction | 1. Introduction | |||
[RFC Editor: please delete: | The Certificate Management Protocol (CMP) [RFC9810] requires a well- | |||
defined transfer mechanism to enable End Entities (EEs), Registration | ||||
During IESG telechat the CMP Updates document was approved on | Authorities (RAs), and Certification Authorities (CAs) to pass | |||
condition that LAMPS provides a RFC6712bis document. Version -00 of | PKIMessage structures between them. | |||
this document shall be identical to RFC 6712 and version -01 | ||||
incorporates the changes specified in CMP Updates Section 3. | ||||
A history of changes is available in Appendix A of this document. | ||||
The authors of this document wish to thank Tomi Kause and Martin | ||||
Peylo, the original authors of RFC 6712, for their work and invite | ||||
them, next to further volunteers, to join the -bis activity as co- | ||||
authors. | ||||
] | ||||
The Certificate Management Protocol (CMP) [I-D.ietf-lamps-rfc4210bis] | ||||
requires a well-defined transfer mechanism to enable End Entities | ||||
(EEs), Registration Authorities (RAs), and Certification Authorities | ||||
(CAs) to pass PKIMessage structures between them. | ||||
The first version of the CMP specification [RFC2510] included a brief | The first version of the CMP specification [RFC2510] included a brief | |||
description of a simple transfer protocol layer on top of TCP. Its | description of a simple transfer protocol layer on top of TCP. Its | |||
features were simple transfer-level error handling and a mechanism to | features were simple transfer-level error handling and a mechanism to | |||
poll for outstanding PKI messages. Additionally, it was mentioned | poll for outstanding PKI messages. Additionally, it was mentioned | |||
that PKI messages could also be conveyed using file-, E-mail-, and | that PKI messages could also be conveyed using file-, email-, and | |||
HTTP-based transfer, but those were not specified in detail. | HTTP-based transfer, but those were not specified in detail. | |||
Since the second version of the CMP specification [RFC4210] | Since the second version of the CMP specification [RFC4210] | |||
incorporated its own polling mechanism and thus the need for a | incorporated its own polling mechanism, the need for a transfer | |||
transfer protocol providing this functionality vanished. The | protocol providing this functionality vanished. The remaining | |||
remaining features CMP requires from its transfer protocols are | features CMP requires from its transfer protocols are connection and | |||
connection and error handling. | error handling. | |||
CMP can benefit from utilizing reliable transport as CMP requires | CMP can benefit from utilizing reliable transport, as it requires | |||
connection and error handling from the transfer protocol. All these | connection and error handling from the transfer protocol. All these | |||
features are covered by HTTP. Additionally, delayed delivery of CMP | features are covered by HTTP. Additionally, delayed delivery of CMP | |||
response messages may be handled at transfer level, regardless of the | response messages may be handled at transfer level, regardless of the | |||
message contents. Since [RFC9480] extends the polling mechanism | message contents. Since [RFC9480] extends the polling mechanism | |||
specified in the second version of CMP [RFC4210] to cover all types | specified in the second version of CMP [RFC4210] to cover all types | |||
of PKI management transactions, delays detected at application level | of PKI management transactions, delays detected at application level | |||
may also be handled within CMP, using pollReq and pollRep messages. | may also be handled within CMP, using pollReq and pollRep messages. | |||
The usage of HTTP (e.g., HTTP/1.1 as specified in [RFC9110] and | The usage of HTTP (e.g., HTTP/1.1 as specified in [RFC9110] and | |||
[RFC9112]) for transferring CMP messages exclusively uses the POST | [RFC9112]) for transferring CMP messages exclusively uses the POST | |||
method for requests, effectively tunneling CMP over HTTP. While this | method for requests, effectively tunneling CMP over HTTP. While this | |||
is generally considered bad practice (see BCP 56 [RFC9205] for best | is generally considered bad practice (see RFC 9205 [BCP56] for best | |||
current practice on building protocols with HTTP) and should not be | current practice on building protocols with HTTP) and should not be | |||
emulated, there are good reasons to do so for transferring CMP. HTTP | emulated, there are good reasons to do so for transferring CMP. HTTP | |||
is used as it is generally easy-to-implement and it is able to | is used as it is generally easy to implement and it is able to | |||
traverse network borders utilizing ubiquitous proxies. Most | traverse network borders utilizing ubiquitous proxies. Most | |||
importantly, HTTP is already commonly used in existing CMP | importantly, HTTP is already commonly used in existing CMP | |||
implementations. Other HTTP request methods, such as GET, are not | implementations. Other HTTP request methods, such as GET, are not | |||
used because PKI management operations can only be triggered using | used because PKI management operations can only be triggered using | |||
CMP's PKI messages, which need to be transferred using a POST | CMP's PKI messages, which need to be transferred using a POST | |||
request. | request. | |||
With its status codes, HTTP provides needed error reporting | With its status codes, HTTP provides needed error reporting | |||
capabilities. General problems on the server side, as well as those | capabilities. General problems on the server side, as well as those | |||
directly caused by the respective request, can be reported to the | directly caused by the respective request, can be reported to the | |||
skipping to change at page 4, line 16 ¶ | skipping to change at line 132 ¶ | |||
identifying transactions spanning over more than just a single | identifying transactions spanning over more than just a single | |||
request/response pair, the statelessness of HTTP is not blocking its | request/response pair, the statelessness of HTTP is not blocking its | |||
usage as the transfer protocol for CMP messages. | usage as the transfer protocol for CMP messages. | |||
1.1. Changes Made by RFC 9480 | 1.1. Changes Made by RFC 9480 | |||
CMP Updates [RFC9480] updated Section 3.6 of [RFC6712], supporting | CMP Updates [RFC9480] updated Section 3.6 of [RFC6712], supporting | |||
the PKI management operations specified in the Lightweight CMP | the PKI management operations specified in the Lightweight CMP | |||
Profile [RFC9483], in the following areas: | Profile [RFC9483], in the following areas: | |||
* Introduce the HTTP URI path prefix '/.well-known/cmp'. | * Introduced the HTTP URI path prefix '/.well-known/cmp'. | |||
* Add options for extending the URI structure with further segments | * Added options for extending the URI structure with further | |||
and define a new protocol registry group to that aim. | segments and defined a new protocol registry group to that aim. | |||
1.2. Changes Made by This Document | 1.2. Changes Made by This Document | |||
This document obsoletes [RFC6712]. It includes the changes specified | This document obsoletes [RFC6712]. It includes the changes specified | |||
in Section 3 of [RFC9480] as described in Section 1.1 of this | in Section 3 of [RFC9480], as described in Section 1.1 of this | |||
document. Additionally, it adds the following changes: | document. Additionally, it adds the following changes: | |||
* Removed the requirement to support HTTP/1.0 [RFC1945] in | * Removed the requirement to support HTTP/1.0 [RFC1945] in | |||
accordance with Section 4.1 of [RFC9205]. | accordance with Section 4.1 of [RFC9205]. | |||
* Implementations MUST forward CMP messages when an HTTP error | * Implementations MUST forward CMP messages when an HTTP error | |||
status code occurs, see Section 3.1. | status code occurs; see Section 3.1. | |||
* Removed Section 3.8 of [RFC6712] as it contains information | * Removed Section 3.8 of [RFC6712] as it contains information | |||
redundant with current HTTP specification. | redundant with current HTTP specification. | |||
2. Conventions Used in This Document | 2. Conventions Used in This Document | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
3. HTTP-Based Protocol | 3. HTTP-Based Protocol | |||
For direct interaction between two entities, where a reliable | For direct interaction between two entities, where a reliable | |||
transport protocol like TCP [RFC9293] is available, HTTP [RFC9110] | transport protocol like TCP [RFC9293] is available, HTTP [RFC9110] | |||
SHOULD be utilized for conveying CMP messages. This specification | SHOULD be utilized for conveying CMP messages. This specification | |||
requires using the POST method (Section 3.1) and the "Content-Type" | requires using the POST method (Section 3.1) and the "Content-Type" | |||
header field (Section 3.2), which are available since HTTP/1.0 | header field (Section 3.2), which are available since HTTP/1.0 | |||
[RFC1945]. | [RFC1945]. | |||
Note: In some situations, CMP requires multiple request/response | Note: In some situations, CMP requires multiple request/response | |||
pairs to perform a PKI management operation. Their affiliation with | pairs to perform a PKI management operation. Their affiliation with | |||
a PKI management operation is indicated by a transaction identifier | a PKI management operation is indicated by a transaction identifier | |||
in the CMP message header (see transactionID described in | in the CMP message header (see transactionID described in | |||
Section 5.1.1 of [I-D.ietf-lamps-rfc4210bis]). For details on how to | Section 5.1.1 of [RFC9810]). For details on how to transfer multiple | |||
transfer multiple requests see Section 4.11 of [RFC9205]. | requests, see Section 4.11 of [RFC9205]. | |||
3.1. General Form | 3.1. General Form | |||
A DER-encoded [ITU.X690.1994] PKIMessage (Section 5.1 of | A DER-encoded [ITU.X690.1994] PKIMessage (Section 5.1 of [RFC9810]) | |||
[I-D.ietf-lamps-rfc4210bis]) MUST be sent as the content of an HTTP | MUST be sent as the content of an HTTP POST request. If this HTTP | |||
POST request. If this HTTP request is successful, the server returns | request is successful, the server returns the CMP response in the | |||
the CMP response in the content of the HTTP response. The HTTP | content of the HTTP response. The HTTP response status code in this | |||
response status code in this case MUST be 200 (OK) status code; other | case MUST be 200 (OK); other Successful 2xx status codes MUST NOT be | |||
Successful 2xx status codes MUST NOT be used for this purpose. HTTP | used for this purpose. HTTP responses to pushed CMP announcement | |||
responses to pushed CMP announcement messages described in | messages described in Section 3.5 utilize the status codes 201 and | |||
Section 3.5 utilize the status codes 201 and 202 to identify whether | 202 to identify whether the received information was processed. | |||
the received information was processed. | ||||
While Redirection 3xx status codes MAY be supported by | While Redirection 3xx status codes MAY be supported by | |||
implementations, clients should only be enabled to automatically | implementations, clients should only be enabled to automatically | |||
follow them after careful consideration of possible security | follow them after careful consideration of possible security | |||
implications. As described in Section 5, 301 (Moved Permanently) | implications. As described in Section 5, the 301 (Moved Permanently) | |||
status code could be misused for permanent denial of service. | status code could be misused for permanent denial of service. | |||
All applicable Client Error 4xx or Server Error 5xx status codes MAY | All applicable Client Error 4xx or Server Error 5xx status codes MAY | |||
be used to inform the client about errors. Whenever a client | be used to inform the client about errors. Whenever a client | |||
receives an HTTP response with a status code in the 2xx, 4xx, or 5xx | receives an HTTP response with a status code in the 2xx, 4xx, or 5xx | |||
ranges, it MUST support handling response message content containing | ranges, it MUST support handling response message content containing | |||
a CMP response PKIMessage. | a CMP response PKIMessage. | |||
3.2. Media Type | 3.2. Media Type | |||
The Internet Media Type "application/pkixcmp" MUST be set in the HTTP | The Internet media type "application/pkixcmp" MUST be set in the HTTP | |||
"Content-Type" header field when conveying a PKIMessage. | "Content-Type" header field when conveying a PKIMessage. | |||
3.3. Communication Workflow | 3.3. Communication Workflow | |||
In CMP, most communication is initiated by the EEs where every CMP | In CMP, most communication is initiated by the EEs where every CMP | |||
request triggers a CMP response message from the CA or RA. | request triggers a CMP response message from the CA or RA. | |||
The CMP announcement messages described in Section 3.5 are an | The CMP announcement messages described in Section 3.5 are an | |||
exception. Their creation may be triggered by certain events or done | exception. Their creation may be triggered by certain events or done | |||
on a regular basis by a CA. The recipient of the announcement only | on a regular basis by a CA. The recipient of the announcement only | |||
skipping to change at page 6, line 26 ¶ | skipping to change at line 236 ¶ | |||
CMP clients have to be configured with sufficient information to form | CMP clients have to be configured with sufficient information to form | |||
the CMP server URI. This is at least the authority portion of the | the CMP server URI. This is at least the authority portion of the | |||
URI, e.g., 'www.example.com:80', or the full operation path segment | URI, e.g., 'www.example.com:80', or the full operation path segment | |||
of the PKI management entity. Additionally, path segments MAY be | of the PKI management entity. Additionally, path segments MAY be | |||
added after the registered application name as part of the full | added after the registered application name as part of the full | |||
operation path to provide further distinction. The path segment 'p' | operation path to provide further distinction. The path segment 'p' | |||
followed by an arbitraryLabel <name> could, for example, support the | followed by an arbitraryLabel <name> could, for example, support the | |||
differentiation of specific CAs or certificate profiles. Further | differentiation of specific CAs or certificate profiles. Further | |||
path segments, e.g., as specified in the Lightweight CMP Profile | path segments, e.g., as specified in the Lightweight CMP Profile | |||
[RFC9483], could indicate PKI management operations using an | [RFC9483], could indicate PKI management operations using an | |||
operationLabel <operation>. The following list examples of valid | operationLabel <operation>. The following list shows examples of | |||
full CMP URIs: | valid full CMP URIs: | |||
http://www.example.com/.well-known/cmp | * http://www.example.com/.well-known/cmp | |||
http://www.example.com/.well-known/cmp/<operation> | * http://www.example.com/.well-known/cmp/<operation> | |||
http://www.example.com/.well-known/cmp/p/<name> | * http://www.example.com/.well-known/cmp/p/<name> | |||
http://www.example.com/.well-known/cmp/p/<name>/<operation> | * http://www.example.com/.well-known/cmp/p/<name>/<operation> | |||
Note that https can also be used instead of http, see item 5 in the | Note that https can also be used instead of http; see item 5 in the | |||
Security Considerations (Section 5). | Security Considerations (Section 5). | |||
3.5. Pushing of Announcements | 3.5. Pushing of Announcements | |||
A CMP server may create event-triggered announcements or generate | A CMP server may create event-triggered announcements or generate | |||
them on a regular basis. It MAY utilize HTTP transfer to convey them | them on a regular basis. It MAY utilize HTTP transfer to convey them | |||
to a suitable recipient. In this use case, the CMP server acts as an | to a suitable recipient. In this use case, the CMP server acts as an | |||
HTTP client, and the recipient needs to utilize an HTTP server. As | HTTP client, and the recipient needs to utilize an HTTP server. As | |||
no request messages are specified for those announcements, they can | no request messages are specified for those announcements, they can | |||
only be pushed to the recipient. | only be pushed to the recipient. | |||
If an EE wants to poll for a potential CA Key Update Announcement or | If an EE wants to poll for a potential CA Key Update Announcement or | |||
the current CRL, a PKI Information Request using a General Message as | the current Certificate Revocation List (CRL), a PKI Information | |||
described in Appendix D.5 of [I-D.ietf-lamps-rfc4210bis] can be used. | Request using a general message as described in Appendix D.5 of | |||
[RFC9810] can be used. | ||||
When pushing announcement messages, PKIMessage structures MUST be | When pushing announcement messages, PKIMessage structures MUST be | |||
sent as the content of an HTTP POST request. | sent as the content of an HTTP POST request. | |||
Suitable recipients for CMP announcements might, for example, be | Suitable recipients for CMP announcements might, for example, be | |||
repositories storing the announced information, such as directory | repositories storing the announced information, such as directory | |||
services. Those services listen for incoming messages, utilizing the | services. Those services listen for incoming messages, utilizing the | |||
same HTTP Request-URI scheme as defined in Section 3.4. | same HTTP Request-URI scheme as defined in Section 3.4. | |||
The following types of PKIMessage are announcements that may be | The following types of PKIMessage are announcements that may be | |||
pushed by a CA. The prefixed numbers reflect ASN.1 tags of the | pushed by a CA. The prefixed numbers reflect ASN.1 tags of the | |||
PKIBody structure (Section 5.1.2 of [I-D.ietf-lamps-rfc4210bis]). | PKIBody structure (Section 5.1.2 of [RFC9810]). | |||
[15] CA Key Update Announcement | [15] CA Key Update Announcement | |||
[16] Certificate Announcement | [16] Certificate Announcement | |||
[17] Revocation Announcement | [17] Revocation Announcement | |||
[18] CRL Announcement | [18] CRL Announcement | |||
CMP announcement messages do not require any CMP response. However, | CMP announcement messages do not require any CMP response. However, | |||
the recipient MUST acknowledge receipt with an HTTP response having | the recipient MUST acknowledge receipt with an HTTP response having | |||
an appropriate status code and an empty content. When not receiving | an appropriate status code and empty content. When not receiving | |||
such a response, it MUST be assumed that the delivery was not | such a response, it MUST be assumed that the delivery was not | |||
successful. If applicable, the sending side MAY try sending the | successful. If applicable, the sending side MAY try sending the | |||
announcement again after waiting for an appropriate time span. | announcement again after waiting for an appropriate time span. | |||
If the announced issue was successfully stored in a database or was | If the announced issue was successfully stored in a database or was | |||
already present, the answer MUST be an HTTP response with a 201 | already present, the answer MUST be an HTTP response with a 201 | |||
(Created) status code and an empty content. | (Created) status code and empty content. | |||
In case the announced information was only accepted for further | In case the announced information was only accepted for further | |||
processing, the status code of the returned HTTP response MAY also be | processing, the status code of the returned HTTP response MAY also be | |||
202 (Accepted). After an appropriate delay, the sender may then try | 202 (Accepted). After an appropriate delay, the sender may then try | |||
to send the announcement again and may repeat this until it receives | to send the announcement again and may repeat this until it receives | |||
a confirmation that it has been successfully processed. The | a confirmation that it has been successfully processed. The | |||
appropriate duration of the delay and the option to increase it | appropriate duration of the delay and the option to increase it | |||
between consecutive attempts should be carefully considered. | between consecutive attempts should be carefully considered. | |||
A receiver MUST answer with a suitable 4xx or 5xx error code when a | A receiver MUST answer with a suitable 4xx or 5xx error code when a | |||
problem occurs. | problem occurs. | |||
4. Implementation Considerations | 4. Implementation Considerations | |||
Implementers should be aware that other implementations might exist | Implementers should be aware that other implementations might exist | |||
that use a different approach for transferring CMP over HTTP. | that use a different approach for transferring CMP over HTTP. | |||
Further, implementations based on earlier I-Ds that led to [RFC6712] | Further, implementations based on earlier documents that led to | |||
might use an unregistered "application/pkixcmp-poll" Media Type. | [RFC6712] might use an unregistered "application/pkixcmp-poll" media | |||
Conforming implementations MAY handle this type like "application/ | type. Conforming implementations MAY handle this type like | |||
pkixcmp". | "application/pkixcmp". | |||
5. Security Considerations | 5. Security Considerations | |||
All security considerations in HTTP [RFC9110] apply. The following | All security considerations in HTTP [RFC9110] apply. The following | |||
items need to be considered by implementers and users: | items need to be considered by implementers and users: | |||
1. There is the risk for denial-of-service attacks through resource | 1. There is the risk for denial-of-service attacks through resource | |||
consumption by opening many connections to an HTTP server. | consumption by opening many connections to an HTTP server. | |||
Therefore, idle connections should be terminated after an | Therefore, idle connections should be terminated after an | |||
appropriate timeout; this may also depend on the available free | appropriate timeout; this may also depend on the available free | |||
resources. | resources. | |||
2. Without being encapsulated in effective security protocols, such | 2. Without being encapsulated in effective security protocols, such | |||
as Transport Layer Security (TLS) [RFC5246] or [RFC8446], or | as Transport Layer Security (TLS) [RFC5246] [RFC8446], or without | |||
without using HTTP digest [RFC9530] there is no integrity | using HTTP digest [RFC9530], there is no integrity protection at | |||
protection at the HTTP level. Therefore, information from the | the HTTP level. Therefore, information from the HTTP should not | |||
HTTP should not be used to change state of the transaction, | be used to change state of the transaction, regardless of whether | |||
regardless of whether any mechanism was used to ensure the | any mechanism was used to ensure the authenticity or integrity of | |||
authenticity or integrity of HTTP messages (e.g., TLS or HTTP | HTTP messages (e.g., TLS or HTTP digests). | |||
digests). | ||||
3. Client users should be aware that storing the target location of | 3. Client users should be aware that storing the target location of | |||
an HTTP response with the 301 (Moved Permanently) status code | an HTTP response with the 301 (Moved Permanently) status code | |||
could be exploited by a meddler-in-the-middle attacker trying to | could be exploited by a meddler-in-the-middle attacker trying to | |||
block them permanently from contacting the correct server. | block them permanently from contacting the correct server. | |||
4. If no measures to authenticate and protect the HTTP responses to | 4. If no measures to authenticate and protect the HTTP responses to | |||
pushed announcement messages are in place, their information | pushed announcement messages are in place, their information | |||
regarding the announcement's processing state may not be trusted. | regarding the announcement's processing state may not be trusted. | |||
In that case, the overall design of the PKI system must not | In that case, the overall design of the PKI system must not | |||
depend on the announcements being reliably received and processed | depend on the announcements being reliably received and processed | |||
by their destination. | by their destination. | |||
5. CMP provides inbuilt integrity protection and authentication. | 5. CMP provides inbuilt integrity protection and authentication. | |||
The information communicated unencrypted in CMP messages does not | The information communicated unencrypted in CMP messages does not | |||
contain sensitive information endangering the security of the PKI | contain sensitive information endangering the security of the PKI | |||
when intercepted. However, it might be possible for an | when intercepted. However, it might be possible for an | |||
eavesdropper to utilize the available information to gather | eavesdropper to utilize the available information to gather | |||
confidential personal, technical, or business critical | confidential personal, technical, or business-critical | |||
information. The protection of the confidentiality of CMP | information. The protection of the confidentiality of CMP | |||
messages together with an initial authentication of the RA/CA | messages together with an initial authentication of the RA/CA | |||
before the first CMP message is transmitted ensures the privacy | before the first CMP message is transmitted ensures the privacy | |||
of the EE requesting certificates. Therefore, users of the HTTP | of the EE requesting certificates. Therefore, users of the HTTP | |||
transfer for CMP messages should consider using HTTP over TLS | transfer for CMP messages should consider using HTTP over TLS | |||
according to [RFC9110] or using virtual private networks created, | according to [RFC9110] or using virtual private networks created, | |||
for example, by utilizing Internet Protocol Security according to | for example, by utilizing Internet Protocol Security according to | |||
[RFC7296]. | [RFC7296]. | |||
6. IANA Considerations | 6. IANA Considerations | |||
The reference to [RFC2510] at https://www.iana.org/assignments/media- | IANA has made the following updates: | |||
types/media-types.xhtml should be replaced with a reference to this | ||||
document. | ||||
The reference to [RFC4210] at https://www.iana.org/assignments/core- | ||||
parameters/core-parameters.xhtml should be replaced with a reference | ||||
to this document. | ||||
The reference to [RFC9480] at https://www.iana.org/assignments/well- | * the reference for "application/pkixcmp" in the "Media Types" | |||
known-uris/well-known-uris.xhtml and | registry <https://www.iana.org/assignments/media-types> refers to | |||
https://www.iana.org/assignments/cmp/cmp.xhtmlshould should be | this document, instead of [RFC2510]. | |||
replaced with a reference to this document. | ||||
No further action by the IANA is necessary for this document or any | * the reference for "application/pkixcmp" in the "CoAP Content- | |||
anticipated updates. | Formats" registry <https://www.iana.org/assignments/core- | |||
parameters> refers to this document, instead of [RFC4210]. | ||||
7. Acknowledgments | * the reference for "cmp" in the "Well-Known URIs" registry | |||
<https://www.iana.org/assignments/core-parameters> refers to this | ||||
document instead of [RFC4210]. | ||||
The authors wish to thank Tomi Kause and Martin Peylo, the original | * the reference for "p" in the "CMP Well-Known URI Path Segments" | |||
authors of [RFC6712], for their work. | registry <https://www.iana.org/assignments/cmp> refers to this | |||
document instead of [RFC9480]. | ||||
We also thank all reviewers for their valuable feedback. | No further action by IANA is necessary for this document or any | |||
anticipated updates. | ||||
8. References | 7. References | |||
8.1. Normative References | 7.1. Normative References | |||
[RFC1945] Berners-Lee, T., Fielding, R., and H. Frystyk, "Hypertext | [RFC1945] Berners-Lee, T., Fielding, R., and H. Frystyk, "Hypertext | |||
Transfer Protocol -- HTTP/1.0", RFC 1945, | Transfer Protocol -- HTTP/1.0", RFC 1945, | |||
DOI 10.17487/RFC1945, May 1996, | DOI 10.17487/RFC1945, May 1996, | |||
<https://www.rfc-editor.org/rfc/rfc1945>. | <https://www.rfc-editor.org/info/rfc1945>. | |||
[RFC8615] Nottingham, M., "Well-Known Uniform Resource Identifiers | [RFC8615] Nottingham, M., "Well-Known Uniform Resource Identifiers | |||
(URIs)", RFC 8615, DOI 10.17487/RFC8615, May 2019, | (URIs)", RFC 8615, DOI 10.17487/RFC8615, May 2019, | |||
<https://www.rfc-editor.org/rfc/rfc8615>. | <https://www.rfc-editor.org/info/rfc8615>. | |||
[RFC9110] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | [RFC9110] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | |||
Ed., "HTTP Semantics", STD 97, RFC 9110, | Ed., "HTTP Semantics", STD 97, RFC 9110, | |||
DOI 10.17487/RFC9110, June 2022, | DOI 10.17487/RFC9110, June 2022, | |||
<https://www.rfc-editor.org/rfc/rfc9110>. | <https://www.rfc-editor.org/info/rfc9110>. | |||
[RFC9112] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | [RFC9112] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | |||
Ed., "HTTP/1.1", STD 99, RFC 9112, DOI 10.17487/RFC9112, | Ed., "HTTP/1.1", STD 99, RFC 9112, DOI 10.17487/RFC9112, | |||
June 2022, <https://www.rfc-editor.org/rfc/rfc9112>. | June 2022, <https://www.rfc-editor.org/info/rfc9112>. | |||
[I-D.ietf-lamps-rfc4210bis] | [RFC9810] Brockhaus, H., von Oheimb, D., Ounsworth, M., and J. Gray, | |||
Brockhaus, H., von Oheimb, D., Ounsworth, M., and J. Gray, | ||||
"Internet X.509 Public Key Infrastructure -- Certificate | "Internet X.509 Public Key Infrastructure -- Certificate | |||
Management Protocol (CMP)", Work in Progress, Internet- | Management Protocol (CMP)", RFC 9810, | |||
Draft, draft-ietf-lamps-rfc4210bis-15, 18 November 2024, | DOI 10.17487/RFC9810, July 2025, | |||
<https://datatracker.ietf.org/doc/html/draft-ietf-lamps- | <https://www.rfc-editor.org/info/rfc9810>. | |||
rfc4210bis-15>. | ||||
[ITU.X690.1994] | [ITU.X690.1994] | |||
International Telecommunications Union, "Information | ITU-T, "Information Technology - ASN.1 encoding rules: | |||
Technology - ASN.1 encoding rules: Specification of Basic | Specification of Basic Encoding Rules (BER), Canonical | |||
Encoding Rules (BER), Canonical Encoding Rules (CER) and | Encoding Rules (CER) and Distinguished Encoding Rules | |||
Distinguished Encoding Rules (DER)", ITU-T Recommendation | (DER)", ITU-T Recommendation X.690, 1994, | |||
X.690, 1994. | <https://www.itu.int/rec/T-REC-X.690-199407-S/en>. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/rfc/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/rfc/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
8.2. Informative References | 7.2. Informative References | |||
[RFC9480] Brockhaus, H., von Oheimb, D., and J. Gray, "Certificate | [RFC9480] Brockhaus, H., von Oheimb, D., and J. Gray, "Certificate | |||
Management Protocol (CMP) Updates", RFC 9480, | Management Protocol (CMP) Updates", RFC 9480, | |||
DOI 10.17487/RFC9480, November 2023, | DOI 10.17487/RFC9480, November 2023, | |||
<https://www.rfc-editor.org/rfc/rfc9480>. | <https://www.rfc-editor.org/info/rfc9480>. | |||
[RFC9483] Brockhaus, H., von Oheimb, D., and S. Fries, "Lightweight | [RFC9483] Brockhaus, H., von Oheimb, D., and S. Fries, "Lightweight | |||
Certificate Management Protocol (CMP) Profile", RFC 9483, | Certificate Management Protocol (CMP) Profile", RFC 9483, | |||
DOI 10.17487/RFC9483, November 2023, | DOI 10.17487/RFC9483, November 2023, | |||
<https://www.rfc-editor.org/rfc/rfc9483>. | <https://www.rfc-editor.org/info/rfc9483>. | |||
[RFC2510] Adams, C. and S. Farrell, "Internet X.509 Public Key | [RFC2510] Adams, C. and S. Farrell, "Internet X.509 Public Key | |||
Infrastructure Certificate Management Protocols", | Infrastructure Certificate Management Protocols", | |||
RFC 2510, DOI 10.17487/RFC2510, March 1999, | RFC 2510, DOI 10.17487/RFC2510, March 1999, | |||
<https://www.rfc-editor.org/rfc/rfc2510>. | <https://www.rfc-editor.org/info/rfc2510>. | |||
[RFC4210] Adams, C., Farrell, S., Kause, T., and T. Mononen, | [RFC4210] Adams, C., Farrell, S., Kause, T., and T. Mononen, | |||
"Internet X.509 Public Key Infrastructure Certificate | "Internet X.509 Public Key Infrastructure Certificate | |||
Management Protocol (CMP)", RFC 4210, | Management Protocol (CMP)", RFC 4210, | |||
DOI 10.17487/RFC4210, September 2005, | DOI 10.17487/RFC4210, September 2005, | |||
<https://www.rfc-editor.org/rfc/rfc4210>. | <https://www.rfc-editor.org/info/rfc4210>. | |||
[RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | |||
(TLS) Protocol Version 1.2", RFC 5246, | (TLS) Protocol Version 1.2", RFC 5246, | |||
DOI 10.17487/RFC5246, August 2008, | DOI 10.17487/RFC5246, August 2008, | |||
<https://www.rfc-editor.org/rfc/rfc5246>. | <https://www.rfc-editor.org/info/rfc5246>. | |||
[RFC6712] Kause, T. and M. Peylo, "Internet X.509 Public Key | [RFC6712] Kause, T. and M. Peylo, "Internet X.509 Public Key | |||
Infrastructure -- HTTP Transfer for the Certificate | Infrastructure -- HTTP Transfer for the Certificate | |||
Management Protocol (CMP)", RFC 6712, | Management Protocol (CMP)", RFC 6712, | |||
DOI 10.17487/RFC6712, September 2012, | DOI 10.17487/RFC6712, September 2012, | |||
<https://www.rfc-editor.org/rfc/rfc6712>. | <https://www.rfc-editor.org/info/rfc6712>. | |||
[RFC7296] Kaufman, C., Hoffman, P., Nir, Y., Eronen, P., and T. | [RFC7296] Kaufman, C., Hoffman, P., Nir, Y., Eronen, P., and T. | |||
Kivinen, "Internet Key Exchange Protocol Version 2 | Kivinen, "Internet Key Exchange Protocol Version 2 | |||
(IKEv2)", STD 79, RFC 7296, DOI 10.17487/RFC7296, October | (IKEv2)", STD 79, RFC 7296, DOI 10.17487/RFC7296, October | |||
2014, <https://www.rfc-editor.org/rfc/rfc7296>. | 2014, <https://www.rfc-editor.org/info/rfc7296>. | |||
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | |||
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | |||
<https://www.rfc-editor.org/rfc/rfc8446>. | <https://www.rfc-editor.org/info/rfc8446>. | |||
[RFC9530] Polli, R. and L. Pardue, "Digest Fields", RFC 9530, | [RFC9530] Polli, R. and L. Pardue, "Digest Fields", RFC 9530, | |||
DOI 10.17487/RFC9530, February 2024, | DOI 10.17487/RFC9530, February 2024, | |||
<https://www.rfc-editor.org/rfc/rfc9530>. | <https://www.rfc-editor.org/info/rfc9530>. | |||
[RFC9205] Nottingham, M., "Building Protocols with HTTP", BCP 56, | [BCP56] Best Current Practice 56, | |||
<https://www.rfc-editor.org/info/bcp56>. | ||||
At the time of writing, this BCP comprises the following: | ||||
Nottingham, M., "Building Protocols with HTTP", BCP 56, | ||||
RFC 9205, DOI 10.17487/RFC9205, June 2022, | RFC 9205, DOI 10.17487/RFC9205, June 2022, | |||
<https://www.rfc-editor.org/rfc/rfc9205>. | <https://www.rfc-editor.org/info/rfc9205>. | |||
[RFC9293] Eddy, W., Ed., "Transmission Control Protocol (TCP)", | [RFC9293] Eddy, W., Ed., "Transmission Control Protocol (TCP)", | |||
STD 7, RFC 9293, DOI 10.17487/RFC9293, August 2022, | STD 7, RFC 9293, DOI 10.17487/RFC9293, August 2022, | |||
<https://www.rfc-editor.org/rfc/rfc9293>. | <https://www.rfc-editor.org/info/rfc9293>. | |||
Appendix A. History of Changes | ||||
Note: This appendix will be deleted in the final version of the | ||||
document. | ||||
From version 09 -> 10: | ||||
* Addressed IESG review comments from Mahesh Jethanandani and | ||||
responded to comments from Orie Steele and Zaheduzzaman Sarker via | ||||
From version 08 -> 09: | ||||
* Incorporated relevant text from former Sections 3.1 and 3.2 in the | ||||
introduction of Section 3 as proposed by HTTPDIR review | ||||
* Added reference to HTTP Security Considerations to Section 5 and | ||||
updated the first item as proposed by HTTPDIR review | ||||
From version 07 -> 08: | ||||
* Addressed HTTPDIR, SECDIR, OPSDIR and ARTART review comments | ||||
* Aligned the terminology with https://httpwg.org/admin/editors/ | ||||
style-guide | ||||
* Implemented editorial changes proposed by OPSDIR reviewer | ||||
* Removed requirement to support HTTP/1.0 | ||||
* Added normative language in Sections 3.3 and 3.7 for clarity | ||||
* Added the requirement to provide any HTTP response message content | ||||
to the application | ||||
* Removed the paragraph on the "Content-Length" header field and | ||||
Section 3.8 to reduce redundancy with current versions HTTP/1.1 | ||||
From version 06 -> 07: | ||||
* Updated the the page header to 'HTTP Transfer for CMP' | ||||
* Removed one instruction to RFC Editors | ||||
* Deprecated PKIMessages as plural of PKIMessage to prevent | ||||
confusion with ASN.1 type PKIMessages | ||||
* Fixed some nits in Section 1 | ||||
* Aligned Section 3.6 and Section 5 with RFC 9483 and draft-ietf- | ||||
anima-brski-ae | ||||
From version 05 -> 06: | ||||
* Updates IANA considerations addressing IANA early review (see | ||||
thread "[IANA #1368693] Early review: draft-ietf-lamps- | ||||
rfc4210bis-12 (IETF 120)"). | ||||
From version 04 -> 05: | ||||
* Added IANA considerations addressing IANA early review. | ||||
From version 03 -> 04: | ||||
* Aligned with released RFC 9480 - RFC 9483. | ||||
From version 02 -> 03: | ||||
* Fixing one formatting nit. | ||||
From version 01 -> 02: | ||||
* Updated Section 3.4 including the requirement to add the content- | ||||
length filed into the HTTP header. | ||||
* Added a reference to TLS 1.3. | ||||
* Addressed idnits feedback, specifically changing the following RFC | ||||
references: RFC2616 -> RFC9112; RFC2818 -> RFC9110, and RFC5246 -> | ||||
RFC8446 | ||||
From version 00 -> 01: | ||||
* Performed all updates specified in CMP Updates Section 3. | ||||
Version 00: | ||||
This version consists of the text of RFC6712 with the following | ||||
changes: | ||||
* Introduced the authors of this document and thanked the authors of | Acknowledgements | |||
RFC6712 for their work. | ||||
* Added a paragraph to the introduction explaining the background of | The authors wish to thank Tomi Kause and Martin Peylo, the original | |||
this document. | authors of [RFC6712], for their work. | |||
* Added the change history to this appendix. | We also thank all reviewers for their valuable feedback. | |||
Authors' Addresses | Authors' Addresses | |||
Hendrik Brockhaus | Hendrik Brockhaus | |||
Siemens | Siemens | |||
Werner-von-Siemens-Strasse 1 | Werner-von-Siemens-Strasse 1 | |||
80333 Munich | 80333 Munich | |||
Germany | Germany | |||
Email: hendrik.brockhaus@siemens.com | Email: hendrik.brockhaus@siemens.com | |||
URI: https://www.siemens.com | URI: https://www.siemens.com | |||
End of changes. 70 change blocks. | ||||
265 lines changed or deleted | 153 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |