<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.26 (Ruby 2.6.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-acme-integrations-14" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.3 -->
  <front>
    <title abbrev="ACME-INTEGRATIONS">ACME Integrations for Device Certificate Enrollment</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-acme-integrations-14"/>
    <author initials="O." surname="Friel" fullname="Owen Friel">
      <organization>Cisco</organization>
      <address>
        <email>ofriel@cisco.com</email>
      </address>
    </author>
    <author initials="R." surname="Barnes" fullname="Richard Barnes">
      <organization>Cisco</organization>
      <address>
        <email>rlb@ipv.sx</email>
      </address>
    </author>
    <author initials="R." surname="Shekh-Yusef" fullname="Rifaat Shekh-Yusef">
      <organization>Ernst &amp; Young</organization>
      <address>
        <email>rifaat.s.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="M." surname="Richardson" fullname="Michael Richardson">
      <organization>Sandelman Software Works</organization>
      <address>
        <email>mcr+ietf@sandelman.ca</email>
      </address>
    </author>
    <date year="2023" month="May" day="18"/>
    <abstract>
      <t>This document outlines multiple advanced use cases and integrations that ACME facilitates without any modifications or enhancements required to the base ACME specification. The use cases include ACME integration with EST, BRSKI and TEAP.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>ACME <xref target="RFC8555"/> defines a protocol that a certification authority (CA) and an applicant can use to automate the process of domain name ownership validation and X.509 (PKIX) <xref target="RFC5280"/> certificate issuance. The protocol is rich and flexible and enables multiple use cases that are not immediately obvious from reading the specification. This document explicitly outlines multiple advanced ACME use cases including:</t>
      <ul spacing="normal">
        <li>ACME integration with EST <xref target="RFC7030"/></li>
        <li>ACME integration with BRSKI <xref target="RFC8995"/></li>
        <li>ACME integration with BRSKI Default Cloud Registrar <xref target="I-D.ietf-anima-brski-cloud"/></li>
        <li>ACME integration with TEAP <xref target="RFC7170"/></li>
      </ul>
      <t>The integrations with EST, BRSKI (which is based upon EST), and TEAP enable automated certificate enrollment for devices.</t>
      <t>Optionally, ACME for subdomains <xref target="I-D.ietf-acme-subdomains"/> offers a useful optimization when ACME is used to issue certificates for large numbers of devices in the same domain; it reduces the domain ownership proof traffic as well as the ACME traffic overhead. This is accomplished by completing a challenge against the parent domain instead of a challenge against each explicit subdomain. Use of ACME for subdomains is not a requirement.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "OPTIONAL" in this document are to be interpreted as described in BCP
   14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all
   capitals, as shown here.</t>
      <t>The following terms are defined in DNS Terminology <xref target="RFC8499"/> and are reproduced here. Refer to <xref target="RFC8499"/> for further details on these defintions:</t>
      <ul spacing="normal">
        <li>Label: An ordered list of zero or more octets that makes up a
    portion of a domain name.  Using graph theory, a label identifies
    one node in a portion of the graph of all possible domain names.</li>
        <li>Domain Name: An ordered list of one or more labels.</li>
        <li>Subdomain: "A domain is a subdomain of another domain if it is
    contained within that domain.  This relationship can be tested by
    seeing if the subdomain's name ends with the containing domain's
    name."  (Quoted from <xref target="RFC1034"/>, Section 3.1) For example, in the
    host name "nnn.mmm.example.com", both "mmm.example.com" and
    "nnn.mmm.example.com" are subdomains of "example.com".  Note that
    the comparisons here are done on whole labels; that is,
    "ooo.example.com" is not a subdomain of "oo.example.com".</li>
        <li>Fully-Qualified Domain Name (FQDN):  This is often just a clear way
    of saying the same thing as "domain name of a node", as outlined
    above.  However, the term is ambiguous.  Strictly speaking, a
    fully-qualified domain name would include every label, including
    the zero-length label of the root: such a name would be written
    "www.example.net." (note the terminating dot).  But, because every
    name eventually shares the common root, names are often written
    relative to the root (such as "www.example.net") and are still
    called "fully qualified".  This term first appeared in <xref target="RFC0819"/>.
    In this document, names are often written relative to the root.</li>
      </ul>
      <t>The following terms are used in this document:</t>
      <ul spacing="normal">
        <li>BRSKI: Bootstrapping Remote Secure Key Infrastructures <xref target="RFC8995"/></li>
        <li>Pledge:  from <xref target="RFC8366"/>, the prospective device attempting to find and securely join a domain.  When shipped, it only trusts authorized representatives of the manufacturer.</li>
        <li>Certification Authority (CA): An organization that is responsible for the creation, issuance, revocation, and management of Certificates. The term applies equally to both Roots CAs and Subordinate CAs</li>
        <li>CMS: Cryptographic Message Syntax <xref target="RFC5652"/></li>
        <li>CMC: Certificate Management over CMS <xref target="RFC5272"/></li>
        <li>CSR: Certificate Signing Request <xref target="RFC2986"/></li>
        <li>EST: Enrollment over Secure Transport <xref target="RFC7030"/></li>
        <li>MASA: Manufacturer Authorized Signing Authority as defined in <xref target="RFC8995"/></li>
        <li>PKCS: Public-Key Cryptography Standards <xref target="RFC8017"/></li>
        <li>PKCS#7: PKCS Cryptographic Message Syntax <xref target="RFC2315"/></li>
        <li>PKCS#10: PKCS Certification Request  Syntax <xref target="RFC2986"/></li>
        <li>RA: PKI Registration Authority <xref target="RFC2986"/></li>
        <li>TEAP: Tunneled Extensible Authentication Protocol <xref target="RFC7170"/></li>
        <li>TLV: Type-Length-Value format defined in TEAP <xref target="RFC7170"/></li>
      </ul>
    </section>
    <section anchor="pre-requisites-for-integration">
      <name>Pre-requisites for Integration</name>
      <t>In order for the EST server or TEAP server that is part of the BRSKI Registrar to use ACME to create new certificates it needs to have the ability to satisfy the dns-01 challenges that the ACME will issue.</t>
      <t>The EST Registration Authority (RA) is configured with the DNS domain which it will issue certificates. In the examples below, it is "example.com"</t>
      <t>The EST RA is configured with a credential that allows it to update the contents of the DNS domain.
This could be in the form of an <xref target="RFC3007"/> credential such as a TSIG key or a SIG(0) key.
It could also be some other proprietary credential that allows the EST RA to update the database on the DNS provider directly.
As a third option, the EST RA could maintain a zone itself, configured as a stealth primary, with a DNS NS zone cut pointing at the EST RA's DNS server.</t>
    </section>
    <section anchor="acme-integration-with-est">
      <name>ACME Integration with EST</name>
      <t>EST <xref target="RFC7030"/> defines a mechanism for clients to enroll with a PKI Registration Authority by sending Certificate Management over CMS (CMC) <xref target="RFC5272"/> messages over HTTP. EST <xref target="RFC7030"/> Section 1 states:</t>
      <t>"Architecturally, the EST service is located between a Certification Authority (CA) and a client.  It performs several functions traditionally allocated to the Registration Authority (RA) role in a PKI."</t>
      <t>EST <xref target="RFC7030"/> Section 1.1 states that:</t>
      <t>"For certificate issuing services, the EST CA is reached through the EST server; the CA could be logically "behind" the EST server or embedded within it."</t>
      <t>When the CA is logically "behind" the EST RA, EST does not specify how the RA communicates with the CA. EST <xref target="RFC7030"/> Section 1 states:</t>
      <t>"The nature of communication between an EST server and a CA is not described in this document."</t>
      <t>This section outlines how ACME could be used for communication between the EST RA and the CA. The example call flow leverages <xref target="I-D.ietf-acme-subdomains"/> and shows the RA proving ownership of the parent domain "example.com", with the client certificate "client.example.com" being a subdomain under that parent domain. This is an optimization that reduces DNS and ACME traffic overhead when multiple client certificates under that parent domain are required. The RA could of course prove ownership of every explicit client certificate identifier. The example also illustrates using the ACME DNS challenge type, but this integration is not limited to DNS challenges.</t>
      <t>The call flow illustrates the client calling the EST /csrattrs API before calling the EST /simpleenroll API. This enables the server to indicate what fields the client should include in the CSR that the client sends in the /simpleenroll API. CSR Attributes handling are discussed in <xref target="csr-attributes"/>.</t>
      <t>If the CSR includes an identifier that the EST RA does not control, the RA MUST respond with a 4xx HTTP <xref target="RFC9110"/> error code. Refer to section <xref target="error-handling"/> for further details on error handling.</t>
      <t>The call flow illustrates the EST RA returning a 202 Retry-After response to the client's simpleenroll request. This is an optional step and may be necessary if the interactions between the RA and the ACME server take some time to complete. The exact details of when the RA returns a 202 Retry-After are implementation specific.</t>
      <t>This example illustrates, and all subsequent examples in this document illustrate, the use of the ACME 'dns-01' challenge type. This does not preclude the use of any other ACME challenges, however, examples illustrating the use of other challenge types are not documented here.</t>
      <artset>
        <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="1376" width="536" viewBox="0 0 536 1376" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
            <path d="M 8,32 L 8,64" fill="none" stroke="black"/>
            <path d="M 40,72 L 40,96" fill="none" stroke="black"/>
            <path d="M 40,128 L 40,480" fill="none" stroke="black"/>
            <path d="M 40,512 L 40,784" fill="none" stroke="black"/>
            <path d="M 40,816 L 40,1184" fill="none" stroke="black"/>
            <path d="M 40,1216 L 40,1360" fill="none" stroke="black"/>
            <path d="M 80,32 L 80,64" fill="none" stroke="black"/>
            <path d="M 192,32 L 192,64" fill="none" stroke="black"/>
            <path d="M 224,72 L 224,96" fill="none" stroke="black"/>
            <path d="M 224,128 L 224,480" fill="none" stroke="black"/>
            <path d="M 224,512 L 224,784" fill="none" stroke="black"/>
            <path d="M 224,816 L 224,1184" fill="none" stroke="black"/>
            <path d="M 224,1216 L 224,1360" fill="none" stroke="black"/>
            <path d="M 264,32 L 264,64" fill="none" stroke="black"/>
            <path d="M 368,32 L 368,80" fill="none" stroke="black"/>
            <path d="M 408,128 L 408,280" fill="none" stroke="black"/>
            <path d="M 408,296 L 408,456" fill="none" stroke="black"/>
            <path d="M 408,512 L 408,784" fill="none" stroke="black"/>
            <path d="M 408,816 L 408,1184" fill="none" stroke="black"/>
            <path d="M 408,1216 L 408,1360" fill="none" stroke="black"/>
            <path d="M 440,32 L 440,80" fill="none" stroke="black"/>
            <path d="M 480,32 L 480,64" fill="none" stroke="black"/>
            <path d="M 504,72 L 504,96" fill="none" stroke="black"/>
            <path d="M 504,128 L 504,480" fill="none" stroke="black"/>
            <path d="M 504,512 L 504,784" fill="none" stroke="black"/>
            <path d="M 504,816 L 504,1184" fill="none" stroke="black"/>
            <path d="M 504,1216 L 504,1360" fill="none" stroke="black"/>
            <path d="M 528,32 L 528,64" fill="none" stroke="black"/>
            <path d="M 8,32 L 80,32" fill="none" stroke="black"/>
            <path d="M 192,32 L 264,32" fill="none" stroke="black"/>
            <path d="M 368,32 L 440,32" fill="none" stroke="black"/>
            <path d="M 480,32 L 528,32" fill="none" stroke="black"/>
            <path d="M 8,64 L 80,64" fill="none" stroke="black"/>
            <path d="M 192,64 L 264,64" fill="none" stroke="black"/>
            <path d="M 480,64 L 528,64" fill="none" stroke="black"/>
            <path d="M 368,80 L 440,80" fill="none" stroke="black"/>
            <path d="M 232,176 L 400,176" fill="none" stroke="black"/>
            <path d="M 232,224 L 400,224" fill="none" stroke="black"/>
            <path d="M 232,288 L 496,288" fill="none" stroke="black"/>
            <path d="M 232,336 L 400,336" fill="none" stroke="black"/>
            <path d="M 416,368 L 496,368" fill="none" stroke="black"/>
            <path d="M 232,400 L 400,400" fill="none" stroke="black"/>
            <path d="M 232,464 L 496,464" fill="none" stroke="black"/>
            <path d="M 48,544 L 216,544" fill="none" stroke="black"/>
            <path d="M 48,640 L 216,640" fill="none" stroke="black"/>
            <path d="M 48,720 L 216,720" fill="none" stroke="black"/>
            <path d="M 48,768 L 216,768" fill="none" stroke="black"/>
            <path d="M 232,864 L 400,864" fill="none" stroke="black"/>
            <path d="M 232,912 L 400,912" fill="none" stroke="black"/>
            <path d="M 232,992 L 400,992" fill="none" stroke="black"/>
            <path d="M 232,1040 L 400,1040" fill="none" stroke="black"/>
            <path d="M 232,1088 L 400,1088" fill="none" stroke="black"/>
            <path d="M 232,1168 L 400,1168" fill="none" stroke="black"/>
            <path d="M 48,1280 L 216,1280" fill="none" stroke="black"/>
            <path d="M 48,1360 L 216,1360" fill="none" stroke="black"/>
            <polygon class="arrowhead" points="504,464 492,458.4 492,469.6 " fill="black" transform="rotate(0,496,464)"/>
            <polygon class="arrowhead" points="504,368 492,362.4 492,373.6 " fill="black" transform="rotate(0,496,368)"/>
            <polygon class="arrowhead" points="504,288 492,282.4 492,293.6 " fill="black" transform="rotate(0,496,288)"/>
            <polygon class="arrowhead" points="408,1088 396,1082.4 396,1093.6 " fill="black" transform="rotate(0,400,1088)"/>
            <polygon class="arrowhead" points="408,992 396,986.4 396,997.6 " fill="black" transform="rotate(0,400,992)"/>
            <polygon class="arrowhead" points="408,864 396,858.4 396,869.6 " fill="black" transform="rotate(0,400,864)"/>
            <polygon class="arrowhead" points="408,336 396,330.4 396,341.6 " fill="black" transform="rotate(0,400,336)"/>
            <polygon class="arrowhead" points="408,176 396,170.4 396,181.6 " fill="black" transform="rotate(0,400,176)"/>
            <polygon class="arrowhead" points="240,1168 228,1162.4 228,1173.6 " fill="black" transform="rotate(180,232,1168)"/>
            <polygon class="arrowhead" points="240,1040 228,1034.4 228,1045.6 " fill="black" transform="rotate(180,232,1040)"/>
            <polygon class="arrowhead" points="240,912 228,906.4 228,917.6 " fill="black" transform="rotate(180,232,912)"/>
            <polygon class="arrowhead" points="240,400 228,394.4 228,405.6 " fill="black" transform="rotate(180,232,400)"/>
            <polygon class="arrowhead" points="240,224 228,218.4 228,229.6 " fill="black" transform="rotate(180,232,224)"/>
            <polygon class="arrowhead" points="224,1280 212,1274.4 212,1285.6 " fill="black" transform="rotate(0,216,1280)"/>
            <polygon class="arrowhead" points="224,720 212,714.4 212,725.6 " fill="black" transform="rotate(0,216,720)"/>
            <polygon class="arrowhead" points="224,544 212,538.4 212,549.6 " fill="black" transform="rotate(0,216,544)"/>
            <polygon class="arrowhead" points="56,1360 44,1354.4 44,1365.6 " fill="black" transform="rotate(180,48,1360)"/>
            <polygon class="arrowhead" points="56,768 44,762.4 44,773.6 " fill="black" transform="rotate(180,48,768)"/>
            <polygon class="arrowhead" points="56,640 44,634.4 44,645.6 " fill="black" transform="rotate(180,48,640)"/>
            <g class="text">
              <text x="44" y="52">Client</text>
              <text x="216" y="52">EST</text>
              <text x="244" y="52">RA</text>
              <text x="404" y="52">ACME</text>
              <text x="504" y="52">DNS</text>
              <text x="404" y="68">Server</text>
              <text x="408" y="100">|</text>
              <text x="140" y="116">STEP</text>
              <text x="172" y="116">1:</text>
              <text x="256" y="116">Pre-Authorization</text>
              <text x="340" y="116">of</text>
              <text x="380" y="116">parent</text>
              <text x="436" y="116">domain</text>
              <text x="252" y="148">POST</text>
              <text x="312" y="148">/newAuthz</text>
              <text x="296" y="164">"example.com"</text>
              <text x="248" y="212">201</text>
              <text x="324" y="212">authorizations</text>
              <text x="264" y="260">Publish</text>
              <text x="312" y="260">DNS</text>
              <text x="344" y="260">TXT</text>
              <text x="288" y="276">"example.com"</text>
              <text x="252" y="324">POST</text>
              <text x="316" y="324">/challenge</text>
              <text x="444" y="356">Verify</text>
              <text x="248" y="388">200</text>
              <text x="316" y="388">status=valid</text>
              <text x="260" y="436">Delete</text>
              <text x="304" y="436">DNS</text>
              <text x="336" y="436">TXT</text>
              <text x="288" y="452">"example.com"</text>
              <text x="408" y="484">|</text>
              <text x="140" y="500">STEP</text>
              <text x="172" y="500">2:</text>
              <text x="212" y="500">Client</text>
              <text x="272" y="500">enrolls</text>
              <text x="336" y="500">against</text>
              <text x="380" y="500">RA</text>
              <text x="64" y="532">GET</text>
              <text x="120" y="532">/csrattrs</text>
              <text x="64" y="580">200</text>
              <text x="92" y="580">OK</text>
              <text x="84" y="596">SEQUENCE</text>
              <text x="168" y="596">{AttrOrOID}</text>
              <text x="64" y="612">SAN</text>
              <text x="100" y="612">OID:</text>
              <text x="132" y="628">"client.example.com"</text>
              <text x="68" y="676">POST</text>
              <text x="144" y="676">/simpleenroll</text>
              <text x="80" y="692">PCSK#10</text>
              <text x="128" y="692">CSR</text>
              <text x="132" y="708">"client.example.com"</text>
              <text x="64" y="756">202</text>
              <text x="128" y="756">Retry-After</text>
              <text x="140" y="804">STEP</text>
              <text x="172" y="804">3:</text>
              <text x="196" y="804">RA</text>
              <text x="236" y="804">places</text>
              <text x="284" y="804">ACME</text>
              <text x="328" y="804">order</text>
              <text x="252" y="836">POST</text>
              <text x="312" y="836">/newOrder</text>
              <text x="316" y="852">"client.example.com"</text>
              <text x="248" y="900">201</text>
              <text x="316" y="900">status=ready</text>
              <text x="252" y="948">POST</text>
              <text x="312" y="948">/finalize</text>
              <text x="264" y="964">PKCS#10</text>
              <text x="312" y="964">CSR</text>
              <text x="316" y="980">"client.example.com"</text>
              <text x="248" y="1028">200</text>
              <text x="276" y="1028">OK</text>
              <text x="340" y="1028">status=valid</text>
              <text x="252" y="1076">POST</text>
              <text x="324" y="1076">/certificate</text>
              <text x="248" y="1124">200</text>
              <text x="276" y="1124">OK</text>
              <text x="260" y="1140">PKCS#7</text>
              <text x="316" y="1156">"client.example.com"</text>
              <text x="140" y="1204">STEP</text>
              <text x="172" y="1204">4:</text>
              <text x="212" y="1204">Client</text>
              <text x="272" y="1204">retries</text>
              <text x="332" y="1204">enroll</text>
              <text x="68" y="1236">POST</text>
              <text x="144" y="1236">/simpleenroll</text>
              <text x="80" y="1252">PCSK#10</text>
              <text x="128" y="1252">CSR</text>
              <text x="132" y="1268">"client.example.com"</text>
              <text x="64" y="1316">200</text>
              <text x="92" y="1316">OK</text>
              <text x="76" y="1332">PKCS#7</text>
              <text x="132" y="1348">"client.example.com"</text>
            </g>
          </svg>
        </artwork>
        <artwork type="ascii-art"><![CDATA[
+--------+             +--------+            +--------+    +-----+
| Client |             | EST RA |            |  ACME  |    | DNS |
+--------+             +--------+            | Server |    +-----+
    |                      |                 +--------+       |
    |                      |                      |           |
               STEP 1: Pre-Authorization of parent domain
    |                      |                      |           |
    |                      | POST /newAuthz       |           |
    |                      |  "example.com"       |           |
    |                      |--------------------->|           |
    |                      |                      |           |
    |                      | 201 authorizations   |           |
    |                      |<---------------------|           |
    |                      |                      |           |
    |                      | Publish DNS TXT      |           |
    |                      | "example.com"        |           |
    |                      |--------------------------------->|
    |                      |                      |           |
    |                      | POST /challenge      |           |
    |                      |--------------------->|           |
    |                      |                      | Verify    |
    |                      |                      |---------->|
    |                      | 200 status=valid     |           |
    |                      |<---------------------|           |
    |                      |                      |           |
    |                      | Delete DNS TXT       |           |
    |                      | "example.com"        |           |
    |                      |--------------------------------->|
    |                      |                      |           |
               STEP 2: Client enrolls against RA
    |                      |                      |           |
    | GET /csrattrs        |                      |           |
    |--------------------->|                      |           |
    |                      |                      |           |
    | 200 OK               |                      |           |
    | SEQUENCE {AttrOrOID} |                      |           |
    | SAN OID:             |                      |           |
    | "client.example.com" |                      |           |
    |<---------------------|                      |           |
    |                      |                      |           |
    | POST /simpleenroll   |                      |           |
    | PCSK#10 CSR          |                      |           |
    | "client.example.com" |                      |           |
    |--------------------->|                      |           |
    |                      |                      |           |
    | 202 Retry-After      |                      |           |
    |<---------------------|                      |           |
    |                      |                      |           |
               STEP 3: RA places ACME order
    |                      |                      |           |
    |                      | POST /newOrder       |           |
    |                      | "client.example.com" |           |
    |                      |--------------------->|           |
    |                      |                      |           |
    |                      | 201 status=ready     |           |
    |                      |<---------------------|           |
    |                      |                      |           |
    |                      | POST /finalize       |           |
    |                      | PKCS#10 CSR          |           |
    |                      | "client.example.com" |           |
    |                      |--------------------->|           |
    |                      |                      |           |
    |                      | 200 OK status=valid  |           |
    |                      |<---------------------|           |
    |                      |                      |           |
    |                      | POST /certificate    |           |
    |                      |--------------------->|           |
    |                      |                      |           |
    |                      | 200 OK               |           |
    |                      | PKCS#7               |           |
    |                      | "client.example.com" |           |
    |                      |<---------------------|           |
    |                      |                      |           |
               STEP 4: Client retries enroll
    |                      |                      |           |
    | POST /simpleenroll   |                      |           |
    | PCSK#10 CSR          |                      |           |
    | "client.example.com" |                      |           |
    |--------------------->|                      |           |
    |                      |                      |           |
    | 200 OK               |                      |           |
    | PKCS#7               |                      |           |
    | "client.example.com" |                      |           |
    |<---------------------|                      |           |
]]></artwork>
      </artset>
    </section>
    <section anchor="acme-integration-with-brski">
      <name>ACME Integration with BRSKI</name>
      <t>BRSKI <xref target="RFC8995"/> is based upon EST <xref target="RFC7030"/> and defines how to autonomically bootstrap PKI trust anchors into devices via means of signed vouchers. The signed vouchers are issued by the Manufacturer Authorized Signing Authority (MASA) service as described in BRSKI.</t>
      <t>EST certificate enrollment may then optionally take place after trust has been established. BRKSI voucher exchange and trust establishment are based on EST extensions and the certificate enrollment part of BRSKI is fully based on EST. Similar to EST, BRSKI does not define how the EST RA communicates with the CA. Therefore, the mechanisms outlined in the previous section for using ACME as the communications protocol between the EST RA and the CA are equally applicable to BRSKI.</t>
      <t>The following call flow shows how ACME may be integrated into a full BRSKI voucher plus EST enrollment workflow. For brevity, it assumes that the EST RA has previously proven ownership of the certificate identifier. This ownership proof could have been by fulfilling an authorization challenge against the explicit identifier "pledge.example.com", or by fulfilling an authorization challenge against the parent domain "example.com" leveraging <xref target="I-D.ietf-acme-subdomains"/>.</t>
      <t>The domain ownership exchanges between the RA, ACME and DNS are not shown. Similarly, not all BRSKI interactions are shown and only the key protocol flows involving voucher exchange and EST enrollment are shown.</t>
      <t>Similar to the EST section above, the client calls EST /csrattrs API before calling the EST /simpleenroll API. This enables the server to indicate what fields the pledge should include in the CSR that the client sends in the /simpleenroll API. Refer to section <xref target="csr-attributes"/> for more details.</t>
      <t>If the CSR includes an identifier that the EST RA does not control, the RA MUST respond with a 4xx HTTP <xref target="RFC9110"/> error code. Refer to section <xref target="error-handling"/> for further details on error handling.</t>
      <t>The call flow illustrates the RA returning a 202 Retry-After response to the initial EST /simpleenroll API. This may be appropriate if processing of the /simpleenroll request and ACME interactions takes some time to complete.</t>
      <t>This example illustrates the use of the ACME 'dns-01' challenge type.</t>
      <artset>
        <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="1200" width="552" viewBox="0 0 552 1200" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
            <path d="M 8,32 L 8,64" fill="none" stroke="black"/>
            <path d="M 40,72 L 40,96" fill="none" stroke="black"/>
            <path d="M 40,160 L 40,320" fill="none" stroke="black"/>
            <path d="M 40,352 L 40,608" fill="none" stroke="black"/>
            <path d="M 40,640 L 40,1008" fill="none" stroke="black"/>
            <path d="M 40,1040 L 40,1184" fill="none" stroke="black"/>
            <path d="M 80,32 L 80,64" fill="none" stroke="black"/>
            <path d="M 192,32 L 192,64" fill="none" stroke="black"/>
            <path d="M 224,72 L 224,96" fill="none" stroke="black"/>
            <path d="M 224,160 L 224,320" fill="none" stroke="black"/>
            <path d="M 224,352 L 224,608" fill="none" stroke="black"/>
            <path d="M 224,640 L 224,1008" fill="none" stroke="black"/>
            <path d="M 224,1040 L 224,1184" fill="none" stroke="black"/>
            <path d="M 264,32 L 264,64" fill="none" stroke="black"/>
            <path d="M 368,32 L 368,80" fill="none" stroke="black"/>
            <path d="M 408,160 L 408,216" fill="none" stroke="black"/>
            <path d="M 408,232 L 408,264" fill="none" stroke="black"/>
            <path d="M 408,280 L 408,320" fill="none" stroke="black"/>
            <path d="M 408,352 L 408,608" fill="none" stroke="black"/>
            <path d="M 408,640 L 408,1008" fill="none" stroke="black"/>
            <path d="M 408,1040 L 408,1184" fill="none" stroke="black"/>
            <path d="M 440,32 L 440,80" fill="none" stroke="black"/>
            <path d="M 488,32 L 488,64" fill="none" stroke="black"/>
            <path d="M 504,72 L 504,96" fill="none" stroke="black"/>
            <path d="M 504,160 L 504,320" fill="none" stroke="black"/>
            <path d="M 504,352 L 504,608" fill="none" stroke="black"/>
            <path d="M 504,640 L 504,1008" fill="none" stroke="black"/>
            <path d="M 504,1040 L 504,1184" fill="none" stroke="black"/>
            <path d="M 544,32 L 544,64" fill="none" stroke="black"/>
            <path d="M 8,32 L 80,32" fill="none" stroke="black"/>
            <path d="M 192,32 L 264,32" fill="none" stroke="black"/>
            <path d="M 368,32 L 440,32" fill="none" stroke="black"/>
            <path d="M 488,32 L 544,32" fill="none" stroke="black"/>
            <path d="M 8,64 L 80,64" fill="none" stroke="black"/>
            <path d="M 192,64 L 264,64" fill="none" stroke="black"/>
            <path d="M 488,64 L 544,64" fill="none" stroke="black"/>
            <path d="M 368,80 L 440,80" fill="none" stroke="black"/>
            <path d="M 48,192 L 216,192" fill="none" stroke="black"/>
            <path d="M 232,224 L 496,224" fill="none" stroke="black"/>
            <path d="M 232,272 L 496,272" fill="none" stroke="black"/>
            <path d="M 48,304 L 216,304" fill="none" stroke="black"/>
            <path d="M 48,384 L 216,384" fill="none" stroke="black"/>
            <path d="M 48,464 L 216,464" fill="none" stroke="black"/>
            <path d="M 48,544 L 216,544" fill="none" stroke="black"/>
            <path d="M 48,592 L 216,592" fill="none" stroke="black"/>
            <path d="M 232,688 L 400,688" fill="none" stroke="black"/>
            <path d="M 232,736 L 400,736" fill="none" stroke="black"/>
            <path d="M 232,816 L 400,816" fill="none" stroke="black"/>
            <path d="M 232,864 L 400,864" fill="none" stroke="black"/>
            <path d="M 232,912 L 400,912" fill="none" stroke="black"/>
            <path d="M 232,992 L 400,992" fill="none" stroke="black"/>
            <path d="M 48,1104 L 216,1104" fill="none" stroke="black"/>
            <path d="M 48,1184 L 216,1184" fill="none" stroke="black"/>
            <polygon class="arrowhead" points="504,224 492,218.4 492,229.6 " fill="black" transform="rotate(0,496,224)"/>
            <polygon class="arrowhead" points="408,912 396,906.4 396,917.6 " fill="black" transform="rotate(0,400,912)"/>
            <polygon class="arrowhead" points="408,816 396,810.4 396,821.6 " fill="black" transform="rotate(0,400,816)"/>
            <polygon class="arrowhead" points="408,688 396,682.4 396,693.6 " fill="black" transform="rotate(0,400,688)"/>
            <polygon class="arrowhead" points="240,992 228,986.4 228,997.6 " fill="black" transform="rotate(180,232,992)"/>
            <polygon class="arrowhead" points="240,864 228,858.4 228,869.6 " fill="black" transform="rotate(180,232,864)"/>
            <polygon class="arrowhead" points="240,736 228,730.4 228,741.6 " fill="black" transform="rotate(180,232,736)"/>
            <polygon class="arrowhead" points="240,272 228,266.4 228,277.6 " fill="black" transform="rotate(180,232,272)"/>
            <polygon class="arrowhead" points="224,1104 212,1098.4 212,1109.6 " fill="black" transform="rotate(0,216,1104)"/>
            <polygon class="arrowhead" points="224,544 212,538.4 212,549.6 " fill="black" transform="rotate(0,216,544)"/>
            <polygon class="arrowhead" points="224,384 212,378.4 212,389.6 " fill="black" transform="rotate(0,216,384)"/>
            <polygon class="arrowhead" points="224,192 212,186.4 212,197.6 " fill="black" transform="rotate(0,216,192)"/>
            <polygon class="arrowhead" points="56,1184 44,1178.4 44,1189.6 " fill="black" transform="rotate(180,48,1184)"/>
            <polygon class="arrowhead" points="56,592 44,586.4 44,597.6 " fill="black" transform="rotate(180,48,592)"/>
            <polygon class="arrowhead" points="56,464 44,458.4 44,469.6 " fill="black" transform="rotate(180,48,464)"/>
            <polygon class="arrowhead" points="56,304 44,298.4 44,309.6 " fill="black" transform="rotate(180,48,304)"/>
            <g class="text">
              <text x="44" y="52">Pledge</text>
              <text x="216" y="52">EST</text>
              <text x="244" y="52">RA</text>
              <text x="404" y="52">ACME</text>
              <text x="516" y="52">MASA</text>
              <text x="404" y="68">Server</text>
              <text x="408" y="100">|</text>
              <text x="96" y="116">NOTE:</text>
              <text x="192" y="116">Pre-Authorization</text>
              <text x="276" y="116">of</text>
              <text x="372" y="116">"pledge.example.com"</text>
              <text x="468" y="116">is</text>
              <text x="516" y="116">complete</text>
              <text x="40" y="132">|</text>
              <text x="224" y="132">|</text>
              <text x="408" y="132">|</text>
              <text x="504" y="132">|</text>
              <text x="92" y="148">STEP</text>
              <text x="124" y="148">1:</text>
              <text x="164" y="148">Pledge</text>
              <text x="228" y="148">requests</text>
              <text x="296" y="148">Voucher</text>
              <text x="68" y="180">POST</text>
              <text x="152" y="180">/requestvoucher</text>
              <text x="252" y="212">POST</text>
              <text x="336" y="212">/requestvoucher</text>
              <text x="248" y="260">200</text>
              <text x="276" y="260">OK</text>
              <text x="320" y="260">Voucher</text>
              <text x="64" y="292">200</text>
              <text x="92" y="292">OK</text>
              <text x="136" y="292">Voucher</text>
              <text x="92" y="340">STEP</text>
              <text x="124" y="340">2:</text>
              <text x="164" y="340">Pledge</text>
              <text x="224" y="340">enrolls</text>
              <text x="288" y="340">against</text>
              <text x="332" y="340">RA</text>
              <text x="64" y="372">GET</text>
              <text x="120" y="372">/csrattrs</text>
              <text x="64" y="420">200</text>
              <text x="92" y="420">OK</text>
              <text x="68" y="436">SAN:</text>
              <text x="132" y="452">"pledge.example.com"</text>
              <text x="68" y="500">POST</text>
              <text x="144" y="500">/simpleenroll</text>
              <text x="80" y="516">PCSK#10</text>
              <text x="128" y="516">CSR</text>
              <text x="132" y="532">"pledge.example.com"</text>
              <text x="64" y="580">202</text>
              <text x="128" y="580">Retry-After</text>
              <text x="92" y="628">STEP</text>
              <text x="124" y="628">3:</text>
              <text x="148" y="628">RA</text>
              <text x="188" y="628">places</text>
              <text x="236" y="628">ACME</text>
              <text x="280" y="628">order</text>
              <text x="252" y="660">POST</text>
              <text x="312" y="660">/newOrder</text>
              <text x="316" y="676">"pledge.example.com"</text>
              <text x="248" y="724">201</text>
              <text x="316" y="724">status=ready</text>
              <text x="252" y="772">POST</text>
              <text x="312" y="772">/finalize</text>
              <text x="264" y="788">PKCS#10</text>
              <text x="312" y="788">CSR</text>
              <text x="316" y="804">"pledge.example.com"</text>
              <text x="248" y="852">200</text>
              <text x="276" y="852">OK</text>
              <text x="340" y="852">status=valid</text>
              <text x="252" y="900">POST</text>
              <text x="324" y="900">/certificate</text>
              <text x="248" y="948">200</text>
              <text x="276" y="948">OK</text>
              <text x="260" y="964">PKCS#7</text>
              <text x="316" y="980">"pledge.example.com"</text>
              <text x="92" y="1028">STEP</text>
              <text x="124" y="1028">4:</text>
              <text x="164" y="1028">Pledge</text>
              <text x="224" y="1028">retries</text>
              <text x="284" y="1028">enroll</text>
              <text x="68" y="1060">POST</text>
              <text x="144" y="1060">/simpleenroll</text>
              <text x="80" y="1076">PCSK#10</text>
              <text x="128" y="1076">CSR</text>
              <text x="132" y="1092">"pledge.example.com"</text>
              <text x="64" y="1140">200</text>
              <text x="92" y="1140">OK</text>
              <text x="76" y="1156">PKCS#7</text>
              <text x="132" y="1172">"pledge.example.com"</text>
            </g>
          </svg>
        </artwork>
        <artwork type="ascii-art"><![CDATA[
+--------+             +--------+            +--------+     +------+
| Pledge |             | EST RA |            |  ACME  |     | MASA |
+--------+             +--------+            | Server |     +------+
    |                      |                 +--------+       |
    |                      |                      |           |
         NOTE: Pre-Authorization of "pledge.example.com" is complete
    |                      |                      |           |
         STEP 1: Pledge requests Voucher
    |                      |                      |           |
    | POST /requestvoucher |                      |           |
    |--------------------->|                      |           |
    |                      | POST /requestvoucher |           |
    |                      |--------------------------------->|
    |                      |                      |           |
    |                      | 200 OK Voucher       |           |
    |                      |<---------------------------------|
    | 200 OK Voucher       |                      |           |
    |<---------------------|                      |           |
    |                      |                      |           |
         STEP 2: Pledge enrolls against RA
    |                      |                      |           |
    | GET /csrattrs        |                      |           |
    |--------------------->|                      |           |
    |                      |                      |           |
    | 200 OK               |                      |           |
    | SAN:                 |                      |           |
    | "pledge.example.com" |                      |           |
    |<---------------------|                      |           |
    |                      |                      |           |
    | POST /simpleenroll   |                      |           |
    | PCSK#10 CSR          |                      |           |
    | "pledge.example.com" |                      |           |
    |--------------------->|                      |           |
    |                      |                      |           |
    | 202 Retry-After      |                      |           |
    |<---------------------|                      |           |
    |                      |                      |           |
         STEP 3: RA places ACME order
    |                      |                      |           |
    |                      | POST /newOrder       |           |
    |                      | "pledge.example.com" |           |
    |                      |--------------------->|           |
    |                      |                      |           |
    |                      | 201 status=ready     |           |
    |                      |<---------------------|           |
    |                      |                      |           |
    |                      | POST /finalize       |           |
    |                      | PKCS#10 CSR          |           |
    |                      | "pledge.example.com" |           |
    |                      |--------------------->|           |
    |                      |                      |           |
    |                      | 200 OK status=valid  |           |
    |                      |<---------------------|           |
    |                      |                      |           |
    |                      | POST /certificate    |           |
    |                      |--------------------->|           |
    |                      |                      |           |
    |                      | 200 OK               |           |
    |                      | PKCS#7               |           |
    |                      | "pledge.example.com" |           |
    |                      |<---------------------|           |
    |                      |                      |           |
         STEP 4: Pledge retries enroll
    |                      |                      |           |
    | POST /simpleenroll   |                      |           |
    | PCSK#10 CSR          |                      |           |
    | "pledge.example.com" |                      |           |
    |--------------------->|                      |           |
    |                      |                      |           |
    | 200 OK               |                      |           |
    | PKCS#7               |                      |           |
    | "pledge.example.com" |                      |           |
    |<---------------------|                      |           |
]]></artwork>
      </artset>
    </section>
    <section anchor="acme-integration-with-brski-default-cloud-registrar">
      <name>ACME Integration with BRSKI Default Cloud Registrar</name>
      <t>BRSKI Cloud Registrar <xref target="I-D.ietf-anima-brski-cloud"/> specifies the behavior of a BRSKI Cloud Registrar, and how a pledge can interact with a BRSKI Cloud Registrar when bootstrapping. Similar to the local domain registrar BRSKI flow, ACME can be easily integrated with a cloud registrar bootstrap flow.</t>
      <t>BRSKI cloud registrar is flexible and allows for multiple different local domain discovery and redirect scenarios. The est-domain leaf defined in <xref target="I-D.ietf-anima-brski-cloud"/> allows the specification of a bootstrap EST domain. In this example, the est-domain extension allows the cloud registrar to specify the local domain RA that the pledge should connect to for the purposes of EST enrollment.</t>
      <t>For brevity, it assumes that the EST RA has previously proven ownership of the certificate identifier. This ownership proof could have been by fulfilling an authorization challenge against the explicit identifier "pledge.example.com", or by fulfilling an authorization challenge against the parent domain "example.com" leveraging <xref target="I-D.ietf-acme-subdomains"/>. The domain ownership exchanges between the RA, ACME and DNS are not shown.</t>
      <t>Similar to the sections above, the client calls EST /csrattrs API before calling the EST /simpleenroll API.</t>
      <t>This example illustrates the use of the ACME 'dns-01' challenge type.</t>
      <artset>
        <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="1136" width="560" viewBox="0 0 560 1136" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
            <path d="M 8,32 L 8,64" fill="none" stroke="black"/>
            <path d="M 40,72 L 40,96" fill="none" stroke="black"/>
            <path d="M 40,160 L 40,256" fill="none" stroke="black"/>
            <path d="M 40,288 L 40,544" fill="none" stroke="black"/>
            <path d="M 40,576 L 40,944" fill="none" stroke="black"/>
            <path d="M 40,976 L 40,1120" fill="none" stroke="black"/>
            <path d="M 80,32 L 80,64" fill="none" stroke="black"/>
            <path d="M 192,32 L 192,64" fill="none" stroke="black"/>
            <path d="M 224,72 L 224,96" fill="none" stroke="black"/>
            <path d="M 224,288 L 224,544" fill="none" stroke="black"/>
            <path d="M 224,576 L 224,944" fill="none" stroke="black"/>
            <path d="M 224,976 L 224,1120" fill="none" stroke="black"/>
            <path d="M 264,32 L 264,64" fill="none" stroke="black"/>
            <path d="M 360,32 L 360,80" fill="none" stroke="black"/>
            <path d="M 408,288 L 408,544" fill="none" stroke="black"/>
            <path d="M 408,576 L 408,944" fill="none" stroke="black"/>
            <path d="M 408,976 L 408,1120" fill="none" stroke="black"/>
            <path d="M 432,32 L 432,80" fill="none" stroke="black"/>
            <path d="M 464,32 L 464,80" fill="none" stroke="black"/>
            <path d="M 504,160 L 504,256" fill="none" stroke="black"/>
            <path d="M 504,288 L 504,544" fill="none" stroke="black"/>
            <path d="M 504,576 L 504,944" fill="none" stroke="black"/>
            <path d="M 504,976 L 504,1120" fill="none" stroke="black"/>
            <path d="M 552,32 L 552,80" fill="none" stroke="black"/>
            <path d="M 8,32 L 80,32" fill="none" stroke="black"/>
            <path d="M 192,32 L 264,32" fill="none" stroke="black"/>
            <path d="M 360,32 L 432,32" fill="none" stroke="black"/>
            <path d="M 464,32 L 552,32" fill="none" stroke="black"/>
            <path d="M 8,64 L 80,64" fill="none" stroke="black"/>
            <path d="M 192,64 L 264,64" fill="none" stroke="black"/>
            <path d="M 360,80 L 432,80" fill="none" stroke="black"/>
            <path d="M 464,80 L 552,80" fill="none" stroke="black"/>
            <path d="M 48,192 L 496,192" fill="none" stroke="black"/>
            <path d="M 48,240 L 496,240" fill="none" stroke="black"/>
            <path d="M 48,320 L 216,320" fill="none" stroke="black"/>
            <path d="M 48,400 L 216,400" fill="none" stroke="black"/>
            <path d="M 48,480 L 216,480" fill="none" stroke="black"/>
            <path d="M 48,528 L 216,528" fill="none" stroke="black"/>
            <path d="M 232,624 L 400,624" fill="none" stroke="black"/>
            <path d="M 232,672 L 400,672" fill="none" stroke="black"/>
            <path d="M 232,752 L 400,752" fill="none" stroke="black"/>
            <path d="M 232,800 L 400,800" fill="none" stroke="black"/>
            <path d="M 232,848 L 400,848" fill="none" stroke="black"/>
            <path d="M 232,928 L 400,928" fill="none" stroke="black"/>
            <path d="M 48,1040 L 216,1040" fill="none" stroke="black"/>
            <path d="M 48,1120 L 216,1120" fill="none" stroke="black"/>
            <polygon class="arrowhead" points="504,192 492,186.4 492,197.6 " fill="black" transform="rotate(0,496,192)"/>
            <polygon class="arrowhead" points="408,848 396,842.4 396,853.6 " fill="black" transform="rotate(0,400,848)"/>
            <polygon class="arrowhead" points="408,752 396,746.4 396,757.6 " fill="black" transform="rotate(0,400,752)"/>
            <polygon class="arrowhead" points="408,624 396,618.4 396,629.6 " fill="black" transform="rotate(0,400,624)"/>
            <polygon class="arrowhead" points="240,928 228,922.4 228,933.6 " fill="black" transform="rotate(180,232,928)"/>
            <polygon class="arrowhead" points="240,800 228,794.4 228,805.6 " fill="black" transform="rotate(180,232,800)"/>
            <polygon class="arrowhead" points="240,672 228,666.4 228,677.6 " fill="black" transform="rotate(180,232,672)"/>
            <polygon class="arrowhead" points="224,1040 212,1034.4 212,1045.6 " fill="black" transform="rotate(0,216,1040)"/>
            <polygon class="arrowhead" points="224,480 212,474.4 212,485.6 " fill="black" transform="rotate(0,216,480)"/>
            <polygon class="arrowhead" points="224,320 212,314.4 212,325.6 " fill="black" transform="rotate(0,216,320)"/>
            <polygon class="arrowhead" points="56,1120 44,1114.4 44,1125.6 " fill="black" transform="rotate(180,48,1120)"/>
            <polygon class="arrowhead" points="56,528 44,522.4 44,533.6 " fill="black" transform="rotate(180,48,528)"/>
            <polygon class="arrowhead" points="56,400 44,394.4 44,405.6 " fill="black" transform="rotate(180,48,400)"/>
            <polygon class="arrowhead" points="56,240 44,234.4 44,245.6 " fill="black" transform="rotate(180,48,240)"/>
            <g class="text">
              <text x="44" y="52">Pledge</text>
              <text x="216" y="52">EST</text>
              <text x="244" y="52">RA</text>
              <text x="396" y="52">ACME</text>
              <text x="496" y="52">Cloud</text>
              <text x="532" y="52">RA</text>
              <text x="396" y="68">Server</text>
              <text x="488" y="68">/</text>
              <text x="516" y="68">MASA</text>
              <text x="408" y="100">|</text>
              <text x="504" y="100">|</text>
              <text x="96" y="116">NOTE:</text>
              <text x="192" y="116">Pre-Authorization</text>
              <text x="276" y="116">of</text>
              <text x="372" y="116">"pledge.example.com"</text>
              <text x="468" y="116">is</text>
              <text x="516" y="116">complete</text>
              <text x="40" y="132">|</text>
              <text x="224" y="132">|</text>
              <text x="408" y="132">|</text>
              <text x="504" y="132">|</text>
              <text x="92" y="148">STEP</text>
              <text x="124" y="148">1:</text>
              <text x="164" y="148">Pledge</text>
              <text x="228" y="148">requests</text>
              <text x="296" y="148">Voucher</text>
              <text x="348" y="148">from</text>
              <text x="392" y="148">Cloud</text>
              <text x="456" y="148">Registrar</text>
              <text x="68" y="180">POST</text>
              <text x="152" y="180">/requestvoucher</text>
              <text x="64" y="228">200</text>
              <text x="92" y="228">OK</text>
              <text x="136" y="228">Voucher</text>
              <text x="208" y="228">(includes</text>
              <text x="304" y="228">'est-domain')</text>
              <text x="224" y="260">|</text>
              <text x="408" y="260">|</text>
              <text x="92" y="276">STEP</text>
              <text x="124" y="276">2:</text>
              <text x="164" y="276">Pledge</text>
              <text x="224" y="276">enrolls</text>
              <text x="288" y="276">against</text>
              <text x="344" y="276">local</text>
              <text x="396" y="276">domain</text>
              <text x="436" y="276">RA</text>
              <text x="64" y="308">GET</text>
              <text x="120" y="308">/csrattrs</text>
              <text x="64" y="356">200</text>
              <text x="92" y="356">OK</text>
              <text x="68" y="372">SAN:</text>
              <text x="132" y="388">"pledge.example.com"</text>
              <text x="68" y="436">POST</text>
              <text x="144" y="436">/simpleenroll</text>
              <text x="80" y="452">PCSK#10</text>
              <text x="128" y="452">CSR</text>
              <text x="132" y="468">"pledge.example.com"</text>
              <text x="64" y="516">202</text>
              <text x="128" y="516">Retry-After</text>
              <text x="92" y="564">STEP</text>
              <text x="124" y="564">3:</text>
              <text x="148" y="564">RA</text>
              <text x="188" y="564">places</text>
              <text x="236" y="564">ACME</text>
              <text x="280" y="564">order</text>
              <text x="252" y="596">POST</text>
              <text x="312" y="596">/newOrder</text>
              <text x="316" y="612">"pledge.example.com"</text>
              <text x="248" y="660">201</text>
              <text x="316" y="660">status=ready</text>
              <text x="252" y="708">POST</text>
              <text x="312" y="708">/finalize</text>
              <text x="264" y="724">PKCS#10</text>
              <text x="312" y="724">CSR</text>
              <text x="316" y="740">"pledge.example.com"</text>
              <text x="248" y="788">200</text>
              <text x="276" y="788">OK</text>
              <text x="340" y="788">status=valid</text>
              <text x="252" y="836">POST</text>
              <text x="324" y="836">/certificate</text>
              <text x="248" y="884">200</text>
              <text x="276" y="884">OK</text>
              <text x="260" y="900">PKCS#7</text>
              <text x="316" y="916">"pledge.example.com"</text>
              <text x="92" y="964">STEP</text>
              <text x="124" y="964">4:</text>
              <text x="164" y="964">Pledge</text>
              <text x="224" y="964">retries</text>
              <text x="284" y="964">enroll</text>
              <text x="68" y="996">POST</text>
              <text x="144" y="996">/simpleenroll</text>
              <text x="80" y="1012">PCSK#10</text>
              <text x="128" y="1012">CSR</text>
              <text x="132" y="1028">"pledge.example.com"</text>
              <text x="64" y="1076">200</text>
              <text x="92" y="1076">OK</text>
              <text x="76" y="1092">PKCS#7</text>
              <text x="132" y="1108">"pledge.example.com"</text>
            </g>
          </svg>
        </artwork>
        <artwork type="ascii-art"><![CDATA[
+--------+             +--------+           +--------+   +----------+
| Pledge |             | EST RA |           |  ACME  |   | Cloud RA |
+--------+             +--------+           | Server |   |  / MASA  |
    |                      |                +--------+   +----------+
    |                      |                      |           |
         NOTE: Pre-Authorization of "pledge.example.com" is complete
    |                      |                      |           |
         STEP 1: Pledge requests Voucher from Cloud Registrar
    |                                                         |
    | POST /requestvoucher                                    |
    |-------------------------------------------------------->|
    |                                                         |
    | 200 OK Voucher (includes 'est-domain')                  |
    |<--------------------------------------------------------|
    |                      |                      |           |
         STEP 2: Pledge enrolls against local domain RA
    |                      |                      |           |
    | GET /csrattrs        |                      |           |
    |--------------------->|                      |           |
    |                      |                      |           |
    | 200 OK               |                      |           |
    | SAN:                 |                      |           |
    | "pledge.example.com" |                      |           |
    |<---------------------|                      |           |
    |                      |                      |           |
    | POST /simpleenroll   |                      |           |
    | PCSK#10 CSR          |                      |           |
    | "pledge.example.com" |                      |           |
    |--------------------->|                      |           |
    |                      |                      |           |
    | 202 Retry-After      |                      |           |
    |<---------------------|                      |           |
    |                      |                      |           |
         STEP 3: RA places ACME order
    |                      |                      |           |
    |                      | POST /newOrder       |           |
    |                      | "pledge.example.com" |           |
    |                      |--------------------->|           |
    |                      |                      |           |
    |                      | 201 status=ready     |           |
    |                      |<---------------------|           |
    |                      |                      |           |
    |                      | POST /finalize       |           |
    |                      | PKCS#10 CSR          |           |
    |                      | "pledge.example.com" |           |
    |                      |--------------------->|           |
    |                      |                      |           |
    |                      | 200 OK status=valid  |           |
    |                      |<---------------------|           |
    |                      |                      |           |
    |                      | POST /certificate    |           |
    |                      |--------------------->|           |
    |                      |                      |           |
    |                      | 200 OK               |           |
    |                      | PKCS#7               |           |
    |                      | "pledge.example.com" |           |
    |                      |<---------------------|           |
    |                      |                      |           |
         STEP 4: Pledge retries enroll
    |                      |                      |           |
    | POST /simpleenroll   |                      |           |
    | PCSK#10 CSR          |                      |           |
    | "pledge.example.com" |                      |           |
    |--------------------->|                      |           |
    |                      |                      |           |
    | 200 OK               |                      |           |
    | PKCS#7               |                      |           |
    | "pledge.example.com" |                      |           |
    |<---------------------|                      |           |
]]></artwork>
      </artset>
    </section>
    <section anchor="acme-integration-with-teap">
      <name>ACME Integration with TEAP</name>
      <t>TEAP <xref target="RFC7170"/> defines a tunnel-based EAP method that enables secure communication between a peer and a server by using TLS to establish a mutually authenticated tunnel. TEAP enables certificate provisioning within the tunnel. TEAP <xref target="RFC7170"/> does not define how the TEAP server communicates with the CA.</t>
      <t>This section outlines how ACME could be used for communication between the TEAP server and the CA. The example call flow leverages <xref target="I-D.ietf-acme-subdomains"/> and shows the TEAP server proving ownership of a parent domain, with individual client certificates being subdomains under that parent domain.</t>
      <t>For brevity, it assumes that the TEAP server has previously proven ownership of the certificate identifier. This ownership proof could have been by fulfilling an authorization challenge against the explicit identifier "client.example.com", or by fulfilling an authorization challenge against the parent domain "example.com" leveraging <xref target="I-D.ietf-acme-subdomains"/>. The domain ownership exchanges between the TEAP server, ACME and DNS are not shown.</t>
      <t>After establishing the outer TLS tunnel, the TEAP server instructs the client to enroll for a certificate by sending a PKCS#10 TLV in the body of a Request-Action TLV. The client then replies with a PKCS#10 TLV that contains its CSR. The TEAP server interacts with the ACME server for certificate issuance and returns the certificate in a PKCS#7 TLV as per TEAP <xref target="RFC7170"/>.</t>
      <t>This example illustrates the use of the ACME 'dns-01' challenge type.</t>
      <artset>
        <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="1840" width="560" viewBox="0 0 560 1840" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
            <path d="M 8,32 L 8,64" fill="none" stroke="black"/>
            <path d="M 40,72 L 40,96" fill="none" stroke="black"/>
            <path d="M 40,160 L 40,1104" fill="none" stroke="black"/>
            <path d="M 40,1136 L 40,1808" fill="none" stroke="black"/>
            <path d="M 64,32 L 64,64" fill="none" stroke="black"/>
            <path d="M 200,32 L 200,64" fill="none" stroke="black"/>
            <path d="M 248,72 L 248,96" fill="none" stroke="black"/>
            <path d="M 248,160 L 248,1104" fill="none" stroke="black"/>
            <path d="M 248,1136 L 248,1808" fill="none" stroke="black"/>
            <path d="M 312,32 L 312,64" fill="none" stroke="black"/>
            <path d="M 400,32 L 400,80" fill="none" stroke="black"/>
            <path d="M 432,160 L 432,1104" fill="none" stroke="black"/>
            <path d="M 432,1136 L 432,1808" fill="none" stroke="black"/>
            <path d="M 472,32 L 472,80" fill="none" stroke="black"/>
            <path d="M 504,32 L 504,64" fill="none" stroke="black"/>
            <path d="M 528,72 L 528,96" fill="none" stroke="black"/>
            <path d="M 528,160 L 528,1104" fill="none" stroke="black"/>
            <path d="M 528,1136 L 528,1808" fill="none" stroke="black"/>
            <path d="M 552,32 L 552,64" fill="none" stroke="black"/>
            <path d="M 8,32 L 64,32" fill="none" stroke="black"/>
            <path d="M 200,32 L 312,32" fill="none" stroke="black"/>
            <path d="M 400,32 L 472,32" fill="none" stroke="black"/>
            <path d="M 504,32 L 552,32" fill="none" stroke="black"/>
            <path d="M 8,64 L 64,64" fill="none" stroke="black"/>
            <path d="M 200,64 L 312,64" fill="none" stroke="black"/>
            <path d="M 504,64 L 552,64" fill="none" stroke="black"/>
            <path d="M 400,80 L 464,80" fill="none" stroke="black"/>
            <path d="M 48,208 L 240,208" fill="none" stroke="black"/>
            <path d="M 48,272 L 240,272" fill="none" stroke="black"/>
            <path d="M 48,368 L 240,368" fill="none" stroke="black"/>
            <path d="M 48,448 L 240,448" fill="none" stroke="black"/>
            <path d="M 48,592 L 240,592" fill="none" stroke="black"/>
            <path d="M 48,736 L 240,736" fill="none" stroke="black"/>
            <path d="M 48,864 L 240,864" fill="none" stroke="black"/>
            <path d="M 48,960 L 240,960" fill="none" stroke="black"/>
            <path d="M 48,1088 L 240,1088" fill="none" stroke="black"/>
            <path d="M 48,1232 L 240,1232" fill="none" stroke="black"/>
            <path d="M 256,1280 L 424,1280" fill="none" stroke="black"/>
            <path d="M 256,1328 L 424,1328" fill="none" stroke="black"/>
            <path d="M 256,1408 L 424,1408" fill="none" stroke="black"/>
            <path d="M 256,1456 L 424,1456" fill="none" stroke="black"/>
            <path d="M 256,1504 L 424,1504" fill="none" stroke="black"/>
            <path d="M 256,1584 L 424,1584" fill="none" stroke="black"/>
            <path d="M 48,1680 L 240,1680" fill="none" stroke="black"/>
            <path d="M 48,1760 L 240,1760" fill="none" stroke="black"/>
            <path d="M 48,1808 L 240,1808" fill="none" stroke="black"/>
            <polygon class="arrowhead" points="432,1504 420,1498.4 420,1509.6 " fill="black" transform="rotate(0,424,1504)"/>
            <polygon class="arrowhead" points="432,1408 420,1402.4 420,1413.6 " fill="black" transform="rotate(0,424,1408)"/>
            <polygon class="arrowhead" points="432,1280 420,1274.4 420,1285.6 " fill="black" transform="rotate(0,424,1280)"/>
            <polygon class="arrowhead" points="264,1584 252,1578.4 252,1589.6 " fill="black" transform="rotate(180,256,1584)"/>
            <polygon class="arrowhead" points="264,1456 252,1450.4 252,1461.6 " fill="black" transform="rotate(180,256,1456)"/>
            <polygon class="arrowhead" points="264,1328 252,1322.4 252,1333.6 " fill="black" transform="rotate(180,256,1328)"/>
            <polygon class="arrowhead" points="248,1760 236,1754.4 236,1765.6 " fill="black" transform="rotate(0,240,1760)"/>
            <polygon class="arrowhead" points="248,1232 236,1226.4 236,1237.6 " fill="black" transform="rotate(0,240,1232)"/>
            <polygon class="arrowhead" points="248,960 236,954.4 236,965.6 " fill="black" transform="rotate(0,240,960)"/>
            <polygon class="arrowhead" points="248,736 236,730.4 236,741.6 " fill="black" transform="rotate(0,240,736)"/>
            <polygon class="arrowhead" points="248,448 236,442.4 236,453.6 " fill="black" transform="rotate(0,240,448)"/>
            <polygon class="arrowhead" points="248,272 236,266.4 236,277.6 " fill="black" transform="rotate(0,240,272)"/>
            <polygon class="arrowhead" points="56,1808 44,1802.4 44,1813.6 " fill="black" transform="rotate(180,48,1808)"/>
            <polygon class="arrowhead" points="56,1680 44,1674.4 44,1685.6 " fill="black" transform="rotate(180,48,1680)"/>
            <polygon class="arrowhead" points="56,1088 44,1082.4 44,1093.6 " fill="black" transform="rotate(180,48,1088)"/>
            <polygon class="arrowhead" points="56,864 44,858.4 44,869.6 " fill="black" transform="rotate(180,48,864)"/>
            <polygon class="arrowhead" points="56,592 44,586.4 44,597.6 " fill="black" transform="rotate(180,48,592)"/>
            <polygon class="arrowhead" points="56,368 44,362.4 44,373.6 " fill="black" transform="rotate(180,48,368)"/>
            <polygon class="arrowhead" points="56,208 44,202.4 44,213.6 " fill="black" transform="rotate(180,48,208)"/>
            <g class="text">
              <text x="36" y="52">Peer</text>
              <text x="256" y="52">TEAP-Server</text>
              <text x="436" y="52">ACME</text>
              <text x="528" y="52">DNS</text>
              <text x="436" y="68">Server</text>
              <text x="432" y="100">|</text>
              <text x="96" y="116">NOTE:</text>
              <text x="192" y="116">Pre-Authorization</text>
              <text x="276" y="116">of</text>
              <text x="372" y="116">"client.example.com"</text>
              <text x="468" y="116">is</text>
              <text x="516" y="116">complete</text>
              <text x="40" y="132">|</text>
              <text x="248" y="132">|</text>
              <text x="432" y="132">|</text>
              <text x="528" y="132">|</text>
              <text x="92" y="148">STEP</text>
              <text x="124" y="148">1:</text>
              <text x="176" y="148">Establish</text>
              <text x="232" y="148">EAP</text>
              <text x="272" y="148">Outer</text>
              <text x="324" y="148">Tunnel</text>
              <text x="108" y="180">EAP-Request/</text>
              <text x="120" y="196">Type=Identity</text>
              <text x="112" y="244">EAP-Response/</text>
              <text x="120" y="260">Type=Identity</text>
              <text x="108" y="308">EAP-Request/</text>
              <text x="108" y="324">Type=TEAP,</text>
              <text x="84" y="340">TEAP</text>
              <text x="132" y="340">Start,</text>
              <text x="116" y="356">Authority-ID</text>
              <text x="184" y="356">TLV</text>
              <text x="112" y="404">EAP-Response/</text>
              <text x="108" y="420">Type=TEAP,</text>
              <text x="132" y="436">TLS(ClientHello)</text>
              <text x="108" y="484">EAP-Request/</text>
              <text x="108" y="500">Type=TEAP,</text>
              <text x="132" y="516">TLS(ServerHello,</text>
              <text x="116" y="532">Certificate,</text>
              <text x="140" y="548">ServerKeyExchange,</text>
              <text x="144" y="564">CertificateRequest,</text>
              <text x="132" y="580">ServerHelloDone)</text>
              <text x="112" y="628">EAP-Response/</text>
              <text x="108" y="644">Type=TEAP,</text>
              <text x="132" y="660">TLS(Certificate,</text>
              <text x="140" y="676">ClientKeyExchange,</text>
              <text x="140" y="692">CertificateVerify,</text>
              <text x="136" y="708">ChangeCipherSpec,</text>
              <text x="104" y="724">Finished)</text>
              <text x="108" y="772">EAP-Request/</text>
              <text x="108" y="788">Type=TEAP,</text>
              <text x="152" y="804">TLS(ChangeCipherSpec,</text>
              <text x="108" y="820">Finished),</text>
              <text x="128" y="836">{Crypto-Binding</text>
              <text x="212" y="836">TLV,</text>
              <text x="92" y="852">Result</text>
              <text x="172" y="852">TLV=Success}</text>
              <text x="112" y="900">EAP-Response/</text>
              <text x="108" y="916">Type=TEAP,</text>
              <text x="128" y="932">{Crypto-Binding</text>
              <text x="212" y="932">TLV,</text>
              <text x="92" y="948">Result</text>
              <text x="172" y="948">TLV=Success}</text>
              <text x="108" y="996">EAP-Request/</text>
              <text x="108" y="1012">Type=TEAP,</text>
              <text x="128" y="1028">{Request-Action</text>
              <text x="212" y="1028">TLV:</text>
              <text x="144" y="1044">Status=Success,</text>
              <text x="160" y="1060">Action=Process-TLV,</text>
              <text x="132" y="1076">TLV=PKCS#10}</text>
              <text x="92" y="1124">STEP</text>
              <text x="124" y="1124">2:</text>
              <text x="164" y="1124">Enroll</text>
              <text x="208" y="1124">for</text>
              <text x="272" y="1124">certificate</text>
              <text x="112" y="1172">EAP-Response/</text>
              <text x="108" y="1188">Type=TEAP,</text>
              <text x="100" y="1204">{PKCS#10</text>
              <text x="156" y="1204">TLV:</text>
              <text x="152" y="1220">"client.example.com"}</text>
              <text x="276" y="1252">POST</text>
              <text x="336" y="1252">/newOrder</text>
              <text x="340" y="1268">"client.example.com"</text>
              <text x="272" y="1316">201</text>
              <text x="340" y="1316">status=ready</text>
              <text x="276" y="1364">POST</text>
              <text x="336" y="1364">/finalize</text>
              <text x="288" y="1380">PKCS#10</text>
              <text x="336" y="1380">CSR</text>
              <text x="340" y="1396">"client.example.com"</text>
              <text x="272" y="1444">200</text>
              <text x="300" y="1444">OK</text>
              <text x="364" y="1444">status=valid</text>
              <text x="276" y="1492">POST</text>
              <text x="348" y="1492">/certificate</text>
              <text x="272" y="1540">200</text>
              <text x="300" y="1540">OK</text>
              <text x="284" y="1556">PKCS#7</text>
              <text x="340" y="1572">"client.example.com"</text>
              <text x="108" y="1620">EAP-Request/</text>
              <text x="108" y="1636">Type=TEAP,</text>
              <text x="96" y="1652">{PKCS#7</text>
              <text x="148" y="1652">TLV,</text>
              <text x="100" y="1668">Result</text>
              <text x="180" y="1668">TLV=Success}</text>
              <text x="112" y="1716">EAP-Response/</text>
              <text x="108" y="1732">Type=TEAP,</text>
              <text x="96" y="1748">{Result</text>
              <text x="180" y="1748">TLV=Success}</text>
              <text x="104" y="1796">EAP-Success</text>
            </g>
          </svg>
        </artwork>
        <artwork type="ascii-art"><![CDATA[
+------+                +-------------+          +--------+   +-----+
| Peer |                | TEAP-Server |          |  ACME  |   | DNS |
+------+                +-------------+          | Server |   +-----+
    |                         |                  +--------|      |
    |                         |                      |           |
         NOTE: Pre-Authorization of "client.example.com" is complete
    |                         |                      |           |
         STEP 1: Establish EAP Outer Tunnel
    |                         |                      |           |
    |  EAP-Request/           |                      |           |
    |   Type=Identity         |                      |           |
    |<------------------------|                      |           |
    |                         |                      |           |
    |  EAP-Response/          |                      |           |
    |   Type=Identity         |                      |           |
    |------------------------>|                      |           |
    |                         |                      |           |
    |  EAP-Request/           |                      |           |
    |   Type=TEAP,            |                      |           |
    |   TEAP Start,           |                      |           |
    |   Authority-ID TLV      |                      |           |
    |<------------------------|                      |           |
    |                         |                      |           |
    |  EAP-Response/          |                      |           |
    |   Type=TEAP,            |                      |           |
    |   TLS(ClientHello)      |                      |           |
    |------------------------>|                      |           |
    |                         |                      |           |
    |  EAP-Request/           |                      |           |
    |   Type=TEAP,            |                      |           |
    |   TLS(ServerHello,      |                      |           |
    |   Certificate,          |                      |           |
    |   ServerKeyExchange,    |                      |           |
    |   CertificateRequest,   |                      |           |
    |   ServerHelloDone)      |                      |           |
    |<------------------------|                      |           |
    |                         |                      |           |
    |  EAP-Response/          |                      |           |
    |   Type=TEAP,            |                      |           |
    |   TLS(Certificate,      |                      |           |
    |   ClientKeyExchange,    |                      |           |
    |   CertificateVerify,    |                      |           |
    |   ChangeCipherSpec,     |                      |           |
    |   Finished)             |                      |           |
    |------------------------>|                      |           |
    |                         |                      |           |
    |  EAP-Request/           |                      |           |
    |   Type=TEAP,            |                      |           |
    |   TLS(ChangeCipherSpec, |                      |           |
    |   Finished),            |                      |           |
    |   {Crypto-Binding TLV,  |                      |           |
    |   Result TLV=Success}   |                      |           |
    |<------------------------|                      |           |
    |                         |                      |           |
    |  EAP-Response/          |                      |           |
    |   Type=TEAP,            |                      |           |
    |   {Crypto-Binding TLV,  |                      |           |
    |   Result TLV=Success}   |                      |           |
    |------------------------>|                      |           |
    |                         |                      |           |
    |  EAP-Request/           |                      |           |
    |   Type=TEAP,            |                      |           |
    |   {Request-Action TLV:  |                      |           |
    |     Status=Success,     |                      |           |
    |     Action=Process-TLV, |                      |           |
    |     TLV=PKCS#10}        |                      |           |
    |<------------------------|                      |           |
    |                         |                      |           |
         STEP 2: Enroll for certificate
    |                         |                      |           |
    |                         |                      |           |
    |  EAP-Response/          |                      |           |
    |   Type=TEAP,            |                      |           |
    |   {PKCS#10 TLV:         |                      |           |
    |   "client.example.com"} |                      |           |
    |------------------------>|                      |           |
    |                         | POST /newOrder       |           |
    |                         | "client.example.com" |           |
    |                         |--------------------->|           |
    |                         |                      |           |
    |                         | 201 status=ready     |           |
    |                         |<---------------------|           |
    |                         |                      |           |
    |                         | POST /finalize       |           |
    |                         | PKCS#10 CSR          |           |
    |                         | "client.example.com" |           |
    |                         |--------------------->|           |
    |                         |                      |           |
    |                         | 200 OK status=valid  |           |
    |                         |<---------------------|           |
    |                         |                      |           |
    |                         | POST /certificate    |           |
    |                         |--------------------->|           |
    |                         |                      |           |
    |                         | 200 OK               |           |
    |                         | PKCS#7               |           |
    |                         | "client.example.com" |           |
    |                         |<---------------------|           |
    |                         |                      |           |
    |  EAP-Request/           |                      |           |
    |   Type=TEAP,            |                      |           |
    |   {PKCS#7 TLV,          |                      |           |
    |    Result TLV=Success}  |                      |           |
    |<------------------------|                      |           |
    |                         |                      |           |
    |  EAP-Response/          |                      |           |
    |   Type=TEAP,            |                      |           |
    |   {Result TLV=Success}  |                      |           |
    |------------------------>|                      |           |
    |                         |                      |           |
    |  EAP-Success            |                      |           |
    |<------------------------|                      |           |

]]></artwork>
      </artset>
    </section>
    <section anchor="acme-integration-considerations">
      <name>ACME Integration Considerations</name>
      <section anchor="service-operators">
        <name>Service Operators</name>
        <t>The goal of these integrations is enabling issuance of certificates with identifiers in a given domain by an ACME server to a client. The operator of the EST RA or TEAP server must be able to fulfil ACME challenges that prove domain ownership for issuance of certificates with identifiers in that domain. The ACME server is not necessarily operated by the organization that controls the domain.</t>
        <t>If the client sends a certificate enrollment request for an identifier in a domain that the EST RA or TEAP server does not have operational control over, the server MUST reject the request with a suitable error immediately, and MUST NOT send a certificate enrollment request to the ACME server. See <xref target="error-handling"/> for more information on error handling.</t>
      </section>
      <section anchor="csr-attributes">
        <name>CSR Attributes</name>
        <t>In all EST and BRSKI integrations, the client MUST send a CSR Attributes request to the EST server prior to sending a certificate enrollment request. This enables the server to indicate to the client what attributes, and what attribute values, it expects the client to include in the subsequent CSR request. For example, the server could instruct the peer what Subject Alternative Name entries to include in its CSR.</t>
        <t>EST <xref target="RFC7030"/> is not clear on how the CSR Attributes response should be structured, and in particular is not clear on how a server can instruct a client to include specific attribute values in its CSR. <xref target="I-D.ietf-lamps-rfc7030-csrattrs"/> clarifies how a server can use CSR Attributes response to specify specific values for attributes that the client should include in its CSR.</t>
        <t>Servers MUST use this mechanism to tell the client what identifiers to include in CSR request. ACME <xref target="RFC8555"/> allows the identifier to be included in either CSR Subject or Subject Alternative Name fields, however <xref target="I-D.ietf-uta-use-san"/> states that Subject Alternative Name field MUST be used. This document aligns with <xref target="I-D.ietf-uta-use-san"/> and Subject Alternate Name field MUST be used. The identifier MUST be a subdomain of a domain that the server has control over and can fulfill ACME challenges against. The leftmost part of the identifier MAY be a field that the client presented to the server in an IEEE 802.1AR <xref target="IDevID"/>.</t>
        <t>Servers MAY use this field to instruct the client to include other attributes such as specific policy OIDs. Refer to EST <xref target="RFC7030"/> Section 2.6 for further details.</t>
      </section>
      <section anchor="certificate-chains-and-trust-anchors">
        <name>Certificate Chains and Trust Anchors</name>
        <t>ACME <xref target="RFC8555"/> Section 9.1 states that ACME servers may return a certificate chain to an ACME client where an end entity certificate is followed by certificates that certify it. The trust anchor certificate SHOULD be omitted from the chain as it is assumed that the trust anchor is already known by the ACME client i.e. the EST or TEAP server.</t>
        <section anchor="est-cacerts">
          <name>EST /cacerts</name>
          <t>EST <xref target="RFC7030"/> Section 4.2.3 states that the /simpleenroll response contains "only the certificate that was issued". EST <xref target="RFC7030"/> Section 4.1.3 states that the /cacerts response "MUST include any additional certificates the client would need to build a chain from an EST CA-issued certificate to the current EST CA TA".</t>
          <t>Therefore, the EST server MUST return only the ACME end entity certificate in the /simpleenroll response. The EST server MUST return the remainder of the chain returned by the ACME server to the EST server in the /cacerts response to the client, appending the trust anchor root CA if necessary.</t>
        </section>
        <section anchor="teap-pkcs7-tlv">
          <name>TEAP PKCS#7 TLV</name>
          <t>TEAP <xref target="RFC7170"/> Section 4.2.16 allows for download of a PKCS#7 <xref target="RFC2315"/> certificate chain in response to a TEAP PKCS#10 <xref target="RFC2986"/> TLV request. TEAP also allows for download of multiple PKCS#7 certificates in response to a TEAP Trusted-Server-Root TLV request.</t>
          <t>The TEAP server MUST return the full ACME client certificate chain in the PKCS#7 response to the PKCS#10 TLV request. The TEAP server MUST return the ACME server trust anchor in a PKCS#7 response to a Trusted-Server-Root TLV request. As outlined in <xref target="id-kp-cmcra"/>, the TEAP server SHOULD also return the trust anchor that was used for issuing its own identity certificate, if different from the ACME server trust anchor.</t>
        </section>
      </section>
      <section anchor="id-kp-cmcra">
        <name>id-kp-cmcRA</name>
        <t>BRSKI <xref target="RFC8995"/> mandates that the id-kp-cmcRA extended key usage OID is set in the Registrar (or EST RA) end entity certificate that the Registrar uses when signing voucher request messages sent to the MASA. Public ACME servers may not be willing to issue end entity certificates that have the id-kp-cmcRA extended key usage OID set. In these scenarios, the EST RA may be used by the pledge to get issued certificates by a public ACME server, but the EST RA itself will need an end entity certificate that has been issued by a different CA (e.g. an operator deployed private CA) and that has the id-kp-cmcRA OID set.</t>
      </section>
      <section anchor="error-handling">
        <name>Error Handling</name>
        <t>ACME <xref target="RFC8555"/> Section 6.7 defines multiple errors that may be returned by an ACME server to an ACME client. TEAP <xref target="RFC7170"/> Section 4.2.6 defines multiple errors that may be returned by a TEAP server to a client in an Error TLV. EST <xref target="RFC7030"/> Section 4.2.3 defines how an EST server may return an error encoded in a CMC <xref target="RFC5272"/> response, or may return a human readable error in the response body.</t>
        <t>If a client sends a certificate enrollment request to an EST RA for an identifier that the RA does not control, the RA MUST respond with a suitable 4xx HTTP <xref target="RFC9110"/> error code, and MUST NOT send an enrollment request to the ACME server. The RA MAY include a CMCFailInfo <xref target="RFC5272"/> error code of badIdentity.</t>
        <t>If a client sends a certificate enrollment request to a TEAP server for an identifier that the TEAP server does not control, the TEAP server MUST respond with an Error TLV with error code 1024 Bad Identity In Certificate Signing Request, and MUST NOT send an enrollment request to the ACME server.</t>
        <t>If the EST RA or TEAP server sends an enrollment request to the ACME server and receives an error response from the ACME server, the following mapping from ACME errors to CMC <xref target="RFC5272"/> Section 6.1.4 CMCFailInfo and TEAP <xref target="RFC7170"/> Section 4.2.6 error codes is RECOMMENDED.</t>
        <table>
          <thead>
            <tr>
              <th align="left">ACME</th>
              <th align="left">CMCFailInfo</th>
              <th align="left">TEAP Error Code</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">badCSR</td>
              <td align="left">badRequest</td>
              <td align="left">1025 Bad CSR</td>
            </tr>
            <tr>
              <td align="left">caa</td>
              <td align="left">badRequest</td>
              <td align="left">1025 Bad CSR</td>
            </tr>
            <tr>
              <td align="left">rejectedIdentifier</td>
              <td align="left">badIdentity</td>
              <td align="left">1024 Bad Identity In CSR</td>
            </tr>
            <tr>
              <td align="left">all other errors</td>
              <td align="left">internalCAError</td>
              <td align="left">1026 Internal CA Error</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document does not make any requests to IANA.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This draft is informational and makes no changes to the referenced specifications.
All security considerations from these referenced documents are applicable here:</t>
      <ul spacing="normal">
        <li>EST <xref target="RFC7030"/></li>
        <li>BRSKI <xref target="RFC8995"/></li>
        <li>BRSKI Default Cloud Registrar <xref target="I-D.ietf-anima-brski-cloud"/></li>
        <li>TEAP <xref target="RFC7170"/></li>
      </ul>
      <t>Additionally, all Security Considerations in ACME in the following areas are equally applicable to ACME Integrations.</t>
      <t>It is expected that the integration mechanisms proposed here will primarily use the 'dns-01' challenge documented in <xref target="RFC8555"/> Section 8.4.  The security considerations in <xref target="RFC8555"/> says:</t>
      <t>The DNS is a common point of vulnerability for all of these
   challenges.  An entity that can provision false DNS records for a
   domain can attack the DNS challenge directly and can provision false
   A/AAAA records to direct the ACME server to send its HTTP validation
   query to a remote server of the attacker's choosing.</t>
      <t>It is expected that the TEAP-EAP server/EST Registrar will perform DNS dynamic updates.
This can be done in a variety of ways, including use of <xref target="RFC3007"/> Dynamic updates (with <xref target="RFC2136"/>), secured with either SIG(0) <xref target="RFC2931"/>, or TSIG keys.
Other proprietary APIs and interactions are also common, secured by some local credential.</t>
      <t>A concern is the disclosure of the credential used to update the DNS records.
If an attacker gains access to the credential, they can provision their own certificates into
the name space of the entity.</t>
      <t>For many uses, this may allow the attacker to get access to some enterprise resource.
When used to provision, for instance, a (SIP) phone system this would permit an attacker to impersonate a legitimate phone.
Not only does this allow for redirection of phone calls, but possibly also toll fraud.</t>
      <t>Operators should consider restricting the integration server such that it can only update the DNS records for a specific zone or zones where ACME is required for client certificate enrollment automation.
For example, if all IoT devices in an organization enroll using EST against an EST RA, and all IoT devices will be issued certificates in a subdomain under iot.example.com, then the integration server could be issued a credential that only allows updating of DNS records in a zone that includes domains in the iot.example.com namespace, but does not allow updating of DNS records under any other example.com DNS namespace.</t>
      <t>When performing challenge fulfilment via writing files to HTTP webservers, write access should only be granted to a specific set of servers, and only to a specific set of directories for storage of challenge files.</t>
      <section anchor="denial-of-service-against-acme-infrastructure">
        <name>Denial of Service against ACME infrastructure</name>
        <t>The intermediate node (the TEAP-EAP server, or the EST Registrar) should cache the resulting certificates such that if the communication with the pledge is lost, subsequent attempts
to enroll will result in the cache certificate being returned.</t>
        <t>As many public ACME servers have per-day, per-IP and per-subjectAltName limits, it is prudent not to request identical certificates too often.
When the limits are hit, it is often a sign of operator or installer error: Multiple configuration resets occurring within a short period of time.</t>
        <t>Many private CA relationships use <xref target="RFC8555"/> as their enrollment protocol, and in those cases, there may be very different limits.
But, rate limiting and caching still has some value in protecting external infrastructure.</t>
        <t>The cache should be indexed by the complete contents of the Certificate Signing Request,
and should not persist beyond the notAfter date in the certificate.</t>
        <t>This means that if the private/public keypair changes on the pledge, then a new certificate will be issued.
If the requested SubjectAltName changes, then a new certificate will be requested.</t>
        <t>In a case where a device is simply factory reset, and enrolls again, then the same certificate can be returned.</t>
      </section>
      <section anchor="tls-channel-bindings">
        <name>TLS Channel Bindings</name>
        <t>EST <xref section="3.5" sectionFormat="comma" target="RFC7030"/> and TEAP <xref section="3.8.2" sectionFormat="comma" target="RFC7170"/> specify mechanisms to bind the PKCS#10 CSR request with the TLS tunnel used to transport the CSR request by using the tls-unique value from the TLS subsystem. It is RECOMMENDED that implementations use these tls-unique channel binding mechanisms.</t>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC8555">
          <front>
            <title>Automatic Certificate Management Environment (ACME)</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes">
              <organization/>
            </author>
            <author fullname="J. Hoffman-Andrews" initials="J." surname="Hoffman-Andrews">
              <organization/>
            </author>
            <author fullname="D. McCarney" initials="D." surname="McCarney">
              <organization/>
            </author>
            <author fullname="J. Kasten" initials="J." surname="Kasten">
              <organization/>
            </author>
            <date month="March" year="2019"/>
            <abstract>
              <t>Public Key Infrastructure using X.509 (PKIX) certificates are used for a number of purposes, the most significant of which is the authentication of domain names.  Thus, certification authorities (CAs) in the Web PKI are trusted to verify that an applicant for a certificate legitimately represents the domain name(s) in the certificate.  As of this writing, this verification is done through a collection of ad hoc mechanisms.  This document describes a protocol that a CA and an applicant can use to automate the process of verification and certificate issuance.  The protocol also provides facilities for other certificate management functions, such as certificate revocation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8555"/>
          <seriesInfo name="DOI" value="10.17487/RFC8555"/>
        </reference>
        <reference anchor="RFC7030">
          <front>
            <title>Enrollment over Secure Transport</title>
            <author fullname="M. Pritikin" initials="M." role="editor" surname="Pritikin">
              <organization/>
            </author>
            <author fullname="P. Yee" initials="P." role="editor" surname="Yee">
              <organization/>
            </author>
            <author fullname="D. Harkins" initials="D." role="editor" surname="Harkins">
              <organization/>
            </author>
            <date month="October" year="2013"/>
            <abstract>
              <t>This document profiles certificate enrollment for clients using Certificate Management over CMS (CMC) messages over a secure transport.  This profile, called Enrollment over Secure Transport (EST), describes a simple, yet functional, certificate management protocol targeting Public Key Infrastructure (PKI) clients that need to acquire client certificates and associated Certification Authority (CA) certificates.  It also supports client-generated public/private key pairs as well as key pairs generated by the CA.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7030"/>
          <seriesInfo name="DOI" value="10.17487/RFC7030"/>
        </reference>
        <reference anchor="RFC8995">
          <front>
            <title>Bootstrapping Remote Secure Key Infrastructure (BRSKI)</title>
            <author fullname="M. Pritikin" initials="M." surname="Pritikin">
              <organization/>
            </author>
            <author fullname="M. Richardson" initials="M." surname="Richardson">
              <organization/>
            </author>
            <author fullname="T. Eckert" initials="T." surname="Eckert">
              <organization/>
            </author>
            <author fullname="M. Behringer" initials="M." surname="Behringer">
              <organization/>
            </author>
            <author fullname="K. Watsen" initials="K." surname="Watsen">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document specifies automated bootstrapping of an Autonomic Control Plane.  To do this, a Secure Key Infrastructure is bootstrapped.  This is done using manufacturer-installed X.509 certificates, in combination with a manufacturer's authorizing service, both online and offline.  We call this process the Bootstrapping Remote Secure Key Infrastructure (BRSKI) protocol. Bootstrapping a new device can occur when using a routable address and a cloud service, only link-local connectivity, or limited/disconnected networks. Support for deployment models with less stringent security requirements is included. Bootstrapping is complete when the cryptographic identity of the new key infrastructure is successfully deployed to the device.  The established secure connection can be used to deploy a locally issued certificate to the device as well.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8995"/>
          <seriesInfo name="DOI" value="10.17487/RFC8995"/>
        </reference>
        <reference anchor="I-D.ietf-anima-brski-cloud">
          <front>
            <title>BRSKI Cloud Registrar</title>
            <author fullname="Owen Friel" initials="O." surname="Friel">
              <organization>Cisco</organization>
            </author>
            <author fullname="Rifaat Shekh-Yusef" initials="R." surname="Shekh-Yusef">
              <organization>Auth0</organization>
            </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <date day="17" month="May" year="2023"/>
            <abstract>
              <t>   Bootstrapping Remote Secure Key Infrastructures defines how to
   onboard a device securely into an operator maintained infrastructure.
   It assumes that there is local network infrastructure for the device
   to discover and to help the device.  This document extends the new
   device behaviour so that if no local infrastructure is available,
   such as in a home or remote office, that the device can use a well
   defined "call-home" mechanism to find the operator maintained
   infrastructure.

   To this, this document defines how to contact a well-known cloud
   registrar, and two ways in which the new device may be redirected
   towards the operator maintained infrastructure.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-anima-brski-cloud-06"/>
        </reference>
        <reference anchor="RFC7170">
          <front>
            <title>Tunnel Extensible Authentication Protocol (TEAP) Version 1</title>
            <author fullname="H. Zhou" initials="H." surname="Zhou">
              <organization/>
            </author>
            <author fullname="N. Cam-Winget" initials="N." surname="Cam-Winget">
              <organization/>
            </author>
            <author fullname="J. Salowey" initials="J." surname="Salowey">
              <organization/>
            </author>
            <author fullname="S. Hanna" initials="S." surname="Hanna">
              <organization/>
            </author>
            <date month="May" year="2014"/>
            <abstract>
              <t>This document defines the Tunnel Extensible Authentication Protocol (TEAP) version 1.  TEAP is a tunnel-based EAP method that enables secure communication between a peer and a server by using the Transport Layer Security (TLS) protocol to establish a mutually authenticated tunnel.  Within the tunnel, TLV objects are used to convey authentication-related data between the EAP peer and the EAP server.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7170"/>
          <seriesInfo name="DOI" value="10.17487/RFC7170"/>
        </reference>
        <reference anchor="I-D.ietf-acme-subdomains">
          <front>
            <title>Automated Certificate Management Environment (ACME) for Subdomains</title>
            <author fullname="Owen Friel" initials="O." surname="Friel">
              <organization>Cisco</organization>
            </author>
            <author fullname="Richard Barnes" initials="R." surname="Barnes">
              <organization>Cisco</organization>
            </author>
            <author fullname="Tim Hollebeek" initials="T." surname="Hollebeek">
              <organization>DigiCert</organization>
            </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <date day="1" month="March" year="2023"/>
            <abstract>
              <t>   This document specifies how Automated Certificate Management
   Environment (ACME) can be used by a client to obtain a certificate
   for a subdomain identifier from a certification authority.  This
   document specifies how a client can fulfill a challenge against an
   ancestor domain but may not need to fulfill a challenge against the
   explicit subdomain if certification authority policy allows issuance
   of the subdomain certificate without explicit subdomain ownership
   proof.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-acme-subdomains-07"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>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="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>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="RFC5272">
          <front>
            <title>Certificate Management over CMS (CMC)</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad">
              <organization/>
            </author>
            <author fullname="M. Myers" initials="M." surname="Myers">
              <organization/>
            </author>
            <date month="June" year="2008"/>
            <abstract>
              <t>This document defines the base syntax for CMC, a Certificate Management protocol using the Cryptographic Message Syntax (CMS). This protocol addresses two immediate needs within the Internet Public Key Infrastructure (PKI) community:</t>
              <t>1.  The need for an interface to public key certification products and services based on CMS and PKCS #10 (Public Key Cryptography Standard), and</t>
              <t>2.  The need for a PKI enrollment protocol for encryption only keys due to algorithm or hardware design.</t>
              <t>CMC also requires the use of the transport document and the requirements usage document along with this document for a full definition.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5272"/>
          <seriesInfo name="DOI" value="10.17487/RFC5272"/>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding">
              <organization/>
            </author>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham">
              <organization/>
            </author>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke">
              <organization/>
            </author>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes. </t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="I-D.ietf-lamps-rfc7030-csrattrs">
          <front>
            <title>Clarification of RFC7030 CSR Attributes definition</title>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <author fullname="Owen Friel" initials="O." surname="Friel">
              <organization>Cisco</organization>
            </author>
            <author fullname="David von Oheimb" initials="D." surname="von Oheimb">
              <organization>Siemens</organization>
            </author>
            <author fullname="Dan Harkins" initials="D." surname="Harkins">
              <organization>The Industrial Lounge</organization>
            </author>
            <date day="8" month="April" year="2023"/>
            <abstract>
              <t>   The Enrollment over Secure Transport (EST, RFC7030) is ambiguous in
   its specification of the CSR Attributes Response.  This has resulted
   in implementation challenges and implementor confusion.

   This document updates RFC7030 (EST) and clarifies how the CSR
   Attributes Response can be used by an EST server to specify both CSR
   attribute OIDs and also CSR attribute values, in particular X.509
   extension values, that the server expects the client to include in
   subsequent CSR request.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-rfc7030-csrattrs-02"/>
        </reference>
        <reference anchor="I-D.ietf-uta-use-san">
          <front>
            <title>Update to Verifying TLS Server Identities with X.509 Certificates</title>
            <author fullname="Rich Salz" initials="R." surname="Salz">
              <organization>Akamai Technologies</organization>
            </author>
            <date day="1" month="April" year="2021"/>
            <abstract>
              <t>   In the decade since [RFC6125] was published, the
   subjectAlternativeName extension (SAN), as defined in [RFC5280] has
   become ubiquitous.  This document updates [RFC6125] to specify that
   the fall-back techniques of using the commonName attribute to
   identify the service must not be used.  This document also places
   some limitations on the use of wildcards in SAN fields.

   The original context of [RFC6125] using X.509 certificates for server
   identity with Transport Layer Security (TLS), is not changed.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-uta-use-san-00"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="IDevID" target="https://1.ieee802.org/security/802-1ar">
          <front>
            <title>IEEE Standard for Local and metropolitan area networks - Secure Device Identity</title>
            <author>
              <organization>IEEE</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="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">
              <organization/>
            </author>
            <author fullname="S. Santesson" initials="S." surname="Santesson">
              <organization/>
            </author>
            <author fullname="S. Farrell" initials="S." surname="Farrell">
              <organization/>
            </author>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen">
              <organization/>
            </author>
            <author fullname="R. Housley" initials="R." surname="Housley">
              <organization/>
            </author>
            <author fullname="W. Polk" initials="W." surname="Polk">
              <organization/>
            </author>
            <date month="May" year="2008"/>
            <abstract>
              <t>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="RFC8499">
          <front>
            <title>DNS Terminology</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman">
              <organization/>
            </author>
            <author fullname="A. Sullivan" initials="A." surname="Sullivan">
              <organization/>
            </author>
            <author fullname="K. Fujiwara" initials="K." surname="Fujiwara">
              <organization/>
            </author>
            <date month="January" year="2019"/>
            <abstract>
              <t>The Domain Name System (DNS) is defined in literally dozens of different RFCs.  The terminology used by implementers and developers of DNS protocols, and by operators of DNS systems, has sometimes changed in the decades since the DNS was first defined.  This document gives current definitions for many of the terms used in the DNS in a single document.</t>
              <t>This document obsoletes RFC 7719 and updates RFC 2308.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="219"/>
          <seriesInfo name="RFC" value="8499"/>
          <seriesInfo name="DOI" value="10.17487/RFC8499"/>
        </reference>
        <reference anchor="RFC1034">
          <front>
            <title>Domain names - concepts and facilities</title>
            <author fullname="P. Mockapetris" initials="P." surname="Mockapetris">
              <organization/>
            </author>
            <date month="November" year="1987"/>
            <abstract>
              <t>This RFC is the revised basic definition of The Domain Name System.  It obsoletes RFC-882.  This memo describes the domain style names and their used for host address look up and electronic mail forwarding.  It discusses the clients and servers in the domain name system and the protocol used between them.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="13"/>
          <seriesInfo name="RFC" value="1034"/>
          <seriesInfo name="DOI" value="10.17487/RFC1034"/>
        </reference>
        <reference anchor="RFC0819">
          <front>
            <title>The Domain Naming Convention for Internet User Applications</title>
            <author fullname="Z. Su" initials="Z." surname="Su">
              <organization/>
            </author>
            <author fullname="J. Postel" initials="J." surname="Postel">
              <organization/>
            </author>
            <date month="August" year="1982"/>
            <abstract>
              <t>This RFC is an attempt to clarify the generalization of the Domain Naming Convention, the Internet Naming Convention, and to explore the implications of its adoption for Internet name service and user applications.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="819"/>
          <seriesInfo name="DOI" value="10.17487/RFC0819"/>
        </reference>
        <reference anchor="RFC8366">
          <front>
            <title>A Voucher Artifact for Bootstrapping Protocols</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen">
              <organization/>
            </author>
            <author fullname="M. Richardson" initials="M." surname="Richardson">
              <organization/>
            </author>
            <author fullname="M. Pritikin" initials="M." surname="Pritikin">
              <organization/>
            </author>
            <author fullname="T. Eckert" initials="T." surname="Eckert">
              <organization/>
            </author>
            <date month="May" year="2018"/>
            <abstract>
              <t>This document defines a strategy to securely assign a pledge to an owner using an artifact signed, directly or indirectly, by the pledge's manufacturer.  This artifact is known as a "voucher".</t>
              <t>This document defines an artifact format as a YANG-defined JSON document that has been signed using a Cryptographic Message Syntax (CMS) structure.  Other YANG-derived formats are possible.  The voucher artifact is normally generated by the pledge's manufacturer (i.e., the Manufacturer Authorized Signing Authority (MASA)).</t>
              <t>This document only defines the voucher artifact, leaving it to other documents to describe specialized protocols for accessing it.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8366"/>
          <seriesInfo name="DOI" value="10.17487/RFC8366"/>
        </reference>
        <reference anchor="RFC5652">
          <front>
            <title>Cryptographic Message Syntax (CMS)</title>
            <author fullname="R. Housley" initials="R." surname="Housley">
              <organization/>
            </author>
            <date month="September" year="2009"/>
            <abstract>
              <t>This document describes the Cryptographic Message Syntax (CMS).  This syntax is used to digitally sign, digest, authenticate, or encrypt arbitrary message content.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="70"/>
          <seriesInfo name="RFC" value="5652"/>
          <seriesInfo name="DOI" value="10.17487/RFC5652"/>
        </reference>
        <reference anchor="RFC2986">
          <front>
            <title>PKCS #10: Certification Request Syntax Specification Version 1.7</title>
            <author fullname="M. Nystrom" initials="M." surname="Nystrom">
              <organization/>
            </author>
            <author fullname="B. Kaliski" initials="B." surname="Kaliski">
              <organization/>
            </author>
            <date month="November" year="2000"/>
            <abstract>
              <t>This memo represents a republication of PKCS #10 v1.7 from RSA Laboratories' Public-Key Cryptography Standards (PKCS) series, and change control is retained within the PKCS process.  The body of this document, except for the security considerations section, is taken directly from the PKCS #9 v2.0 or the PKCS #10 v1.7 document.  This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2986"/>
          <seriesInfo name="DOI" value="10.17487/RFC2986"/>
        </reference>
        <reference anchor="RFC8017">
          <front>
            <title>PKCS #1: RSA Cryptography Specifications Version 2.2</title>
            <author fullname="K. Moriarty" initials="K." role="editor" surname="Moriarty">
              <organization/>
            </author>
            <author fullname="B. Kaliski" initials="B." surname="Kaliski">
              <organization/>
            </author>
            <author fullname="J. Jonsson" initials="J." surname="Jonsson">
              <organization/>
            </author>
            <author fullname="A. Rusch" initials="A." surname="Rusch">
              <organization/>
            </author>
            <date month="November" year="2016"/>
            <abstract>
              <t>This document provides recommendations for the implementation of public-key cryptography based on the RSA algorithm, covering cryptographic primitives, encryption schemes, signature schemes with appendix, and ASN.1 syntax for representing keys and for identifying the schemes.</t>
              <t>This document represents a republication of PKCS #1 v2.2 from RSA Laboratories' Public-Key Cryptography Standards (PKCS) series.  By publishing this RFC, change control is transferred to the IETF.</t>
              <t>This document also obsoletes RFC 3447.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8017"/>
          <seriesInfo name="DOI" value="10.17487/RFC8017"/>
        </reference>
        <reference anchor="RFC2315">
          <front>
            <title>PKCS #7: Cryptographic Message Syntax Version 1.5</title>
            <author fullname="B. Kaliski" initials="B." surname="Kaliski">
              <organization/>
            </author>
            <date month="March" year="1998"/>
            <abstract>
              <t>This document describes a general syntax for data that may have cryptography applied to it, such as digital signatures and digital envelopes.  This memo provides information for the Internet community. It does not specify an Internet standard of any kind.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2315"/>
          <seriesInfo name="DOI" value="10.17487/RFC2315"/>
        </reference>
        <reference anchor="RFC3007">
          <front>
            <title>Secure Domain Name System (DNS) Dynamic Update</title>
            <author fullname="B. Wellington" initials="B." surname="Wellington">
              <organization/>
            </author>
            <date month="November" year="2000"/>
            <abstract>
              <t>This document proposes a method for performing secure Domain Name System (DNS) dynamic updates.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3007"/>
          <seriesInfo name="DOI" value="10.17487/RFC3007"/>
        </reference>
        <reference anchor="RFC2136">
          <front>
            <title>Dynamic Updates in the Domain Name System (DNS UPDATE)</title>
            <author fullname="P. Vixie" initials="P." role="editor" surname="Vixie">
              <organization/>
            </author>
            <author fullname="S. Thomson" initials="S." surname="Thomson">
              <organization/>
            </author>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter">
              <organization/>
            </author>
            <author fullname="J. Bound" initials="J." surname="Bound">
              <organization/>
            </author>
            <date month="April" year="1997"/>
            <abstract>
              <t>Using this specification of the UPDATE opcode, it is possible to add or delete RRs or RRsets from a specified zone.  Prerequisites are specified separately from update operations, and can specify a dependency upon either the previous existence or nonexistence of an RRset, or the existence of a single RR.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2136"/>
          <seriesInfo name="DOI" value="10.17487/RFC2136"/>
        </reference>
        <reference anchor="RFC2931">
          <front>
            <title>DNS Request and Transaction Signatures ( SIG(0)s )</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd">
              <organization/>
            </author>
            <date month="September" year="2000"/>
            <abstract>
              <t>This document describes the minor but non-interoperable changes in Request and Transaction signature resource records ( SIG(0)s ) that implementation experience has deemed necessary.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2931"/>
          <seriesInfo name="DOI" value="10.17487/RFC2931"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
