<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" submissionType="IETF" category="std" consensus="true" docName="draft-ietf-ace-cmpv2-coap-transport-10" number="9482" ipr="trust200902" obsoletes="" updates="" xml:lang="en" tocInclude="true" symRefs="true" sortRefs="true" prepTime="2023-11-05T07:17:24" indexInclude="true" scripts="Common,Latin" tocDepth="3">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-ace-cmpv2-coap-transport-10" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9482" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="CoAP Transfer for CMP">Constrained Application Protocol (CoAP) Transfer for the Certificate Management Protocol</title>
    <seriesInfo name="RFC" value="9482" stream="IETF"/>
    <author fullname="Mohit Sahni" initials="M" role="editor" surname="Sahni">
      <organization showOnFrontPage="true">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="Tripathi">
      <organization showOnFrontPage="true">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 month="11" year="2023"/>
    <area>sec</area>
    <workgroup>ace</workgroup>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">
					This document specifies the use of the Constrained Application Protocol (CoAP) as a transfer mechanism for the Certificate Management Protocol (CMP). CMP defines the interaction between various PKI entities for the purpose of certificate creation and management. CoAP is an HTTP-like client-server protocol used by various constrained devices in the Internet of Things space. 
      </t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by
            the Internet Engineering Steering Group (IESG).  Further
            information on Internet Standards is available in Section 2 of 
            RFC 7841.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc9482" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2023 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Revised BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Revised BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.1.2">
              <li pn="section-toc.1-1.1.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.1.1"><xref derivedContent="1.1" format="counter" sectionFormat="of" target="section-1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-requirements-language">Requirements Language</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-coap-transfer-mechanism-for">CoAP Transfer Mechanism for CMP</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.2.2">
              <li pn="section-toc.1-1.2.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.2.1.1"><xref derivedContent="2.1" format="counter" sectionFormat="of" target="section-2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-coap-uri-format">CoAP URI Format</xref></t>
              </li>
              <li pn="section-toc.1-1.2.2.2">
                <t indent="0" pn="section-toc.1-1.2.2.2.1"><xref derivedContent="2.2" format="counter" sectionFormat="of" target="section-2.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-discovery-of-cmp-ra-ca">Discovery of CMP RA/CA</xref></t>
              </li>
              <li pn="section-toc.1-1.2.2.3">
                <t indent="0" pn="section-toc.1-1.2.2.3.1"><xref derivedContent="2.3" format="counter" sectionFormat="of" target="section-2.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-coap-request-format">CoAP Request Format</xref></t>
              </li>
              <li pn="section-toc.1-1.2.2.4">
                <t indent="0" pn="section-toc.1-1.2.2.4.1"><xref derivedContent="2.4" format="counter" sectionFormat="of" target="section-2.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-coap-block-wise-transfer-mo">CoAP Block-Wise Transfer Mode</xref></t>
              </li>
              <li pn="section-toc.1-1.2.2.5">
                <t indent="0" pn="section-toc.1-1.2.2.5.1"><xref derivedContent="2.5" format="counter" sectionFormat="of" target="section-2.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-multicast-coap">Multicast CoAP</xref></t>
              </li>
              <li pn="section-toc.1-1.2.2.6">
                <t indent="0" pn="section-toc.1-1.2.2.6.1"><xref derivedContent="2.6" format="counter" sectionFormat="of" target="section-2.6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-announcement-pkimessage">Announcement PKIMessage</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-proxy-support">Proxy Support</xref></t>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.6.2">
              <li pn="section-toc.1-1.6.2.1">
                <t indent="0" pn="section-toc.1-1.6.2.1.1"><xref derivedContent="6.1" format="counter" sectionFormat="of" target="section-6.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.2">
                <t indent="0" pn="section-toc.1-1.6.2.2.1"><xref derivedContent="6.2" format="counter" sectionFormat="of" target="section-6.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgements</xref></t>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="sect-1" numbered="true" toc="include" removeInRFC="false" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">
				The Certificate Management Protocol (CMP)
				<xref target="RFC4210" format="default" sectionFormat="of" derivedContent="RFC4210"/>
				is used by the PKI entities for the generation and management of certificates. One of the requirements of CMP is to be independent of the transport protocol in use. CMP has mechanisms to take care of required transactions, error reporting, and protection of messages.
      </t>
      <t indent="0" pn="section-1-2">
				The Constrained Application Protocol (CoAP) defined in <xref target="RFC7252" format="default" sectionFormat="of" derivedContent="RFC7252"/>, <xref target="RFC7959" format="default" sectionFormat="of" derivedContent="RFC7959"/>, and <xref target="RFC8323" format="default" sectionFormat="of" derivedContent="RFC8323"/> is a client-server protocol like HTTP. It is designed to be used by constrained devices over constrained networks. The recommended transport for CoAP is UDP; however, <xref target="RFC8323" format="default" sectionFormat="of" derivedContent="RFC8323"/> specifies the support of CoAP over TCP, TLS, and WebSockets.
      </t>
      <t indent="0" pn="section-1-3">
				This document specifies the use of CoAP over UDP as a transport medium for
				<xref target="RFC4210" format="default" sectionFormat="of" derivedContent="RFC4210">CMP version 2</xref>, <xref target="RFC9480" format="default" sectionFormat="of" derivedContent="RFC9480"> CMP version 3 </xref> (designated as CMP in this document), and the <xref target="RFC9483" format="default" sectionFormat="of" derivedContent="RFC9483">Lightweight CMP Profile</xref>. In general, this document follows the HTTP transfer for CMP specifications defined in <xref target="RFC6712" format="default" sectionFormat="of" derivedContent="RFC6712"/> and specifies the requirements for using CoAP as a transfer mechanism for CMP.
      </t>
      <t indent="0" pn="section-1-4">
This document also provides guidance on how to use a "CoAP-to-HTTP" proxy to ease adoption of a CoAP transfer mechanism by enabling the interconnection with existing PKI entities already providing CMP over HTTP.
      </t>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-1.1">
        <name slugifiedName="name-requirements-language">Requirements Language</name>
        <t indent="0" pn="section-1.1-1">
    The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
    "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
    described in BCP 14 <xref target="RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> 
    when, and only when, they appear in all capitals, as shown here.
        </t>
      </section>
    </section>
    <section anchor="sect-2" numbered="true" toc="include" removeInRFC="false" pn="section-2">
      <name slugifiedName="name-coap-transfer-mechanism-for">CoAP Transfer Mechanism for CMP</name>
      <t indent="0" pn="section-2-1">
				A CMP transaction consists of exchanging PKIMessages
				<xref target="RFC4210" format="default" sectionFormat="of" derivedContent="RFC4210"/>
				between PKI end entities (EEs), registration authorities (RAs), and certification authorities (CAs). If the EEs are constrained devices, then they may prefer, as a CMP client, the use of CoAP instead of HTTP as the transfer mechanism. 
				In general, the RAs and CAs are not constrained and can support both CoAP and HTTP client and server implementations. 
				This section specifies how to use CoAP as the transfer mechanism for CMP.
      </t>
      <section anchor="sect-2.1" numbered="true" toc="include" removeInRFC="false" pn="section-2.1">
        <name slugifiedName="name-coap-uri-format">CoAP URI Format</name>
        <t indent="0" pn="section-2.1-1">
					The CoAP URI format is described in <xref target="RFC7252" section="6" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7252#section-6" derivedContent="RFC7252"/>. The CoAP endpoints <bcp14>MUST</bcp14> support use of the path prefix "/.well-known/" as defined in
					<xref target="RFC8615" format="default" sectionFormat="of" derivedContent="RFC8615"/>
					and the registered name "cmp" to help with endpoint discovery and interoperability. Optional path segments <bcp14>MAY</bcp14> be added after the registered application name (i.e., after "/.well-known/cmp") to provide distinction. The path
					segment 'p' followed by an arbitraryLabel  &lt;name&gt; could, for example, support the differentiation of specific CAs or certificate profiles. Further path segments, for example, as specified in <xref target="RFC9483" format="default" sectionFormat="of" derivedContent="RFC9483">Lightweight CMP Profile</xref>, could indicate PKI management operations using an operationLabel &lt;operation&gt;. A valid full CMP URI can look like this:
        </t>
        <artwork name="" type="" align="left" alt="" pn="section-2.1-2">				
    coap://www.example.com/.well-known/cmp
    coap://www.example.com/.well-known/cmp/&lt;operation&gt;
    coap://www.example.com/.well-known/cmp/p/&lt;profileLabel&gt;
    coap://www.example.com/.well-known/cmp/p/&lt;profileLabel&gt;/&lt;operation&gt;
					</artwork>
      </section>
      <section anchor="sect-2.2" numbered="true" toc="include" removeInRFC="false" pn="section-2.2">
        <name slugifiedName="name-discovery-of-cmp-ra-ca">Discovery of CMP RA/CA</name>
        <t indent="0" pn="section-2.2-1">
					The EEs can be configured with enough information to form the CMP server URI. The minimum information that can be configured is the scheme, i.e., "coap:" or "coaps:", and the authority portion of the URI, e.g., "example.com:5683". If the port number is not specified in the authority, then the default port numbers <bcp14>MUST</bcp14> be assumed for the "coap:" and "coaps:" scheme URIs. The default port for "coap:" scheme URIs is 5683 and the default port for "coaps:" scheme URIs is 5684 <xref target="RFC7252" format="default" sectionFormat="of" derivedContent="RFC7252"/>.
        </t>
        <t indent="0" pn="section-2.2-2">
					Optionally, in the environments where a Local RA or CA is deployed, EEs can also use the CoAP service discovery mechanism	<xref target="RFC7252" format="default" sectionFormat="of" derivedContent="RFC7252"/> to discover the URI of the Local RA or CA. The CoAP CMP endpoints supporting service discovery <bcp14>MUST</bcp14> also support resource discovery in the Constrained RESTful Environments (CoRE) Link Format, as described in <xref target="RFC6690" format="default" sectionFormat="of" derivedContent="RFC6690"/>. The link <bcp14>MUST</bcp14> include the 'ct' attribute defined in <xref target="RFC7252" section="7.2.1" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7252#section-7.2.1" derivedContent="RFC7252"/> with the value of "application/pkixcmp", as defined in the "CoAP Content-Formats" IANA registry.
        </t>
      </section>
      <section anchor="sect-2.3" numbered="true" toc="include" removeInRFC="false" pn="section-2.3">
        <name slugifiedName="name-coap-request-format">CoAP Request Format</name>
        <t indent="0" pn="section-2.3-1">
					The CMP PKIMessages <bcp14>MUST</bcp14> be DER encoded and sent as the body of the CoAP POST request. A CMP client <bcp14>MUST</bcp14> send each CoAP request marked as a Confirmable message <xref target="RFC7252" format="default" sectionFormat="of" derivedContent="RFC7252"/>. If the CoAP request is successful, then the CMP RA or CA <bcp14>MUST</bcp14> return a Success 2.xx response code; otherwise, the CMP RA or CA <bcp14>MUST</bcp14> return an appropriate Client Error 4.xx or Server Error 5.xx response code. A CMP RA or CA may choose to send a piggybacked response <xref target="RFC7252" format="default" sectionFormat="of" derivedContent="RFC7252"/> to the client, or it <bcp14>MAY</bcp14> send a separate response <xref target="RFC7252" format="default" sectionFormat="of" derivedContent="RFC7252"/> in case it takes some time for the RA or CA to process the CMP transaction.
        </t>
        <t indent="0" pn="section-2.3-2">
		            When transferring CMP PKIMessage over CoAP, the content-format "application/pkixcmp" <bcp14>MUST</bcp14> be used. 
        </t>
      </section>
      <section anchor="sect-2.4" numbered="true" toc="include" removeInRFC="false" pn="section-2.4">
        <name slugifiedName="name-coap-block-wise-transfer-mo">CoAP Block-Wise Transfer Mode</name>
        <t indent="0" pn="section-2.4-1">
					A CMP PKIMessage consists of a header, body, protection, and extraCerts structure, which may contain many optional and potentially large fields. Thus, a CMP message can be much larger than the Maximum Transmission Unit (MTU) of the outgoing interface of the device. The EEs and RAs or CAs <bcp14>MUST</bcp14> use the block-wise transfer mode
					<xref target="RFC7959" format="default" sectionFormat="of" derivedContent="RFC7959"/> to transfer such large messages instead of relying on IP fragmentation.
        </t>
        <t indent="0" pn="section-2.4-2">
					If a CoAP-to-HTTP proxy is in the path between EEs and an RA or EEs and a CA and if the server supports, then it <bcp14>MUST</bcp14> use the chunked transfer encoding <xref target="RFC9112" format="default" sectionFormat="of" derivedContent="RFC9112"/> to send data over the HTTP transport. The proxy <bcp14>MUST</bcp14> try to reduce the number of packets sent by using an optimal chunk length for the HTTP transport.
        </t>
      </section>
      <section anchor="sect-2.5" numbered="true" toc="include" removeInRFC="false" pn="section-2.5">
        <name slugifiedName="name-multicast-coap">Multicast CoAP</name>
        <t indent="0" pn="section-2.5-1">
		    CMP PKIMessages sent over CoAP <bcp14>MUST NOT</bcp14> use a Multicast destination address.
        </t>
      </section>
      <section anchor="sect-2.6" numbered="true" toc="include" removeInRFC="false" pn="section-2.6">
        <name slugifiedName="name-announcement-pkimessage">Announcement PKIMessage</name>
        <t indent="0" pn="section-2.6-1">
					A CMP server may publish announcements that can be  triggered by an event or periodically for the other PKI entities. 
					Here is the list of CMP announcement messages prefixed by their respective ASN.1 identifier (see <xref target="RFC4210" format="default" sectionFormat="of" section="5.1.2" derivedLink="https://rfc-editor.org/rfc/rfc4210#section-5.1.2" derivedContent="RFC4210"/>):
        </t>
        <artwork name="" type="" align="left" alt="" pn="section-2.6-2">
      [15] CA Key Update Announcement
      [16] Certificate Announcement
      [17] Revocation Announcement
      [18] CRL Announcement
					</artwork>
        <t indent="0" pn="section-2.6-3">
					An EE <bcp14>MAY</bcp14> use the CoAP Observe Option <xref target="RFC7641" format="default" sectionFormat="of" derivedContent="RFC7641"/> to register itself to get any announcement messages from the RA or CA. The EE can send a GET request to the server's URI suffixed by "/ann". For example, a path to register for announcement messages may look like this:
        </t>
        <artwork name="" type="" align="left" alt="" pn="section-2.6-4">
    coap://www.example.com/.well-known/cmp/ann
    coap://www.example.com/.well-known/cmp/p/&lt;profileLabel&gt;/ann
						</artwork>
        <t indent="0" pn="section-2.6-5">
					If the server supports CMP announcement messages, then it <bcp14>MUST</bcp14> send an appropriate Success 2.xx response code; otherwise, it <bcp14>MUST</bcp14> send an appropriate Client Error 4.xx or Server Error 5.xx response code. If for some reason the server cannot add the client to its list of observers for the announcements, it can omit the Observe Option <xref target="RFC7641" format="default" sectionFormat="of" derivedContent="RFC7641"/> in the response to the client. Upon receiving a Success 2.xx response without the Observe Option <xref target="RFC7641" format="default" sectionFormat="of" derivedContent="RFC7641"/>, after some time, a client <bcp14>MAY</bcp14> try to register again for announcements from the CMP server. Since a server can remove the EE from the list of observers for announcement messages, an EE <bcp14>SHOULD</bcp14> periodically reregister itself for announcement messages.
        </t>
        <t indent="0" pn="section-2.6-6">
                    Alternatively, an EE <bcp14>MAY</bcp14> periodically poll for the current status of the CA via the "PKI Information Request" message; see <xref target="RFC4210" section="6.5" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc4210#section-6.5" derivedContent="RFC4210"/>. If supported, EEs <bcp14>MAY</bcp14> also use "support messages" defined in <xref target="RFC9483" section="4.3" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9483#section-4.3" derivedContent="RFC9483">Lightweight CMP Profile</xref> to get information about the CA status.
					These mechanisms will help constrained devices that are acting as EEs to conserve resources by eliminating the need to create an endpoint for receiving notifications from the RA or CA. It will also simplify the implementation of a CoAP-to-HTTP proxy.
        </t>
      </section>
    </section>
    <section anchor="sect-3" numbered="true" toc="include" removeInRFC="false" pn="section-3">
      <name slugifiedName="name-proxy-support">Proxy Support</name>
      <t indent="0" pn="section-3-1">
				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 indent="0" pn="section-3-2">
				 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" derivedLink="https://rfc-editor.org/rfc/rfc7252#section-10" derivedContent="RFC7252"/>. 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 resource discovery, as described in <xref target="sect-2.2" format="default" sectionFormat="of" derivedContent="Section 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 specify how a reverse proxy can route CoAP client requests to one of the configured servers. Some recommended mechanisms are as follows:
      </t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3-3">
        <li pn="section-3-3.1">Use the Uri-Path option to identify a server.</li>
        <li pn="section-3-3.2">Use separate hostnames for each of the configured servers and then use the Uri-Host option for routing the CoAP requests.</li>
        <li pn="section-3-3.3">Use separate hostnames for each of the configured servers and then use Server Name Indication <xref target="RFC8446" format="default" sectionFormat="of" derivedContent="RFC8446"/> in case of the "coaps://" scheme for routing CoAP requests.</li>
      </ul>
      <t indent="0" pn="section-3-4"/>
    </section>
    <section anchor="sect-4" numbered="true" toc="include" removeInRFC="false" pn="section-4">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <ul spacing="compact" bare="false" empty="false" indent="3" pn="section-4-1">
        <li pn="section-4-1.1">
                If PKIProtection is used, the PKIHeader and PKIBody of the CMP are cryptographically protected against malicious modifications. As such, UDP can be used without compromising the security of the CMP. Security considerations for CoAP are defined in <xref target="RFC7252" format="default" sectionFormat="of" derivedContent="RFC7252"/>.
            </li>
        <li pn="section-4-1.2">
                The CMP does not provide confidentiality of the CMP payloads. If confidentiality is desired, CoAP over DTLS <xref target="RFC9147" format="default" sectionFormat="of" derivedContent="RFC9147"/> <bcp14>SHOULD</bcp14> be used to provide confidentiality for the CMP payloads; although, it cannot conceal that the CMP is used within the DTLS layer.
			</li>
        <li pn="section-4-1.3">
          <xref target="RFC7252" section="9.1" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7252#section-9.1" derivedContent="RFC7252"/> defines how to use DTLS <xref target="RFC9147" format="default" sectionFormat="of" derivedContent="RFC9147"/> for securing CoAP. DTLS <xref target="RFC9147" format="default" sectionFormat="of" derivedContent="RFC9147"/> associations <bcp14>SHOULD</bcp14> be kept alive and reused where possible to amortize on the additional overhead of DTLS on constrained devices.
			</li>
        <li pn="section-4-1.4">
                 An EE might not witness all of the announcement messages when using the CoAP Observe Option <xref target="RFC7641" format="default" sectionFormat="of" derivedContent="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 <xref target="sect-2.6" format="default" sectionFormat="of" derivedContent="Section 2.6"/> to obtain time critical changes, such as Certificate Revocation List (CRL) <xref target="RFC5280" format="default" sectionFormat="of" derivedContent="RFC5280"/> updates. 
			</li>
        <li pn="section-4-1.5"> 
				Implementations <bcp14>SHOULD</bcp14> use the available datagram size and avoid sending small datagrams containing partial CMP PKIMessage data in order to reduce memory usage for packet buffering. 
			</li>
        <li pn="section-4-1.6">
				A CoAP-to-HTTP proxy can also protect the PKI entities by handling UDP and CoAP messages. The proxy can mitigate attacks, like denial-of-service attacks, replay attacks, and resource-exhaustion attacks, by enforcing basic checks, like validating that the ASN.1 syntax is compliant to CMP messages and validating the PKIMessage protection before sending them to PKI entities. 
			</li>
        <li pn="section-4-1.7"> 
				Since the proxy may have access to the CMP-level metadata and control over the flow of CMP messages, proper role-based access 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. 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 endpoint. This can be mitigated by using short timers for discarding the buffered messages and rate limiting clients based on the resource usage.
			</li>
      </ul>
    </section>
    <section anchor="sect-5" numbered="true" toc="include" removeInRFC="false" pn="section-5">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-5-1">
		IANA has registered "application/pkixcmp" (ID 259) in the <eref target="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" indent="3" pn="section-5-2">
        <dt pn="section-5-2.1">Type name:</dt>
        <dd pn="section-5-2.2">application</dd>
        <dt pn="section-5-2.3">Subtype name:</dt>
        <dd pn="section-5-2.4">pkixcmp</dd>
        <dt pn="section-5-2.5">Reference:</dt>
        <dd pn="section-5-2.6">RFC 9482
	<xref target="RFC4210" format="default" sectionFormat="of" derivedContent="RFC4210"/></dd>
      </dl>
      <t indent="0" pn="section-5-3">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 announcement messages.
      </t>
      <dl newline="false" spacing="compact" indent="3" pn="section-5-4">
        <dt pn="section-5-4.1">Path Segment:</dt>
        <dd pn="section-5-4.2">ann</dd>
        <dt pn="section-5-4.3">Description:</dt>
        <dd pn="section-5-4.4">The path to send a GET request with the CoAP Observe Option to register for CMP announcement messages.</dd>
        <dt pn="section-5-4.5">Reference:</dt>
        <dd pn="section-5-4.6">RFC 9482</dd>
      </dl>
      <t indent="0" pn="section-5-5">
                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 indent="0" pn="section-5-6"> 
                IANA has also added this document as a reference for the "p" entry 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 pn="section-6">
      <name slugifiedName="name-references">References</name>
      <references pn="section-6.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t indent="0">In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC4210" target="https://www.rfc-editor.org/info/rfc4210" quoteTitle="true" derivedAnchor="RFC4210">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate Management Protocol (CMP)</title>
            <author fullname="C. Adams" initials="C." surname="Adams"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="T. Kause" initials="T." surname="Kause"/>
            <author fullname="T. Mononen" initials="T." surname="Mononen"/>
            <date month="September" year="2005"/>
            <abstract>
              <t indent="0">This document describes the Internet X.509 Public Key Infrastructure (PKI) Certificate Management Protocol (CMP). Protocol messages are defined for X.509v3 certificate creation and management. CMP provides on-line interactions between PKI components, including an exchange between a Certification Authority (CA) and a client system. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4210"/>
          <seriesInfo name="DOI" value="10.17487/RFC4210"/>
        </reference>
        <reference anchor="RFC6690" target="https://www.rfc-editor.org/info/rfc6690" quoteTitle="true" derivedAnchor="RFC6690">
          <front>
            <title>Constrained RESTful Environments (CoRE) Link Format</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <date month="August" year="2012"/>
            <abstract>
              <t indent="0">This specification defines Web Linking using a link format for use by constrained web servers to describe hosted resources, their attributes, and other relationships between links. Based on the HTTP Link Header field defined in RFC 5988, the Constrained RESTful Environments (CoRE) Link Format is carried as a payload and is assigned an Internet media type. "RESTful" refers to the Representational State Transfer (REST) architecture. A well-known URI is defined as a default entry point for requesting the links hosted by a server. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6690"/>
          <seriesInfo name="DOI" value="10.17487/RFC6690"/>
        </reference>
        <reference anchor="RFC6712" target="https://www.rfc-editor.org/info/rfc6712" quoteTitle="true" derivedAnchor="RFC6712">
          <front>
            <title>Internet X.509 Public Key Infrastructure -- HTTP Transfer for the Certificate Management Protocol (CMP)</title>
            <author fullname="T. Kause" initials="T." surname="Kause"/>
            <author fullname="M. Peylo" initials="M." surname="Peylo"/>
            <date month="September" year="2012"/>
            <abstract>
              <t indent="0">This document describes how to layer the Certificate Management Protocol (CMP) over HTTP. It is the "CMPtrans" document referenced in RFC 4210; therefore, this document updates the reference given therein. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6712"/>
          <seriesInfo name="DOI" value="10.17487/RFC6712"/>
        </reference>
        <reference anchor="RFC7252" target="https://www.rfc-editor.org/info/rfc7252" quoteTitle="true" derivedAnchor="RFC7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2014"/>
            <abstract>
              <t indent="0">The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s. The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t indent="0">CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types. CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </reference>
        <reference anchor="RFC7641" target="https://www.rfc-editor.org/info/rfc7641" quoteTitle="true" derivedAnchor="RFC7641">
          <front>
            <title>Observing Resources in the Constrained Application Protocol (CoAP)</title>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <date month="September" year="2015"/>
            <abstract>
              <t indent="0">The Constrained Application Protocol (CoAP) is a RESTful application protocol for constrained nodes and networks. The state of a resource on a CoAP server can change over time. This document specifies a simple protocol extension for CoAP that enables CoAP clients to "observe" resources, i.e., to retrieve a representation of a resource and keep this representation updated by the server over a period of time. The protocol follows a best-effort approach for sending new representations to clients and provides eventual consistency between the state observed by each client and the actual resource state at the server.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7641"/>
          <seriesInfo name="DOI" value="10.17487/RFC7641"/>
        </reference>
        <reference anchor="RFC7959" target="https://www.rfc-editor.org/info/rfc7959" quoteTitle="true" derivedAnchor="RFC7959">
          <front>
            <title>Block-Wise Transfers in the Constrained Application Protocol (CoAP)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="Z. Shelby" initials="Z." role="editor" surname="Shelby"/>
            <date month="August" year="2016"/>
            <abstract>
              <t indent="0">The Constrained Application Protocol (CoAP) is a RESTful transfer protocol for constrained nodes and networks. Basic CoAP messages work well for small payloads from sensors and actuators; however, applications will need to transfer larger payloads occasionally -- for instance, for firmware updates. In contrast to HTTP, where TCP does the grunt work of segmenting and resequencing, CoAP is based on datagram transports such as UDP or Datagram Transport Layer Security (DTLS). These transports only offer fragmentation, which is even more problematic in constrained nodes and networks, limiting the maximum size of resource representations that can practically be transferred.</t>
              <t indent="0">Instead of relying on IP fragmentation, this specification extends basic CoAP with a pair of "Block" options for transferring multiple blocks of information from a resource representation in multiple request-response pairs. In many important cases, the Block options enable a server to be truly stateless: the server can handle each block transfer separately, with no need for a connection setup or other server-side memory of previous block transfers. Essentially, the Block options provide a minimal way to transfer larger representations in a block-wise fashion.</t>
              <t indent="0">A CoAP implementation that does not support these options generally is limited in the size of the representations that can be exchanged, so there is an expectation that the Block options will be widely used in CoAP implementations. Therefore, this specification updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7959"/>
          <seriesInfo name="DOI" value="10.17487/RFC7959"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t indent="0">RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8615" target="https://www.rfc-editor.org/info/rfc8615" quoteTitle="true" derivedAnchor="RFC8615">
          <front>
            <title>Well-Known Uniform Resource Identifiers (URIs)</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <date month="May" year="2019"/>
            <abstract>
              <t indent="0">This memo defines a path prefix for "well-known locations", "/.well-known/", in selected Uniform Resource Identifier (URI) schemes.</t>
              <t indent="0">In doing so, it obsoletes RFC 5785 and updates the URI schemes defined in RFC 7230 to reserve that space. It also updates RFC 7595 to track URI schemes that support well-known URIs in their registry.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8615"/>
          <seriesInfo name="DOI" value="10.17487/RFC8615"/>
        </reference>
        <reference anchor="RFC9112" target="https://www.rfc-editor.org/info/rfc9112" quoteTitle="true" derivedAnchor="RFC9112">
          <front>
            <title>HTTP/1.1</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t indent="0">The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document specifies the HTTP/1.1 message syntax, message parsing, connection management, and related security concerns.</t>
              <t indent="0">This document obsoletes portions of RFC 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="99"/>
          <seriesInfo name="RFC" value="9112"/>
          <seriesInfo name="DOI" value="10.17487/RFC9112"/>
        </reference>
        <reference anchor="RFC9147" target="https://www.rfc-editor.org/info/rfc9147" quoteTitle="true" derivedAnchor="RFC9147">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="April" year="2022"/>
            <abstract>
              <t indent="0">This document specifies version 1.3 of the Datagram Transport Layer Security (DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t indent="0">The DTLS 1.3 protocol is based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability. Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
              <t indent="0">This document obsoletes RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9147"/>
          <seriesInfo name="DOI" value="10.17487/RFC9147"/>
        </reference>
        <reference anchor="RFC9480" target="https://www.rfc-editor.org/info/rfc9480" quoteTitle="true" derivedAnchor="RFC9480">
          <front>
            <title>Certificate Management Protocol (CMP) Updates</title>
            <author initials="H" surname="Brockhaus" fullname="Hendrik Brockhaus">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D" surname="von Oheimb" fullname="David von Oheimb">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J" surname="Gray" fullname="John Gray">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2023" month="November"/>
          </front>
          <seriesInfo name="RFC" value="9480"/>
          <seriesInfo name="DOI" value="10.17487/RFC9480"/>
        </reference>
        <reference anchor="RFC9483" target="https://www.rfc-editor.org/info/rfc9483" quoteTitle="true" derivedAnchor="RFC9483">
          <front>
            <title>Lightweight Certificate Management Protocol (CMP) Profile</title>
            <author initials="H" surname="Brockhaus" fullname="Hendrik Brockhaus">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D" surname="von Oheimb" fullname="David von Oheimb">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S" surname="Fries" fullname="Steffen Fries">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2023" month="November"/>
          </front>
          <seriesInfo name="RFC" value="9483"/>
          <seriesInfo name="DOI" value="10.17487/RFC9483"/>
        </reference>
      </references>
      <references pn="section-6.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="RFC5280" target="https://www.rfc-editor.org/info/rfc5280" quoteTitle="true" derivedAnchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t indent="0">This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC8323" target="https://www.rfc-editor.org/info/rfc8323" quoteTitle="true" derivedAnchor="RFC8323">
          <front>
            <title>CoAP (Constrained Application Protocol) over TCP, TLS, and WebSockets</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="S. Lemay" initials="S." surname="Lemay"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="B. Silverajan" initials="B." surname="Silverajan"/>
            <author fullname="B. Raymor" initials="B." role="editor" surname="Raymor"/>
            <date month="February" year="2018"/>
            <abstract>
              <t indent="0">The Constrained Application Protocol (CoAP), although inspired by HTTP, was designed to use UDP instead of TCP. The message layer of CoAP over UDP includes support for reliable delivery, simple congestion control, and flow control.</t>
              <t indent="0">Some environments benefit from the availability of CoAP carried over reliable transports such as TCP or Transport Layer Security (TLS). This document outlines the changes required to use CoAP over TCP, TLS, and WebSockets transports. It also formally updates RFC 7641 for use with these transports and RFC 7959 to enable the use of larger messages over a reliable transport.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8323"/>
          <seriesInfo name="DOI" value="10.17487/RFC8323"/>
        </reference>
        <reference anchor="RFC8446" target="https://www.rfc-editor.org/info/rfc8446" quoteTitle="true" derivedAnchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t indent="0">This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t indent="0">This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
      </references>
    </references>
    <section anchor="sect-6" numbered="false" toc="include" removeInRFC="false" pn="section-appendix.a">
      <name slugifiedName="name-acknowledgements">Acknowledgements</name>
      <t indent="0" pn="section-appendix.a-1">
		The authors would like to thank <contact fullname="Hendrik Brockhaus"/>, <contact fullname="David von Oheimb"/>, and <contact fullname="Andreas Kretschmer"/> for their guidance in writing the content of this document and providing valuable feedback.
      </t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author fullname="Mohit Sahni" initials="M" role="editor" surname="Sahni">
        <organization showOnFrontPage="true">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="Tripathi">
        <organization showOnFrontPage="true">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>
    </section>
  </back>
</rfc>
