<?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.7.34 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-acme-device-attest-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.32.0 -->
  <front>
    <title abbrev="ACME DA">Automated Certificate Management Environment (ACME) Device Attestation Extension</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-acme-device-attest-02"/>
    <author fullname="Brandon Weeks">
      <organization/>
      <address>
        <email>me@brandonweeks.com</email>
      </address>
    </author>
    <author fullname="Ganesh Mallaya">
      <organization/>
      <address>
        <email>ganesh.mallaya@appviewx.com</email>
      </address>
    </author>
    <author fullname="Sven Rajala">
      <organization/>
      <address>
        <email>sven.rajala@keyfactor.com</email>
      </address>
    </author>
    <author fullname="Corey Bonnell">
      <organization/>
      <address>
        <email>corey.bonnell@digicert.com</email>
      </address>
    </author>
    <date year="2026" month="March" day="26"/>
    <area>Security</area>
    <workgroup>ACME Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 69?>

<t>This document specifies new identifiers and a challenge for the
Automated Certificate Management Environment (ACME) protocol which allows validating the identity of a device using attestation.</t>
    </abstract>
  </front>
  <middle>
    <?line 74?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Automatic Certificate Management Environment (ACME) <xref target="RFC8555"/> standard specifies methods for validating control over identifiers, such as domain names. It is also useful to be able to validate properties of the device requesting the certificate, such as the identity of the device and whether the certificate key is protected by a secure cryptoprocessor.</t>
      <t>Many operating systems and device vendors offer functionality enabling a device to generate a cryptographic attestation of their identity, such as:</t>
      <ul spacing="normal">
        <li>
          <t><eref target="https://source.android.com/security/keystore/attestation">Android Key Attestation</eref></t>
        </li>
        <li>
          <t><eref target="https://developers.google.com/chrome/verified-access/overview">Chrome OS Verified Access</eref></t>
        </li>
        <li>
          <t><eref target="https://trustedcomputinggroup.org/resource/trusted-platform-module-tpm-summary/">Trusted Platform Module</eref></t>
        </li>
        <li>
          <t><eref target="https://support.apple.com/en-om/guide/deployment/dep28afbde6a/web">Managed Device Attestation for Apple Devices</eref></t>
        </li>
      </ul>
      <t>Using ACME and device attestation to issue client certificates for enterprise PKI is to be a common use case. The following variances to the ACME specification are described in this document:</t>
      <ul spacing="normal">
        <li>
          <t>Addition of <tt>permanent-identifier</tt> <xref target="RFC4043"/> and <tt>hardware-module</tt> <xref target="RFC4108"/> identifier types.</t>
        </li>
        <li>
          <t>Addition of the <tt>device-attest-01</tt> challenge type to prove control of the <tt>permanent-identifier</tt> and <tt>hardware-module</tt> identifier types.</t>
        </li>
        <li>
          <t>The challenge response payload contains a serialized WebAuthn attestation statement format instead of an empty JSON object (<tt>{}</tt>).</t>
        </li>
        <li>
          <t>Accounts and external account binding being used as a mechanism to pre-authenticate requests to an enterprise CA.</t>
        </li>
      </ul>
      <t>This document does not specify the attestation verification procedures. Section 13 of <xref target="WebAuthn"/> gives some guidance, however verification procedures are complex and may require changes to address future security issues.</t>
      <t>Efforts are underway within the Remote ATtestation ProcedureS (RATS) working group to define a set of standard formats and protocols for attestation. An explicit aim of this document is to support vendor specific formats and protocols that are widely deployed at publication time of this specification.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="permanent-identifier">
      <name>Permanent Identifier</name>
      <t>A new identifier type, "permanent-identifier" is introduced to represent the identity of a device assigned by the manufacturer, typically a serial number. Additionally, the assigner of the identifier <bcp14>MAY</bcp14> also be specified. The name of this identifier type was chosen to align with <xref target="RFC4043"/>. This specification does not prescribe the lifetime of the identifier, which is at the discretion of the Assigner Authority.</t>
      <t>Although <xref target="RFC4043"/> permits any valid UTF-8 string to be used as the identifier, this specification mandates that identifiers <bcp14>MUST NOT</bcp14> contain the forward-slash "/" (UTF-8: U+002F) character. This restriction is required to make the ABNF production rule for the <tt>permanent-identifier-value</tt> unambiguous.</t>
      <section anchor="representation-in-order-resources">
        <name>Representation in Order resources</name>
        <t>The identifier's <tt>value</tt> field contains a UTF-8 string representation of the identity of the device. In addition to the value being a valid UTF-8 string, the value <bcp14>MUST</bcp14> match the <tt>permanent-identifier-value</tt> production rule as defined in this ABNF <xref target="RFC5234"/> syntax:</t>
        <t>```
assigner-value = ("0" / "1" / "2")  1<em>("." 1</em>DIGIT)
device-identifier-value = 1*(%x00-2E / %x30-FF)</t>
        <t>permanent-identifier-value = device-identifier-value ["/" assigner-value]
```</t>
        <t>A valid <tt>permanent-identifier-value</tt> value is a UTF-8 string that contains an identity consisting of one or more characters without any forward-slash "/" (UTF-8: U+002F) characters. Optionally, a forward-slash "/" character and "dotted-decimal" object identifier identifying the assigner may follow the identity.</t>
        <t>Example identifier without an assigner:</t>
        <t><tt>
{
  "type": "permanent-identifier",
  "value": "ABCDEF123456"
}
</tt></t>
        <t>Example identifier with an assigner:</t>
        <t><tt>
{
  "type": "permanent-identifier",
  "value": "ABCDEF123456/1.2.3.4"
}
</tt></t>
      </section>
      <section anchor="representation-in-certificate-signing-requests-and-x509-certificates">
        <name>Representation in Certificate Signing Requests and X.509 Certificates</name>
        <t>The identity is included in the Subject Alternative Name Extension using the <tt>identifierValue</tt> field of the PermanentIdentifier form described in <xref target="RFC4043"/>. Although <xref target="RFC4043"/> permits the requester to include the <tt>identifierValue</tt> in a <tt>serialNumber</tt> subject attribute, this specification mandates that the <tt>identifierValue</tt> field of the PermanentIdentifier <bcp14>MUST</bcp14> be present and <bcp14>MUST</bcp14> contain the identifier.</t>
        <t>The value of the <tt>identifierValue</tt> field of the PermanentIdentifier <bcp14>MUST</bcp14> be an octet-for-octet match of the <tt>device-identifier-value</tt> value as encoded in the Order resource. If the <tt>assigner-value</tt> value is included in the identifier as encoded in the Order resource, then the <tt>assigner</tt> field of the PermanentIdentifier <bcp14>MUST</bcp14> be the encoding of the "dotted-decimal" object identifier encoded as the <tt>assigner-value</tt> value.</t>
        <t>To ensure that the identifier as presented in the Order resource and CSR match, the Server <bcp14>MUST</bcp14> perform the logical equivalent of extracting the <tt>device-identifier-value</tt> and <tt>assigner-value</tt> values from the CSR and reconstructing the UTF-8 representation of the identifier. The Server <bcp14>MUST</bcp14> then ensure that the UTF-8 representation and the identifier presented in the Order resource are an octet-for-octet match and reject the Order otherwise.</t>
        <t><xref target="RFC8555"/> section 7.4 mandates that "The CSR <bcp14>MUST</bcp14> indicate the exact same set of requested identifiers as the initial newOrder request". However, there are some environments where the Server requires validation of the identifier but does not include the identifier in certificates due to privacy concerns. To support privacy-preserving certificates, Clients <bcp14>MAY</bcp14> omit this identifier in the certificate signing request (CSR). Similarly, if the Server wishes to issue privacy-preserving certificates, it <bcp14>MAY</bcp14> reject CSRs containing a PermanentIdentifier in the subjectAltName extension.</t>
      </section>
    </section>
    <section anchor="hardware-module">
      <name>Hardware Module</name>
      <t>A new identifier type, "hardware-module" is introduced to represent the identity of the secure crypto-processor that generated the certificate key. The identity is modeled after the HardwareModuleName form described in <xref target="RFC4108"/>. It consists of two components: an OBJECT IDENTIFIER to represent the type of hardware module, and a serial number that identifies the specific hardware module.</t>
      <t>Although <xref target="RFC4108"/> specifies that serial numbers can be represented as any sequence of bytes, this specification requires that serial numbers <bcp14>MUST</bcp14> be representable as valid UTF-8 strings consisting of at least one code point and <bcp14>MUST NOT</bcp14> contain a forward-slash "/" (UTF-8: U+002F) character. These restriction ensures that serial numbers can be included in <tt>hardware-module</tt> identifier string values and that the ABNF production rule for the value is unambiguous.</t>
      <section anchor="representation-in-order-resources-1">
        <name>Representation in Order resources</name>
        <t>The identifier's <tt>value</tt> field contains a UTF-8 string representation of the identity of the hardware module. In addition to the value being a valid UTF-8 string, the value <bcp14>MUST</bcp14> match the <tt>hardware-module-value</tt> production rule as defined in this ABNF <xref target="RFC5234"/> syntax:</t>
        <t>```
hw-type-value = ("0" / "1" / "2")  1<em>("." 1</em>DIGIT)
hw-serial-num-value = 1*(%x00-2E / %x30-FF)</t>
        <t>hardware-module-value = hw-serial-num-value ["/" hw-type-value]
```</t>
        <t>A valid <tt>hardware-module-value</tt> value is a UTF-8 string that contains a serial number consisting of one or more characters without any forward-slash "/" (UTF-8: U+002F) characters. Optionally, a forward-slash "/" character and "dotted-decimal" object identifier identifying the hardware type may follow the serial number.</t>
        <t>Example identifier with the type of the hardware module represented using the OBJECT IDENTIFIER "1.2.3.4" and a serial number of "ABCD":</t>
        <t><tt>
{
  "type": "hardware-module",
  "value": "ABCD/1.2.3.4"
}
</tt></t>
        <t>Example identifier with no type specified and a serial number of "ABCD":</t>
        <t><tt>
{
  "type": "hardware-module",
  "value": "ABCD"
}
</tt></t>
      </section>
      <section anchor="representation-in-certificate-signing-requests-and-x509-certificates-1">
        <name>Representation in Certificate Signing Requests and X.509 Certificates</name>
        <t>The hardware module identity is included in the Subject Alternate Name Extension using the HardwareModuleName form described in <xref target="RFC4108"/>. The HardwareModuleName is encoded as an otherName with the OID id-on-hardwareModuleName (1.3.6.1.5.5.7.8.4) and consists of:</t>
        <ul spacing="normal">
          <li>
            <t>hwType: An OBJECT IDENTIFIER that identifies the type of hardware module</t>
          </li>
          <li>
            <t>hwSerialNum: An OCTET STRING containing the hardware module serial number</t>
          </li>
        </ul>
        <t>The value of the <tt>hwSerialNum</tt> field of the HardwareModuleName <bcp14>MUST</bcp14> be an octet-for-octet match of the <tt>hw-serial-num-value</tt> value as encoded in the Order resource. If the <tt>hw-type-value</tt> value is included in the identifier as encoded in the Order resource, then the <tt>hwType</tt> field of the HardwareModuleName <bcp14>MUST</bcp14> be the encoding of the "dotted-decimal" object identifier encoded as the <tt>hw-type-value</tt> value.</t>
        <t>To ensure that the identifier as presented in the Order resource and CSR match, the Server <bcp14>MUST</bcp14> perform the logical equivalent of extracting the <tt>hw-serial-num-value</tt> and <tt>hw-type-value</tt> values from the CSR and reconstructing the UTF-8 representation of the identifier. The Server <bcp14>MUST</bcp14> then ensure that the UTF-8 representation and the identifier presented in the Order resource are an octet-for-octet match and reject the Order otherwise.</t>
        <t><xref target="RFC8555"/> section 7.4 mandates that "The CSR <bcp14>MUST</bcp14> indicate the exact same set of requested identifiers as the initial newOrder request". However, there are some environments where the Server requires validation of the identifier but does not include the identifier in certificates due to privacy concerns. To support privacy-preserving certificates, Clients <bcp14>MAY</bcp14> omit this identifier in the certificate signing request (CSR). Similarly, if the Server wishes to issue privacy-preserving certificates, it <bcp14>MAY</bcp14> reject CSRs containing a HardwareModuleName in the subjectAltName extension.</t>
      </section>
    </section>
    <section anchor="device-attestation-challenge">
      <name>Device Attestation Challenge</name>
      <t>The Client can prove control over a permanent identifier of a device by
providing an attestation statement containing the identifier of the device.</t>
      <t>The device-attest-01 ACME challenge object has the following format:</t>
      <dl>
        <dt>type (required, string):</dt>
        <dd>
          <t>The string "device-attest-01".</t>
        </dd>
        <dt>token (required, string):</dt>
        <dd>
          <t>A random value that uniquely identifies the challenge.</t>
        </dd>
      </dl>
      <artwork><![CDATA[
{
  "type": "device-attest-01",
  "url": "https://example.com/acme/chall/Rg5dV14Gh1Q",
  "status": "pending",
  "token": "evaGxfADs6pSRb2LAv9IZf17Dt3juxGJ-PCt92wr-oA"
}
]]></artwork>
      <t>A Client fulfills this challenge by constructing a key authorization (<xref section="8.1" sectionFormat="of" target="RFC8555"/>)
 from the "token" value provided in the challenge and the Client's
 account key. The Client then generates a WebAuthn attestation object using the key authorization as the challenge.</t>
      <t>This specification borrows the WebAuthn <em>attestation object</em> representation as described in Section 6.5.4 of <xref target="WebAuthn"/> for encapsulating attestation formats, but with these modifications:</t>
      <ul spacing="normal">
        <li>
          <t>The key authorization is used to form <em>attToBeSigned</em>. This replaces the concatenation of <em>authenticatorData</em> and <em>clientDataHash</em>. <em>attToBeSigned</em> is hashed using an algorithm specified by the attestation format. <!-- TODO: ^^^ perhaps add more cross-refs or context about "using an algorithm specified by the attestation format" -->
          </t>
        </li>
        <li>
          <t>The <em>authData</em> field is unused and <bcp14>SHOULD</bcp14> be omitted.</t>
        </li>
      </ul>
      <t>A Client responds with the response object containing the WebAuthn attestation object in the "attObj" field to acknowledge that the challenge can be validated by the Server.</t>
      <t>On receiving a response, the Server constructs and stores the key authorization from the challenge's "token" value and the current Client account key.</t>
      <t>To validate a device attestation challenge, the Server performs the following steps:</t>
      <ol spacing="normal" type="1"><li>
          <t>Perform the verification procedures described in Section 6 of <xref target="WebAuthn"/>.</t>
        </li>
        <li>
          <t>Verify that key authorization conveyed by <em>attToBeSigned</em> matches the key authorization stored by the Server.</t>
        </li>
      </ol>
      <!-- This specification defines a new challenge response field `attObj` to contain WebAuthn attestation objects as described in Section 7.5.1 of {{RFC8555}}. -->

<artwork><![CDATA[
POST /acme/chall/Rg5dV14Gh1Q
Host: example.com
Content-Type: application/jose+json

{
  "protected": base64url({
    "alg": "ES256",
    "kid": "https://example.com/acme/acct/evOfKhNU60wg",
    "nonce": "SS2sSl1PtspvFZ08kNtzKd",
    "url": "https://example.com/acme/chall/Rg5dV14Gh1Q"
  }),
  "payload": base64url({
    "attObj": base64url(/* WebAuthn attestation object */),
  }),
  "signature": "Q1bURgJoEslbD1c5...3pYdSMLio57mQNN4"
}
]]></artwork>
      <t>The webauthn payload <bcp14>MAY</bcp14> contain any identifiers registered in "WebAuthn Attestation Statement Format Identifiers" and any extensions registered in "WebAuthn Extension Identifiers" <xref target="IANA-Webauthn"/>, <xref target="RFC8809"/>.</t>
    </section>
    <section anchor="operational-considerations">
      <name>Operational Considerations</name>
      <t>Although this document focuses guidance on implementing new type and challenge for certificate issuance using ACME, it does not define a New Protocol, a Protocol Extension, or an architecture.</t>
      <section anchor="enterprise-pki">
        <name>Enterprise PKI</name>
        <t>ACME was originally envisioned for issuing certificates in the Web PKI, however this extension will primarily be useful in enterprise PKI. The subsection below covers some operational considerations for an ACME-based enterprise CA.
<!-- TODO: ^^^ perhaps also mention/cover IoT attestation PKI usecases -->
        </t>
        <section anchor="external-account-binding">
          <name>External Account Binding</name>
          <t>An enterprise CA likely only wants to receive requests from authorized devices. It is <bcp14>RECOMMENDED</bcp14> that the Server require a value for the "externalAccountBinding" field to be
present in "newAccount" requests.</t>
          <t>If an enterprise CA desires to limit the number of certificates that can be requested with a given account, including limiting an account to a single certificate. After the desired number of certificates have been issued to an account, the Server <bcp14>MAY</bcp14> revoke the account as described in Section 7.1.2 of <xref target="RFC8555"/>.</t>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Please reference <xref target="RFC8555"/> for other security considerations.</t>
      <t>See Section 13 of <xref target="WebAuthn"/> for additional security considerations related to attestation statement formats, including certificate revocation.</t>
      <t>Key attestation statements may include a variety of information in addition to the public key being attested. While not described in this document, the Server <bcp14>MAY</bcp14> use any policy when evaluating this information. This evaluation can result in rejection of a certificate request that features a verifiable key attestation for the public key contained in the request. For example, an attestation statement may indicate use of an unacceptable firmware version.</t>
      <t>The "token" value <bcp14>MUST</bcp14> have at least 128 bits of entropy. It <bcp14>MUST NOT</bcp14> contain any characters outside the
base64url alphabet, including padding characters ("="). See <xref target="I-D.ietf-tls-rfc8446bis"/>, Appendix C.1 for additional information on randomness requirements.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="acme-identifier-types">
        <name>ACME Identifier Types</name>
        <t>The "ACME Identifier Types" registry is to be updated to include the following entries:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Label</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">permanent-identifier</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">hardware-module</td>
              <td align="left">RFC XXXX</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="acme-validation-method">
        <name>ACME Validation Method</name>
        <t>The "ACME Validation Methods" registry is to be updated to include the following entry:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Label</th>
              <th align="left">Identifier Type</th>
              <th align="left">ACME</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">device-attest-01</td>
              <td align="left">permanent-identifier</td>
              <td align="left">Y</td>
              <td align="left">RFC XXXX</td>
            </tr>
          </tbody>
        </table>
        <!-- Begin WebAuthn registry text -->
<!-- Editor's note: the below text was written by Carl Wallance as part of draft-wallace-lamps-key-attestation-ext. These registries only need to be established by a single document, so if they are established by another document prior to this document being approved, this text will be removed and replaced with a reference to the other document.  -->

</section>
      <section anchor="new-error-types">
        <name>New Error Types</name>
        <t>This document adds the following entries to the ACME Error Type registry:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Type</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">badAttestationStatement</td>
              <td align="left">The attestation statement is unacceptable (e.g. not signed by an attestation authority trusted by the CA)</td>
              <td align="left">RFC XXXX</td>
            </tr>
          </tbody>
        </table>
        <!-- End WebAuthn registry text -->

</section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC4108">
          <front>
            <title>Using Cryptographic Message Syntax (CMS) to Protect Firmware Packages</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="August" year="2005"/>
            <abstract>
              <t>This document describes the use of the Cryptographic Message Syntax (CMS) to protect firmware packages, which provide object code for one or more hardware module components. CMS is specified in RFC 3852. A digital signature is used to protect the firmware package from undetected modification and to provide data origin authentication. Encryption is optionally used to protect the firmware package from disclosure, and compression is optionally used to reduce the size of the protected firmware package. A firmware package loading receipt can optionally be generated to acknowledge the successful loading of a firmware package. Similarly, a firmware package load error report can optionally be generated to convey the failure to load a firmware package. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4108"/>
          <seriesInfo name="DOI" value="10.17487/RFC4108"/>
        </reference>
        <reference anchor="RFC4043">
          <front>
            <title>Internet X.509 Public Key Infrastructure Permanent Identifier</title>
            <author fullname="D. Pinkas" initials="D." surname="Pinkas"/>
            <author fullname="T. Gindin" initials="T." surname="Gindin"/>
            <date month="May" year="2005"/>
            <abstract>
              <t>This document defines a new form of name, called permanent identifier, that may be included in the subjectAltName extension of a public key certificate issued to an entity.</t>
              <t>The permanent identifier is an optional feature that may be used by a CA to indicate that two or more certificates relate to the same entity, even if they contain different subject name (DNs) or different names in the subjectAltName extension, or if the name or the affiliation of that entity stored in the subject or another name form in the subjectAltName extension has changed.</t>
              <t>The subject name, carried in the subject field, is only unique for each subject entity certified by the one CA as defined by the issuer name field. However, the new name form can carry a name that is unique for each subject entity certified by a CA. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4043"/>
          <seriesInfo name="DOI" value="10.17487/RFC4043"/>
        </reference>
        <reference anchor="RFC8555">
          <front>
            <title>Automatic Certificate Management Environment (ACME)</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="J. Hoffman-Andrews" initials="J." surname="Hoffman-Andrews"/>
            <author fullname="D. McCarney" initials="D." surname="McCarney"/>
            <author fullname="J. Kasten" initials="J." surname="Kasten"/>
            <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="RFC8809">
          <front>
            <title>Registries for Web Authentication (WebAuthn)</title>
            <author fullname="J. Hodges" initials="J." surname="Hodges"/>
            <author fullname="G. Mandyam" initials="G." surname="Mandyam"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="August" year="2020"/>
            <abstract>
              <t>This specification defines IANA registries for W3C Web Authentication (WebAuthn) attestation statement format identifiers and extension identifiers.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8809"/>
          <seriesInfo name="DOI" value="10.17487/RFC8809"/>
        </reference>
        <reference anchor="I-D.ietf-tls-rfc8446bis">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
              <organization>Independent</organization>
            </author>
            <date day="13" month="September" year="2025"/>
            <abstract>
              <t>   This document specifies version 1.3 of the Transport Layer Security
   (TLS) protocol.  TLS allows client/server applications to communicate
   over the Internet in a way that is designed to prevent eavesdropping,
   tampering, and message forgery.

   This document updates RFCs 5705, 6066, 7627, and 8422 and obsoletes
   RFCs 5077, 5246, 6961, 8422, and 8446.  This document also specifies
   new requirements for TLS 1.2 implementations.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-rfc8446bis-14"/>
        </reference>
        <reference anchor="WebAuthn" target="https://www.w3.org/TR/webauthn-2/">
          <front>
            <title>Web Authentication: An API for accessing Public Key Credentials Level 2</title>
            <author fullname="Jeff Hodges">
              <organization>Google</organization>
            </author>
            <author fullname="J.C. Jones">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Michael B. Jones">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Akshay Kumar">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Emil Lundberg">
              <organization>Yubico</organization>
            </author>
            <date year="2021" month="April"/>
          </front>
        </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"/>
            <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"/>
            <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="RFC5234">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="P. Overell" initials="P." surname="Overell"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="IANA-Webauthn" target="https://www.iana.org/assignments/webauthn/webauthn.xhtml">
          <front>
            <title>IANA Registries for Web Authentication (WebAuthn)</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
    <?line 340?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>We thank the participants on the ACME Working Group mailing list for their insightful feedback and comments. In particular, the authors extend sincere appreciation to Mike Ounsworth, Deb Cooley, Aaron Gable, Richard Barnes, and  Herman Slatman for their reviews and suggestions, which greatly improved the quality of this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
hOa118D7N/YR7wjLSQAA

-->

</rfc>
