rfc9482xml2.original.xml | rfc9482.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="US-ASCII"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<!-- change the "txt" on the previous line to "xml" to make this a valid XML2RFC | ||||
template --> | ||||
<!-- this is version 5 of this xml2rfc template --> | ||||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | ||||
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/refere | ||||
nce.RFC.2119.xml"> | ||||
<!ENTITY RFC8174 SYSTEM "http://xml.resource.org/public/rfc/bibxml/refere | ||||
nce.RFC.8174.xml"> | ||||
<!ENTITY RFC4210 SYSTEM "http://xml.resource.org/public/rfc/bibxml/refere | ||||
nce.RFC.4210.xml"> | ||||
<!ENTITY RFC6712 SYSTEM "http://xml.resource.org/public/rfc/bibxml/refere | ||||
nce.RFC.6712.xml"> | ||||
<!ENTITY RFC7252 SYSTEM "http://xml.resource.org/public/rfc/bibxml/refere | ||||
nce.RFC.7252.xml"> | ||||
<!ENTITY RFC7959 SYSTEM "http://xml.resource.org/public/rfc/bibxml/refere | ||||
nce.RFC.7959.xml"> | ||||
<!ENTITY RFC8446 SYSTEM "http://xml.resource.org/public/rfc/bibxml/refere | ||||
nce.RFC.8446.xml"> | ||||
<!ENTITY RFC8323 SYSTEM "http://xml.resource.org/public/rfc/bibxml/refere | ||||
nce.RFC.8323.xml"> | ||||
<!ENTITY RFC8615 SYSTEM "http://xml.resource.org/public/rfc/bibxml/refere | ||||
nce.RFC.8615.xml"> | ||||
<!ENTITY RFC6690 SYSTEM "http://xml.resource.org/public/rfc/bibxml/refere | ||||
nce.RFC.6690.xml"> | ||||
<!ENTITY RFC5280 SYSTEM "http://xml.resource.org/public/rfc/bibxml/refere | ||||
nce.RFC.5280.xml"> | ||||
<!ENTITY RFC7641 SYSTEM "http://xml.resource.org/public/rfc/bibxml/refere | ||||
nce.RFC.7641.xml"> | ||||
<!ENTITY RFC9147 SYSTEM "http://xml.resource.org/public/rfc/bibxml/refere | ||||
nce.RFC.9147.xml"> | ||||
<!ENTITY RFC9112 SYSTEM "http://xml.resource.org/public/rfc/bibxml/refere | ||||
nce.RFC.9112.xml"> | ||||
<!ENTITY I-D.ietf-lamps-lightweight-cmp-profile SYSTEM "http://xml.resour | ||||
ce.org/public/rfc/bibxml3/reference.I-D.draft-ietf-lamps-lightweight-cmp-profile | ||||
-21.xml"> | ||||
<!ENTITY I-D.ietf-lamps-cmp-updates SYSTEM "http://xml.resource.org/publi | ||||
c/rfc/bibxml3/reference.I-D.draft-ietf-lamps-cmp-updates-23.xml"> | ||||
]> | ||||
<?rfc toc="yes"?> | ||||
<?rfc symrefs="yes"?> | ||||
<?rfc compact="yes"?> | ||||
<?rfc subcompact="no"?> | ||||
<?rfc strict="no"?> | ||||
<?rfc rfcedstyle="yes"?> | ||||
<?rfc comments="yes"?> | ||||
<?rfc inline="yes"?> | ||||
<rfc category="std" docName="draft-ietf-ace-cmpv2-coap-transport-10" ipr="trust2 | ||||
00902"> | ||||
<front> | ||||
<title abbrev="CoAP Transfer for the CMP">CoAP Transfer for the C | ||||
ertificate Management Protocol</title> | ||||
<author fullname="Mohit Sahni" initials="M" role="editor" surname | ||||
="Sahni"> | ||||
<organization>Palo Alto Networks</organization> | ||||
<address> | ||||
<postal> | ||||
<street>3000 Tannery Way</street> | ||||
<city>Santa Clara</city> | ||||
<region>CA</region> | ||||
<code>95054</code> | ||||
<country>US</country> | ||||
</postal> | ||||
<email>msahni@paloaltonetworks.com</email> | ||||
</address> | ||||
</author> | ||||
<author fullname="Saurabh Tripathi" initials="S" role="editor" su | ||||
rname="Tripathi"> | ||||
<organization>Palo Alto Networks</organization> | ||||
<address> | ||||
<postal> | ||||
<street>3000 Tannery Way</street> | ||||
<city>Santa Clara</city> | ||||
<region>CA</region> | ||||
<code>95054</code> | ||||
<country>US</country> | ||||
</postal> | ||||
<email>stripathi@paloaltonetworks.com</email> | ||||
</address> | ||||
</author> | ||||
<!-- month and day will be generated automatically by XML2RFC; | ||||
be sure the year is current.--> | ||||
<date year="2023" /> | ||||
<!-- IETF area is optional --> | ||||
<area>Authentication and Authorization for Constrained Environmen | ||||
ts</area> | ||||
<!--WG name at the upperleft corner of the doc, | <!DOCTYPE rfc [ | |||
IETF is fine for non-WG IETF submissions --> | <!ENTITY nbsp " "> | |||
<!ENTITY zwsp "​"> | ||||
<!ENTITY nbhy "‑"> | ||||
<!ENTITY wj "⁠"> | ||||
]> | ||||
<workgroup>ACE</workgroup> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" category=" std" consensus="true" docName="draft-ietf-ace-cmpv2-coap-transport-10" number="9 482" ipr="trust200902" obsoletes="" updates="" xml:lang="en" tocInclude="true" s ymRefs="true" sortRefs="true" version="3"> | |||
<!--add additional keywords here for IETF website search engine - | <!-- xml2rfc v2v3 conversion 3.17.1 --> | |||
-> | <front> | |||
<title abbrev="CoAP Transfer for CMP">Constrained Application Protocol (CoAP | ||||
) Transfer for the Certificate Management Protocol</title> | ||||
<seriesInfo name="RFC" value="9482"/> | ||||
<author fullname="Mohit Sahni" initials="M" role="editor" surname="Sahni"> | ||||
<organization>Palo Alto Networks</organization> | ||||
<address> | ||||
<postal> | ||||
<street>3000 Tannery Way</street> | ||||
<city>Santa Clara</city> | ||||
<region>CA</region> | ||||
<code>95054</code> | ||||
<country>United States of America</country> | ||||
</postal> | ||||
<email>msahni@paloaltonetworks.com</email> | ||||
</address> | ||||
</author> | ||||
<author fullname="Saurabh Tripathi" initials="S" role="editor" surname="Trip | ||||
athi"> | ||||
<organization>Palo Alto Networks</organization> | ||||
<address> | ||||
<postal> | ||||
<street>3000 Tannery Way</street> | ||||
<city>Santa Clara</city> | ||||
<region>CA</region> | ||||
<code>95054</code> | ||||
<country>United States of America</country> | ||||
</postal> | ||||
<email>stripathi@paloaltonetworks.com</email> | ||||
</address> | ||||
</author> | ||||
<date year="2023" month="October"/> | ||||
<area>sec</area> | ||||
<workgroup>ace</workgroup> | ||||
<abstract> | <abstract> | |||
<t> | ||||
<t> | This document specifies the use of the Co | |||
This document specifies the use of Constr | nstrained Application Protocol (CoAP) as a transfer mechanism for the Certificat | |||
ained Application Protocol (CoAP) as a transfer mechanism for the Certificate Ma | e Management Protocol (CMP). CMP defines the interaction between various PKI ent | |||
nagement Protocol (CMP). CMP defines the interaction between various PKI entitie | ities for the purpose of certificate creation and management. CoAP is an HTTP-li | |||
s for the purpose of certificate creation and management. CoAP is an HTTP-like c | ke client-server protocol used by various constrained devices in the Internet of | |||
lient-server protocol used by various constrained devices in the IoT space. | Things space. | |||
</t> | </t> | |||
</abstract> | ||||
</abstract> | </front> | |||
</front> | <middle> | |||
<section anchor="sect-1" numbered="true" toc="default"> | ||||
<middle> | <name>Introduction</name> | |||
<section title="Introduction" anchor="sect-1"> | <t> | |||
<t> | ||||
The Certificate Management Protocol (CMP) | The Certificate Management Protocol (CMP) | |||
<xref target="RFC4210" /> | <xref target="RFC4210" format="default"/> | |||
is used by the PKI entities for the generation an | is used by the PKI entities for the generation an | |||
d management of certificates. One of the requirements of Certificate Management | d management of certificates. One of the requirements of CMP is to be independen | |||
Protocol is to be independent of the transport protocol in use. CMP has mechanis | t of the transport protocol in use. CMP has mechanisms to take care of required | |||
ms to take care of required transactions, error reporting and protection of mess | transactions, error reporting, and protection of messages. | |||
ages. | </t> | |||
</t> | <t> | |||
<t> | The Constrained Application Protocol (CoAP) defin | |||
The Constrained Application Protocol (CoAP) defin | ed in <xref target="RFC7252" format="default"/>, <xref target="RFC7959" format=" | |||
ed in <xref target="RFC7252" />, <xref target="RFC7959" /> and <xref target="RFC | default"/>, and <xref target="RFC8323" format="default"/> is a client-server pro | |||
8323" /> is a client-server protocol like HTTP. It is designed to be used by con | tocol like HTTP. It is designed to be used by constrained devices over constrain | |||
strained devices over constrained networks. The recommended transport for CoAP i | ed networks. The recommended transport for CoAP is UDP; however, <xref target="R | |||
s UDP, however <xref target="RFC8323" /> specifies the support of CoAP over TCP, | FC8323" format="default"/> specifies the support of CoAP over TCP, TLS, and WebS | |||
TLS and Websockets. | ockets. | |||
</t> | </t> | |||
<t> | <t> | |||
This document specifies the use of CoAP over UDP | This document specifies the use of CoAP over UDP | |||
as a transport medium for the CMP version 2 | as a transport medium for | |||
<xref target="RFC4210" />, <xref target="I-D.ietf | <xref target="RFC4210" format="default">CMP versi | |||
-lamps-cmp-updates"> CMP version 3 </xref> designated as CMP in this document an | on 2</xref>, <xref target="RFC9480" format="default"> CMP version 3 </xref> (des | |||
d <xref target="I-D.ietf-lamps-lightweight-cmp-profile">Lightweight CMP Profile< | ignated as CMP in this document), and the <xref target="RFC9483" format="default | |||
/xref>. This document, in general, follows the HTTP transfer for CMP specificati | ">Lightweight CMP Profile</xref>. In general, this document follows the HTTP tra | |||
ons defined in <xref target="RFC6712" /> and specifies the requirements for usin | nsfer for CMP specifications defined in <xref target="RFC6712" format="default"/ | |||
g CoAP as a transfer mechanism for the CMP. | > and specifies the requirements for using CoAP as a transfer mechanism for CMP. | |||
</t> | </t> | |||
<t> | <t> | |||
This document also provides guidance on how to use a "CoAP-to-HTTP" proxy to eas | This document also provides guidance on how to use a "CoAP-to-HTTP" proxy to eas | |||
e adoption of CoAP transfer mechanism by enabling the interconnection with exist | e adoption of a CoAP transfer mechanism by enabling the interconnection with exi | |||
ing PKI entities already providing CMP over HTTP. | sting PKI entities already providing CMP over HTTP. | |||
</t> | </t> | |||
<section title="Terminology"> | <section numbered="true" toc="default"> | |||
<t> | <name>Requirements Language</name> | |||
The key words "MUST", "MUST NOT", "REQUIR | <t> | |||
ED", "SHALL", "SHALL NOT", | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY",and "OPTIONAL | IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | |||
" in this document are to be interpreted as described in BCP 14 | NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14> | |||
<xref target="RFC2119" /> | RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
<xref target="RFC8174" /> | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | |||
when, and only when, they appear in all c | be interpreted as | |||
apitals, as shown here. | described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | |||
</t> | when, and only when, they appear in all capitals, as shown here. | |||
</section> | </t> | |||
</section> | </section> | |||
<section title="CoAP Transfer Mechanism for CMP" anchor="sect-2"> | </section> | |||
<t> | <section anchor="sect-2" numbered="true" toc="default"> | |||
<name>CoAP Transfer Mechanism for CMP</name> | ||||
<t> | ||||
A CMP transaction consists of exchanging PKIMessa ges | A CMP transaction consists of exchanging PKIMessa ges | |||
<xref target="RFC4210" /> | <xref target="RFC4210" format="default"/> | |||
between PKI End Entities (EEs), Registration Auth | between PKI end entities (EEs), registration auth | |||
orities (RAs), and Certification Authorities (CAs). If the EEs are constrained d | orities (RAs), and certification authorities (CAs). If the EEs are constrained d | |||
evices then they may prefer, as a CMP client, the use of CoAP instead of HTTP as | evices, then they may prefer, as a CMP client, the use of CoAP instead of HTTP a | |||
the transfer mechanism. | s the transfer mechanism. | |||
The RAs and CAs, in general, are not constrained | In general, the RAs and CAs are not constrained a | |||
and can support both CoAP and HTTP Client and Server implementations. | nd can support both CoAP and HTTP client and server implementations. | |||
This section specifies how to use CoAP as the tra | This section specifies how to use CoAP as the tra | |||
nsfer mechanism for the Certificate Management Protocol. | nsfer mechanism for CMP. | |||
</t> | </t> | |||
<section title="CoAP URI Format" anchor="sect-2.1"> | <section anchor="sect-2.1" numbered="true" toc="default"> | |||
<t> | <name>CoAP URI Format</name> | |||
The CoAP URI format is described in secti | <t> | |||
on 6 of <xref target="RFC7252" />. The CoAP endpoints MUST support use of the pa | The CoAP URI format is described in <xref | |||
th prefix "/.well-known/" as defined in | target="RFC7252" section="6" sectionFormat="of" format="default"/>. The CoAP en | |||
<xref target="RFC8615" /> | dpoints <bcp14>MUST</bcp14> support use of the path prefix "/.well-known/" as de | |||
and the registered name "cmp" to help wit | fined in | |||
h endpoint discovery and interoperability. Optional path segments MAY be added a | <xref target="RFC8615" format="default"/> | |||
fter the registered application name (i.e. after "/.well-known/cmp") to provide | and the registered name "cmp" to help wit | |||
distinction. The path | h endpoint discovery and interoperability. Optional path segments <bcp14>MAY</bc | |||
segment 'p' followed by an arbitraryLabel | p14> be added after the registered application name (i.e., after "/.well-known/c | |||
<name> could for example support the differentiation of specific CAs or | mp") to provide distinction. The path | |||
certificate profiles. Further path segments, e.g., as specified in the Lightweig | segment 'p' followed by an arbitraryLabel | |||
ht CMP Profile [I-D.ietf-lamps-lightweight-cmp-profile], could indicate PKI mana | <name> could, for example, support the differentiation of specific CAs o | |||
gement operations using an operationLabel <operation>. A valid full CMP UR | r certificate profiles. Further path segments, for example, as specified in <xre | |||
I can look like this: | f target="RFC9483">Lightweight CMP Profile</xref>, could indicate PKI management | |||
</t> | operations using an operationLabel <operation>. A valid full CMP URI can | |||
<figure> | look like this: | |||
<artwork> | </t> | |||
<![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
coap://www.example.com/.well-known/cmp | coap://www.example.com/.well-known/cmp | |||
coap://www.example.com/.well-known/cmp/<operation> | coap://www.example.com/.well-known/cmp/<operation> | |||
coap://www.example.com/.well-known/cmp/p/<profileLabel> | coap://www.example.com/.well-known/cmp/p/<profileLabel> | |||
coap://www.example.com/.well-known/cmp/p/<profileLabel>/<operation> | coap://www.example.com/.well-known/cmp/p/<profileLabel>/<operation> | |||
]]> | ]]></artwork> | |||
</artwork> | </section> | |||
</figure> | <section anchor="sect-2.2" numbered="true" toc="default"> | |||
</section> | <name>Discovery of CMP RA/CA</name> | |||
<section title="Discovery of CMP RA/CA" anchor="sect-2.2" | <t> | |||
> | The EEs can be configured with enough inf | |||
<t> | ormation to form the CMP server URI. The minimum information that can be configu | |||
The EEs can be configured with enough inf | red is the scheme, i.e., "coap:" or "coaps:", and the authority portion of the U | |||
ormation to form the CMP server URI. The minimum information that can be configu | RI, e.g., "example.com:5683". If the port number is not specified in the authori | |||
red is the scheme i.e. "coap:" or "coaps:" and the authority portion of the URI, | ty, then the default port numbers <bcp14>MUST</bcp14> be assumed for the "coap:" | |||
e.g. "example.com:5683". If the port number is not specified in the authority, | and "coaps:" scheme URIs. The default port for "coap:" scheme URIs is 5683 and | |||
then the default ports numbers MUST be assumed for the "coap:" and the "coaps:" | the default port for "coaps:" scheme URIs is 5684 <xref target="RFC7252" format= | |||
scheme URIs. The default port for coap: scheme URIs is 5683 and the default port | "default"/>. | |||
for coaps: scheme URIs is 5684 <xref target="RFC7252" />. | </t> | |||
</t> | <t> | |||
<t> | Optionally, in the environments where a L | |||
Optionally, in the environments where a L | ocal RA or CA is deployed, EEs can also use the CoAP service discovery mechanism | |||
ocal Registration Authority (LRA) or a Local CA is deployed, EEs can also use th | <xref target="RFC7252" format="default"/> to discover the URI of the Loca | |||
e CoAP service discovery mechanism <xref target="RFC7252" /> to discover the | l RA or CA. The CoAP CMP endpoints supporting service discovery <bcp14>MUST</bcp | |||
URI of the Local RA or CA. The CoAP CMP endpoints supporting service discovery | 14> also support resource discovery in the Constrained RESTful Environments (CoR | |||
MUST also support resource discovery in the CoRE Link Format as described in <xr | E) Link Format, as described in <xref target="RFC6690" format="default"/>. The l | |||
ef target="RFC6690" />. The Link MUST include the 'ct' attribute defined in sect | ink <bcp14>MUST</bcp14> include the 'ct' attribute defined in <xref target="RFC7 | |||
ion 7.2.1 of | 252" section="7.2.1" sectionFormat="of" format="default"/> with the value of "ap | |||
<xref target="RFC7252" /> with the value | plication/pkixcmp", as defined in the "CoAP Content-Formats" IANA registry. | |||
of "application/pkixcmp" as defined in the CoAP Content-Formats IANA registry. | </t> | |||
</t> | </section> | |||
</section> | <section anchor="sect-2.3" numbered="true" toc="default"> | |||
<section title="CoAP Request Format" anchor="sect-2.3"> | <name>CoAP Request Format</name> | |||
<t> | <t> | |||
The CMP PKIMessages MUST be DER encoded a | The CMP PKIMessages <bcp14>MUST</bcp14> b | |||
nd sent as the body of the CoAP POST request. A CMP client MUST send each CoAP r | e DER encoded and sent as the body of the CoAP POST request. A CMP client <bcp14 | |||
equests marked as a Confirmable message <xref target="RFC7252" />. If the CoAP r | >MUST</bcp14> send each CoAP request marked as a Confirmable message <xref targe | |||
equest is successful then the CMP RA or CA MUST return a Success 2.xx response c | t="RFC7252" format="default"/>. If the CoAP request is successful, then the CMP | |||
ode otherwise CMP RA or CA MUST return an appropriate Client Error 4.xx or Serve | RA or CA <bcp14>MUST</bcp14> return a Success 2.xx response code; otherwise, the | |||
r Error 5.xx response code. A CMP RA or CA may choose to send a Piggybacked resp | CMP RA or CA <bcp14>MUST</bcp14> return an appropriate Client Error 4.xx or Ser | |||
onse <xref target="RFC7252" /> to the client or it MAY send a Separate response | ver Error 5.xx response code. A CMP RA or CA may choose to send a piggybacked re | |||
<xref target="RFC7252" /> in case it takes some time for CA or RA to process the | sponse <xref target="RFC7252" format="default"/> to the client, or it <bcp14>MAY | |||
CMP transaction. | </bcp14> send a separate response <xref target="RFC7252" format="default"/> in c | |||
</t> | ase it takes some time for the RA or CA to process the CMP transaction. | |||
<t> | </t> | |||
When transferring CMP PKIMesssage over CoAP the conte | <t> | |||
nt-format "application/pkixcmp" MUST be used. | When transferring CMP PKIMessage over CoAP, the conte | |||
</t> | nt-format "application/pkixcmp" <bcp14>MUST</bcp14> be used. | |||
</section> | </t> | |||
<section title="CoAP Block-Wise Transfer Mode" anchor="se | </section> | |||
ct-2.4"> | <section anchor="sect-2.4" numbered="true" toc="default"> | |||
<t> | <name>CoAP Block-Wise Transfer Mode</name> | |||
A CMP PKIMesssage consists of a header, b | <t> | |||
ody, protection, and extraCerts structures which may contain many optional and p | A CMP PKIMessage consists of a header, bo | |||
otentially large fields. Thus, a CMP message can be much larger than the Maximum | dy, protection, and extraCerts structure, which may contain many optional and po | |||
Transmission Unit (MTU) of the outgoing interface of the device. The EEs and RA | tentially large fields. Thus, a CMP message can be much larger than the Maximum | |||
s or CAs, MUST use the Block-Wise transfer mode | Transmission Unit (MTU) of the outgoing interface of the device. The EEs and RAs | |||
<xref target="RFC7959" /> to transfer suc | or CAs <bcp14>MUST</bcp14> use the block-wise transfer mode | |||
h large messages instead of relying on IP fragmentation. | <xref target="RFC7959" format="default"/> | |||
</t> | to transfer such large messages instead of relying on IP fragmentation. | |||
<t> | </t> | |||
If a CoAP-to-HTTP proxy is in the path be | <t> | |||
tween EEs and CA or EEs and RA then, if the server supports, it MUST use the chu | If a CoAP-to-HTTP proxy is in the path be | |||
nked transfer encoding <xref target="RFC9112" /> to send data over the HTTP tran | tween EEs and an RA or EEs and a CA and if the server supports, then it <bcp14>M | |||
sport. The proxy MUST try to reduce the number of packets sent by using an optim | UST</bcp14> use the chunked transfer encoding <xref target="RFC9112" format="def | |||
al chunk length for the HTTP transport. | ault"/> to send data over the HTTP transport. The proxy <bcp14>MUST</bcp14> try | |||
</t> | to reduce the number of packets sent by using an optimal chunk length for the HT | |||
</section> | TP transport. | |||
<section title="Multicast CoAP" anchor="sect-2.5"> | </t> | |||
<t> | </section> | |||
CMP PKIMessages sent over CoAP MUST NOT use a Multicast desti | <section anchor="sect-2.5" numbered="true" toc="default"> | |||
nation address. | <name>Multicast CoAP</name> | |||
</t> | <t> | |||
</section> | CMP PKIMessages sent over CoAP <bcp14>MUST NOT</bcp14> use a | |||
Multicast destination address. | ||||
<section title="Announcement PKIMessage" anchor="sect-2.6 | </t> | |||
"> | </section> | |||
<t> | <section anchor="sect-2.6" numbered="true" toc="default"> | |||
A CMP server may publish announcements, t | <name>Announcement PKIMessage</name> | |||
hat can be event triggered or periodic, for the other PKI entities. | <t> | |||
Here is the list of CMP announcement mess | A CMP server may publish announcements th | |||
ages prefixed by their respective ASN.1 identifier (section 5.1.2 <xref target=" | at can be triggered by an event or periodicly for the other PKI entities. | |||
RFC4210"/>) | Here is the list of CMP announcement mess | |||
</t> | ages prefixed by their respective ASN.1 identifier (see <xref target="RFC4210" f | |||
<figure> | ormat="default" sectionFormat="of" section="5.1.2"/>): | |||
<artwork> | </t> | |||
<![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
[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 | |||
]]></artwork> | ||||
]]> | <t> | |||
</artwork> | An EE <bcp14>MAY</bcp14> use the CoAP Obs | |||
</figure> | erve Option <xref target="RFC7641" format="default"/> to register itself to get | |||
<t> | any announcement messages from the RA or CA. The EE can send a GET request to th | |||
An EE MAY use CoAP Observe option <xref t | e server's URI suffixed by "/ann". For example, a path to register for announcem | |||
arget="RFC7641" /> to register itself to get any announcement messages from the | ent messages may look like this: | |||
RA or CA. The EE can send a GET request to the server's URI suffixed by "/ann". | </t> | |||
For example a path to register for announcement messages may look like this: | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
<figure> | ||||
<artwork> | ||||
<![CDATA[ | ||||
coap://www.example.com/.well-known/cmp/ann | coap://www.example.com/.well-known/cmp/ann | |||
coap://www.example.com/.well-known/cmp/p/<profileLabel>/ann | coap://www.example.com/.well-known/cmp/p/<profileLabel>/ann | |||
]]> | ]]></artwork> | |||
</artwork> | <t> | |||
</figure> | If the server supports CMP announcement m | |||
If the server supports CMP Announcements | essages, then it <bcp14>MUST</bcp14> send an appropriate Success 2.xx response c | |||
messages, then it MUST send appropriate Success 2.xx response code, otherwise it | ode; otherwise, it <bcp14>MUST</bcp14> send an appropriate Client Error 4.xx or | |||
MUST send an appropriate Client Error 4.xx or Server Error 5.xx response code. | Server Error 5.xx response code. If for some reason the server cannot add the cl | |||
If for some reason the server cannot add the client to its list of observers for | ient to its list of observers for the announcements, it can omit the Observe Opt | |||
the announcements, it can omit the Observe option <xref target="RFC7641" /> in | ion <xref target="RFC7641" format="default"/> in the response to the client. Upo | |||
the response to the client. A client on receiving a 2.xx success response withou | n receiving a Success 2.xx response without the Observe Option <xref target="RFC | |||
t the Observe option <xref target="RFC7641" /> MAY try after some time to regist | 7641" format="default"/>, after some time, a client <bcp14>MAY</bcp14> try to re | |||
er again for announcements from the CMP server. Since server can remove the EE f | gister again for announcements from the CMP server. Since a server can remove th | |||
rom the list of observers for announcement messages, an EE SHOULD periodically r | e EE from the list of observers for announcement messages, an EE <bcp14>SHOULD</ | |||
e-register itself for announcement messages. | bcp14> periodically reregister itself for announcement messages. | |||
</t> | </t> | |||
<t> | <t> | |||
Alternatively, an EE MAY periodically poll for the current s | Alternatively, an EE <bcp14>MAY</bcp14> periodically poll fo | |||
tatus of the CA via the "PKI Information Request" message, see section 6.5 of <x | r the current status of the CA via the "PKI Information Request" message; see <x | |||
ref target="RFC4210" />. If supported, EEs MAY also use "Support Messages" defin | ref target="RFC4210" section="6.5" sectionFormat="of" format="default"/>. If sup | |||
ed in section 4.3 of <xref target="I-D.ietf-lamps-lightweight-cmp-profile">Light | ported, EEs <bcp14>MAY</bcp14> also use "support messages" defined in <xref targ | |||
weight CMP Profile</xref> to get information about the CA status. | et="RFC9483" section="4.3" sectionFormat="of" format="default">Lightweight CMP P | |||
These mechanisms will help constrained de | rofile</xref> to get information about the CA status. | |||
vices, that are acting as EEs, to conserve resources by eliminating the need to | These mechanisms will help constrained de | |||
create an endpoint for receiving notifications from RA or CA. It will also simpl | vices that are acting as EEs to conserve resources by eliminating the need to cr | |||
ify the implementation of a CoAP-to-HTTP proxy. | eate an endpoint for receiving notifications from the RA or CA. It will also sim | |||
</t> | plify the implementation of a CoAP-to-HTTP proxy. | |||
</section> | </t> | |||
</section> | </section> | |||
<section title="Proxy Support" anchor="sect-3"> | </section> | |||
<t> | <section anchor="sect-3" numbered="true" toc="default"> | |||
<name>Proxy Support</name> | ||||
<t> | ||||
This section provides guidance on using a CoAP-to -HTTP proxy between EEs and RAs or CAs in order to avoid changes to the existing PKI implementation. </t> | This section provides guidance on using a CoAP-to -HTTP proxy between EEs and RAs or CAs in order to avoid changes to the existing PKI implementation. </t> | |||
<t> | ||||
Since the CMP payload is the same over CoAP and | ||||
HTTP transfer mechanisms, a CoAP-to-HTTP cross-protocol proxy can be implemented | ||||
based on <xref target="RFC7252" section="10" sectionFormat="of" format="default | ||||
"/>. The CoAP-to-HTTP proxy can either be located closer to the EEs or closer to | ||||
the RA or CA. The proxy <bcp14>MAY</bcp14> support service discovery and resour | ||||
ce discovery, as described in <xref target="sect-2.2"/>. The CoAP-to-HTTP proxy | ||||
<bcp14>MUST</bcp14> function as a reverse proxy, only permitting connections to | ||||
a limited set of preconfigured servers. It is out of scope of this document to s | ||||
pecify how a reverse proxy can route CoAP client requests to one of the configur | ||||
ed servers. Some recommended mechanisms are as follows: | ||||
</t> | ||||
<ul spacing="normal"> | ||||
<li>Use the Uri-Path option to identify a server.</li> | ||||
<li>Use separate hostnames for each of the configured servers and then u | ||||
se the Uri-Host option for routing the CoAP requests.</li> | ||||
<li>Use separate hostnames for each of the configured servers and then u | ||||
se Server Name Indication <xref target="RFC8446" format="default"/> in case of t | ||||
he "coaps://" scheme for routing CoAP requests.</li> | ||||
</ul> | ||||
<t/> | ||||
</section> | ||||
<section anchor="sect-4" numbered="true" toc="default"> | ||||
<name>Security Considerations</name> | ||||
<ul spacing="compact"> | ||||
<li> | ||||
If PKIProtection is used, the PKIHeader and PKIBody of the CMP a | ||||
re cryptographically protected against malicious modifications. As such, UDP can | ||||
be used without compromising the security of the CMP. Security considerations f | ||||
or CoAP are defined in <xref target="RFC7252" format="default"/>. | ||||
</li> | ||||
<li> | ||||
The CMP does not provide confidentiality of the CMP payloads. If | ||||
confidentiality is desired, CoAP over DTLS <xref target="RFC9147" format="defau | ||||
lt"/> <bcp14>SHOULD</bcp14> be used to provide confidentiality for the CMP paylo | ||||
ads; although, it cannot conceal that the CMP is used within the DTLS layer. | ||||
</li> | ||||
<li> | ||||
<xref target="RFC7252" section="9.1" sectionForma | ||||
t="of" format="default"/> defines how to use DTLS <xref target="RFC9147" format= | ||||
"default"/> for securing CoAP. DTLS <xref target="RFC9147" format="default"/> as | ||||
sociations <bcp14>SHOULD</bcp14> be kept alive and reused where possible to amor | ||||
tize on the additional overhead of DTLS on constrained devices. | ||||
</li> | ||||
<li> | ||||
An EE might not witness all of the announcement messages when u | ||||
sing the CoAP Observe Option <xref target="RFC7641" format="default"/>, since th | ||||
e Observe Option is a "best-effort" approach and the server might lose its state | ||||
for subscribers to its announcement messages. The EEs may use an alternate meth | ||||
od described in <xref target="sect-2.6"/> to obtain time critical changes, such | ||||
as Certificate Revocation List (CRL) <xref target="RFC5280" format="default"/> u | ||||
pdates. | ||||
</li> | ||||
<li> | ||||
Implementations <bcp14>SHOULD</bcp14> use the ava | ||||
ilable datagram size and avoid sending small datagrams containing partial CMP PK | ||||
IMessage data in order to reduce memory usage for packet buffering. | ||||
</li> | ||||
<li> | ||||
A CoAP-to-HTTP proxy can also protect the PKI ent | ||||
ities by handling UDP and CoAP messages. The proxy can mitigate attacks, like de | ||||
nial-of-service attacks, replay attacks, and resource-exhaustion attacks, by enf | ||||
orcing basic checks, like validating that the ASN.1 syntax is compliant to CMP m | ||||
essages and validating the PKIMessage protection before sending them to PKI enti | ||||
ties. | ||||
</li> | ||||
<li> | ||||
Since the proxy may have access to the CMP-level | ||||
metadata and control over the flow of CMP messages, proper role-based access con | ||||
trol should be in place. The proxy can be deployed at the edge of the "end entit | ||||
ies" network or in front of an RA and CA to protect them. However, the proxy may | ||||
itself be vulnerable to resource-exhaustion attacks as it's required to buffer | ||||
the CMP messages received over CoAP transport before sending it to the HTTP endp | ||||
oint. This can be mitigated by using short timers for discarding the buffered me | ||||
ssages and rate limiting clients based on the resource usage. | ||||
</li> | ||||
</ul> | ||||
</section> | ||||
<section anchor="sect-5" numbered="true" toc="default"> | ||||
<name>IANA Considerations</name> | ||||
<!-- Note: IANA removed the "Content Coding text from CoAP Content-Format 259" b | ||||
ased on feedback from the DE. --> | ||||
<t> | ||||
IANA has registered "application/pkixcmp" (ID 259) in the <eref t | ||||
arget="https://www.iana.org/assignments/core-parameters" brackets="angle">"CoAP | ||||
Content-Formats" registry</eref> to transfer CMP transactions over CoAP. | ||||
</t> | ||||
<dl newline="false" spacing="compact"> | ||||
<dt>Type name:</dt> | ||||
<dd>application</dd> | ||||
<dt>Subtype name:</dt> | ||||
<dd>pkixcmp</dd> | ||||
<dt>Reference:</dt> | ||||
<dd>RFC 9482 | ||||
<xref target="RFC4210" format="default"/></dd> | ||||
</dl> | ||||
<t>IANA has also registered a new path segment "ann" in the <eref target=" | ||||
https://www.iana.org/assignments/cmp" brackets="angle">"CMP Well-Known URI Path | ||||
Segments" registry</eref> for the EEs to register themselves for the announcemen | ||||
t messages. | ||||
</t> | ||||
<dl newline="false" spacing="compact"> | ||||
<dt>Path Segment:</dt> | ||||
<dd>ann</dd> | ||||
<dt>Description:</dt> | ||||
<dd>The path to send a GET request with the CoAP Observe Option to regist | ||||
er for CMP announcement messages.</dd> | ||||
<dt>Reference:</dt> | ||||
<dd>RFC 9482</dd> | ||||
</dl> | ||||
<t> | ||||
IANA has added this document as a reference for the "cmp" entry | ||||
in the <eref target="https://www.iana.org/assignments/well-known-uris" brackets= | ||||
"angle">"Well-Known URIs" registry</eref>. | ||||
</t> | ||||
<t> | ||||
IANA has also added this document as a reference for the "p" ent | ||||
ry in the <eref target="https://www.iana.org/assignments/cmp/" brackets="angle"> | ||||
"CMP Well-Known URI Path Segments" registry</eref>. | ||||
</t> | ||||
</section> | ||||
</middle> | ||||
<back> | ||||
<references> | ||||
<name>References</name> | ||||
<references> | ||||
<name>Normative References</name> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | ||||
119.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
174.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
712.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 | ||||
210.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | ||||
252.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | ||||
959.xml"/> | ||||
<t> | <reference anchor="RFC9480" target="https://www.rfc-editor.org/info/rfc9480"> | |||
Since CMP payload is the same over CoAP and HTTP | <front> | |||
transfer mechanisms, a CoAP-to-HTTP cross-protocol proxy can be implemented bas | <title>Certificate Management Protocol (CMP) Updates</title> | |||
ed on section 10 of <xref target="RFC7252" />. The CoAP-to-HTTP proxy can either | <author initials='H' surname='Brockhaus' fullname='Hendrik Brockhaus' role='edit | |||
be located closer to the EEs or closer to the RA or CA. The proxy MAY support s | or'> | |||
ervice discovery and resource discovery as described in section 2.2. The CoAP-to | <organization /> | |||
-HTTP proxy MUST function as a reverse proxy, only permitting connections to a l | </author> | |||
imited set of pre-configured servers. It is out of scope of this document to spe | <author initials='D' surname='von Oheimb' fullname='David von Oheimb'> | |||
cify how a reverse proxy can route CoAP client requests to one of the configured | <organization /> | |||
servers. Some recommended mechanisms are as follows: | </author> | |||
</t> | <author initials="J" surname="Gray" fullname="John Gray"> | |||
<t> | <organization/> | |||
<list style="symbols"> | </author> | |||
<?rfc subcompact="yes"?> | <date year='2023' month='October'/> | |||
<t> | </front> | |||
Use the Uri-Path option to identi | <seriesInfo name="RFC" value="9480"/> | |||
fy a server. | <seriesInfo name="DOI" value="10.17487/RFC9480"/> | |||
</t> | </reference> | |||
<t> | ||||
Use separate hostnames for each o | ||||
f the configured servers and then use the Uri-Host option for routing the CoAP r | ||||
equests. | ||||
</t> | ||||
<t> | ||||
Use separate hostnames for each o | ||||
f the configured servers and then use Server Name Indication <xref target="RFC84 | ||||
46" /> in case of "coaps://" scheme for routing CoAP requests. | ||||
</t> | ||||
</list> | ||||
</t> | ||||
<t></t> | ||||
</section> | ||||
<section title="Security Considerations" anchor="sect-4"> | ||||
<list style="symbols"> | ||||
<t> | ||||
If PKIProtection is used, the PKIHeader and PKIBody of the CMP p | ||||
rotocol are cryptographically protected against malicious modifications. As such | ||||
, UDP can be used without compromising the security of the CMP protocol. Securit | ||||
y Considerations for CoAP are defined in <xref target="RFC7252" />. | ||||
</t> | ||||
<t> | ||||
The CMP protocol does not provide confidentiality of the CMP pay | ||||
loads. If confidentiality is desired, CoAP over DTLS <xref target="RFC9147"/> SH | ||||
OULD be used to provide confidentiality for the CMP payloads, although it cannot | ||||
conceal that the CMP protocol is used within the DTLS layer. | ||||
</t> | ||||
<t> | ||||
Section 9.1 of <xref target="RFC7252" /> defines | ||||
how to use DTLS <xref target="RFC9147" /> for securing the CoAP. DTLS <xref targ | ||||
et="RFC9147" /> associations SHOULD be kept alive and re-used where possible to | ||||
amortize on the additional overhead of DTLS on constrained devices. | ||||
</t> | ||||
<t> | ||||
An EE might not witness all of the Announcement messages when u | ||||
sing the CoAP Observe option <xref target="RFC7641" />, since the Observe option | ||||
is a "best-effort" approach and the server might lose its state for subscribers | ||||
to its announcement messages. The EEs may use an alternate method described in | ||||
section 2.6 to obtain time critical changes such as CRL <xref target="RFC5280"/> | ||||
updates. | ||||
</t> | ||||
<t> | ||||
Implementations SHOULD use the available datagram | ||||
size and avoid sending small datagrams containing partial CMP PKIMessage data i | ||||
n order to reduce memory usage for packet buffering. | ||||
</t> | ||||
<t> | ||||
A CoAP-to-HTTP proxy can also protect the PKI ent | ||||
ities by handling UDP and CoAP messages. The proxy can mitigate attacks like den | ||||
ial of service attacks, replay attacks and resource-exhaustion attacks by enforc | ||||
ing basic checks like validating that the ASN.1 syntax is compliant to CMP messa | ||||
ges and validating the PKIMessage protection before sending them to PKI entities | ||||
. | ||||
</t> | ||||
<t> | ||||
Since the Proxy may have access to the CMP-Level | ||||
metadata and control over the flow of CMP messages therefore proper role based a | ||||
ccess control should be in place. The proxy can be deployed at the edge of the " | ||||
End Entities" network or in front of an RA and CA to protect them. The proxy how | ||||
ever may itself be vulnerable to resource-exhaustion attacks as it's required to | ||||
buffer the CMP messages received over CoAP transport before sending it to the H | ||||
TTP endpoint. This can be mitigated by using short timers for discarding the buf | ||||
fered messages and rate limiting clients based on the resource usage. | ||||
</t> | ||||
</list> | ||||
</section> | ||||
<section title="IANA Considerations" anchor="sect-5"> | ||||
<t> | ||||
This document adds a new entry to the <er | ||||
ef target="https://www.iana.org/assignments/core-parameters/core-parameters.xhtm | ||||
l#content-formats">CoAP Content-Formats IANA Registry</eref> for the code of con | ||||
tent-type "application/pkixcmp", for transferring CMP transactions over CoAP, fr | ||||
om the identifier range 256-9999 reserved for IETF specifications. | ||||
</t> | ||||
<t> | ||||
Type name: application | ||||
</t> | ||||
<t> | ||||
Subtype name: pkixcmp | ||||
</t> | ||||
<t> | ||||
Encoding: Content may contain arbitrary octet val | ||||
ues. The octet values are the ASN.1 DER encoding of a PKI message, as defined in | ||||
the | ||||
<xref target="RFC4210" /> | ||||
specifications. | ||||
</t> | ||||
<t> | ||||
Reference: This document and | ||||
<xref target="RFC4210" /> | ||||
</t> | ||||
<t> | ||||
This document also adds a new path segmen | ||||
t "ann" to the <eref target="https://www.iana.org/assignments/cmp/cmp.xhtml#cmp- | ||||
well-known-uri">CMP Well-Known URI Path Segments</eref> IANA registry for the EE | ||||
s to register themselves for the announcement messages. | ||||
</t> | ||||
<t> | ||||
Path Segment: ann | ||||
</t> | ||||
<t> | ||||
Description: The path to send a GET request with | ||||
CoAP Observer Option to register for CMP announcement messages. | ||||
</t> | ||||
<t> | ||||
Reference: This document. | ||||
</t> | ||||
<t> | ||||
This document references the cmp, in the <eref target="https://w | ||||
ww.iana.org/assignments/well-known-uris/well-known-uris.xhtml">Well-Known URIs</ | ||||
eref> IANA registry. Please add a reference of this document to the <eref target | ||||
="https://www.iana.org/assignments/well-known-uris/well-known-uris.xhtml">Well-K | ||||
nown URIs</eref> IANA registry for that entry. | ||||
</t> | ||||
<t> | ||||
This document also refers the path segment "p" in the <eref targ | ||||
et="https://www.iana.org/assignments/cmp/cmp.xhtml#cmp-well-known-uri">CMP Well- | ||||
Known URI Path Segments</eref> IANA registry. Please add a reference of this doc | ||||
ument to the <eref target="https://www.iana.org/assignments/cmp/cmp.xhtml#cmp-we | ||||
ll-known-uri">CMP Well-Known URI Path Segments</eref> for that path segment. | ||||
</t> | ||||
<t> | ||||
[Note RFC Editor]: This document should be published together or aft | ||||
er the <xref target="I-D.ietf-lamps-cmp-updates"> CMP version 3 </xref> as it re | ||||
ferences IANA entries created by that Internet draft. | ||||
</t> | ||||
</section> | ||||
<section title="Acknowledgments" anchor="sect-6"> | ||||
<t> | ||||
The authors would like to thank Hendrik Brockhaus, David von Ohei | ||||
mb, and Andreas Kretschmer for their guidance in writing the content of this doc | ||||
ument and providing valuable feedback. | ||||
</t> | ||||
</section> | ||||
</middle> | ||||
<back> | <reference anchor="RFC9483" target="https://www.rfc-editor.org/info/rfc9483"> | |||
<front> | ||||
<title>Lightweight Certificate Management Protocol (CMP) Profile</title> | ||||
<author initials='H' surname='Brockhaus' fullname='Hendrik Brockhaus'> | ||||
<organization /> | ||||
</author> | ||||
<author initials='D' surname='von Oheimb' fullname='David von Oheimb'> | ||||
<organization /> | ||||
</author> | ||||
<author initials='S' surname='Fries' fullname='Steffen Fries'> | ||||
<organization /> | ||||
</author> | ||||
<date year='2023' month='October'/> | ||||
</front> | ||||
<seriesInfo name="RFC" value="9483"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC9483"/> | ||||
</reference> | ||||
<!-- References Section --> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
<references title="Normative References"> | 615.xml"/> | |||
&RFC2119; | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | |||
&RFC8174; | 690.xml"/> | |||
&RFC6712; | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | |||
&RFC4210; | 641.xml"/> | |||
&RFC7252; | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | |||
&RFC7959; | 147.xml"/> | |||
&I-D.ietf-lamps-cmp-updates; | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | |||
&I-D.ietf-lamps-lightweight-cmp-profile; | 112.xml"/> | |||
&RFC8615; | </references> | |||
&RFC6690; | <references> | |||
&RFC7641; | <name>Informative References</name> | |||
&RFC9147; | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | |||
&RFC9112; | 280.xml"/> | |||
</references> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
<references title="Informative References"> | 446.xml"/> | |||
&RFC5280; | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
&RFC8446; | 323.xml"/> | |||
&RFC8323; | </references> | |||
</references> | </references> | |||
</back> | <section anchor="sect-6" numbered="false" toc="default"> | |||
<name>Acknowledgements</name> | ||||
<t> | ||||
The authors would like to thank <contact fullname="Hendrik Brockh | ||||
aus"/>, <contact fullname="David von Oheimb"/>, and <contact fullname="Andreas K | ||||
retschmer"/> for their guidance in writing the content of this document and prov | ||||
iding valuable feedback. | ||||
</t> | ||||
</section> | ||||
</back> | ||||
</rfc> | </rfc> | |||
End of changes. 15 change blocks. | ||||
495 lines changed or deleted | 460 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |