<?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.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-acme-dns-persist-02" category="std" consensus="true" submissionType="IETF" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="ACME Persistent DNS Challenge">Automated Certificate Management Environment (ACME) Challenge for Persistent DNS TXT Record Validation</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-acme-dns-persist-02"/>
    <author initials="S." surname="Heurich" fullname="Shiloh Heurich">
      <organization>Fastly</organization>
      <address>
        <email>sheurich@fastly.com</email>
      </address>
    </author>
    <author initials="H." surname="Birge-Lee" fullname="Henry Birge-Lee">
      <organization>Crosslayer Labs, Inc.</organization>
      <address>
        <email>henry@crosslayerlabs.com</email>
      </address>
    </author>
    <author initials="M." surname="Slaughter" fullname="Michael Slaughter">
      <organization>Amazon Trust Services</organization>
      <address>
        <email>slghtr@amazon.com</email>
      </address>
    </author>
    <date year="2026" month="September" day="20"/>
    <area>Security</area>
    <workgroup>Automated Certificate Management Environment</workgroup>
    <keyword>acme</keyword>
    <keyword>dns</keyword>
    <keyword>validation</keyword>
    <keyword>persistent</keyword>
    <abstract>
      <?line 61?>

<t>This document specifies "dns-persist-01", a new validation method for the Automated Certificate Management Environment (ACME) protocol. This method allows a Certification Authority (CA) to verify control over a domain by confirming the presence of a persistent DNS TXT record containing CA and account identification information. This method is particularly suited for environments where traditional challenge methods are impractical, such as multi-tenant hosting platforms, enterprise DNS environments, and IoT deployments. The validation method is designed with a strong focus on security and robustness, incorporating widely adopted industry best practices for persistent domain control validation. This design aims to make it suitable for Certification Authorities operating under various policy environments, including those that align with the CA/Browser Forum Baseline Requirements.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-acme-dns-persist/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Automated Certificate Management Environment Working Group mailing list (<eref target="mailto:acme@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/acme/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/acme/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ietf-wg-acme/draft-ietf-acme-dns-persist"/>.</t>
    </note>
  </front>
  <middle>
    <?line 65?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Automated Certificate Management Environment (ACME) protocol <xref target="RFC8555"/> defines mechanisms for automating certificate issuance and domain validation. The existing challenge methods, "http-01" and "dns-01", require real-time interaction between the ACME client and the domain's infrastructure during the validation process. While effective for many use cases, these methods present challenges in certain deployment scenarios.</t>
      <t>Examples include:</t>
      <ul spacing="normal">
        <li>
          <t>Edge compute and multi-tenant hosting platforms where the entity managing the DNS zone is distinct from the tenant subscribing to the certificate.</t>
        </li>
        <li>
          <t>Organizations that wish to pre-validate domains and batch issuance operations offline or at a later time.</t>
        </li>
        <li>
          <t>Environments with strict change management processes where DNS modifications require approval workflows.</t>
        </li>
        <li>
          <t>Scenarios requiring wildcard certificates where domain control is proven once and reused over an extended period.</t>
        </li>
        <li>
          <t>Internet of Things (IoT) deployments where devices may not be able to host an HTTP service or coordinate DNS updates in real-time.</t>
        </li>
      </ul>
      <t>This document defines a new ACME challenge type, "dns-persist-01". This method proves control over a Fully Qualified Domain Name (FQDN) by confirming the presence of a persistent DNS TXT record containing CA and account identification information. Because the record's value is derived from account, domain, and CA parameters rather than from a per-challenge token, the record can be published before any certificate request and by a party other than the ACME client (see <xref target="pre-provisioning-records"/>).</t>
      <t>The record format is based on the "issue-value" syntax from <xref target="RFC8659"/>, incorporating an <tt>issuer-domain-name</tt> and a mandatory <tt>accounturi</tt> parameter whose value is defined in <xref target="validation-record-format"/>. The parameter name is reused from the CAA <tt>accounturi</tt> parameter defined in <xref target="RFC8657"/>, Section 3; <xref target="caa-interaction"/> explains the relationship between them. The <tt>accounturi</tt> is a hashed URI that cryptographically binds the account to the domain being validated. This design provides strong binding between the domain, the CA, and the entity requesting validation.</t>
      <section anchor="robustness-and-alignment">
        <name>Robustness and Alignment with Industry Best Practices</name>
        <t>This validation method is designed to provide a robust and persistent mechanism for domain control verification within the ACME protocol. Its technical design incorporates widely adopted security principles and best practices for domain validation, ensuring high assurance regardless of the specific CA policy environment. These principles include, but are not limited to:</t>
        <ol spacing="normal" type="1"><li>
            <t>The use of a well-defined, unique DNS label (e.g., "_validation-persist") for persistent validation records, minimizing potential conflicts.</t>
          </li>
          <li>
            <t>Explicit binding of the domain validation to an ACME account through a unique identifier, establishing clear accountability and enhancing security against unauthorized use.</t>
          </li>
        </ol>
        <t>Certification Authorities operating under various trust program requirements will find this technical framework suitable for their domain validation needs, as its design inherently supports robust and auditable validation practices.</t>
      </section>
    </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?>

<dl>
        <dt><strong>DNS TXT Record Persistent DCV Domain Label</strong></dt>
        <dd>
          <t>The label "_validation-persist" as specified in this document. This label is consistent with industry practices for persistent domain validation.</t>
        </dd>
        <dt><strong>Validation Domain Name</strong></dt>
        <dd>
          <t>The domain name at which the validation TXT record is provisioned. It is formed by prepending the DNS TXT Record Persistent DCV Domain Label to the FQDN being validated.
</t>
          <t>This term follows the precedent set by <xref target="RFC8555"/>, Section 8.4, which uses "validation domain name" for the analogous <tt>_acme-challenge.&lt;FQDN&gt;</tt> label in the dns-01 challenge. This document avoids the term "Authorization Domain Name" because the CA/Browser Forum Baseline Requirements <xref target="cabf-br"/> define it as the FQDN used to obtain authorization, without any label prepended.</t>
        </dd>
        <dt><strong>Issuer Domain Name</strong></dt>
        <dd>
          <t>A domain name disclosed by the CA in Section 4.2 of the CA's Certificate Policy and/or Certification Practices Statement to identify the CA for the purposes of this validation method.
</t>
          <t>The directory and challenge-object fields that carry Issuer Domain Names, and their relationship to <tt>caaIdentities</tt>, are defined in <xref target="directory-issuer-domain-names"/> and <xref target="challenge-object"/>.</t>
        </dd>
        <dt><strong>Validation Data Reuse Period</strong></dt>
        <dd>
          <t>The period during which a CA may rely on validation data, as defined by the CA's practices and applicable requirements.</t>
        </dd>
        <dt><strong>persistUntil</strong></dt>
        <dd>
          <t>An optional parameter in the validation record that specifies the timestamp after which the validation record should no longer be considered valid by CAs. The value <bcp14>MUST</bcp14> be a base-10 encoded integer representing a UNIX timestamp (the number of seconds since 1970-01-01T00:00:00Z ignoring leap seconds). Client pre-flight guidance appears in <xref target="client-implementation-guidelines"/>.</t>
        </dd>
      </dl>
      <t>This document follows <xref target="RFC8555"/> in attributing DNS provisioning actions to the ACME client. Except where a requirement explicitly involves an ACME message exchange or the account's private key, a DNS action attributed to the client <bcp14>MAY</bcp14> instead be performed by another party acting on behalf of the domain owner, such as a DNS operator; <xref target="pre-provisioning-records"/> describes the values such a party needs. Requirements on the content of <tt>_validation-persist</tt> records apply to the published record regardless of which party publishes it.</t>
    </section>
    <section anchor="dns-persist-01-challenge">
      <name>The "dns-persist-01" Challenge</name>
      <t>The "dns-persist-01" challenge allows an ACME client to demonstrate control over an FQDN by proving it can provision a DNS TXT record containing specific, persistent validation information. The validation information links the FQDN to both the Certificate Authority performing the validation and the account requesting the validation.</t>
      <t>When an ACME client accepts a "dns-persist-01" challenge, it proves control by provisioning a DNS TXT record at the Validation Domain Name. Unlike the existing "dns-01" challenge, this record is designed to persist and may be reused for multiple certificate issuances over an extended period.</t>
      <section anchor="challenge-object">
        <name>Challenge Object</name>
        <t>The challenge object for "dns-persist-01" contains the following fields:</t>
        <ul spacing="normal">
          <li>
            <t><strong>type</strong> (required, string): The string "dns-persist-01"</t>
          </li>
          <li>
            <t><strong>url</strong> (required, string): The URL to which a response can be posted</t>
          </li>
          <li>
            <t><strong>status</strong> (required, string): The status of this challenge</t>
          </li>
          <li>
            <t><strong>issuerDomainNames</strong> (required, array of strings): A list of one or more Issuer Domain Names. The client <bcp14>MUST</bcp14> choose one of these domain names to include in the DNS TXT record. The challenge is successful if a valid TXT record is found that uses any one of the provided domain names.  </t>
            <t>
Each string in the array <bcp14>MUST</bcp14> be a domain name that complies with the following normalization rules:  </t>
            <ol spacing="normal" type="1"><li>
                <t>The domain name <bcp14>MUST</bcp14> be represented in A-label format (Punycode, <xref target="RFC5890"/>).</t>
              </li>
              <li>
                <t>All characters <bcp14>MUST</bcp14> be lowercase.</t>
              </li>
              <li>
                <t>The domain name <bcp14>MUST NOT</bcp14> have a trailing dot.</t>
              </li>
            </ol>
            <t>
The server <bcp14>MUST</bcp14> ensure the array is not empty. Servers <bcp14>MUST NOT</bcp14> send more than 10 issuer domain names. This limit serves as a practical measure to prevent denial-of-service vectors against clients. Clients <bcp14>MUST</bcp14> consider a challenge malformed if the <tt>issuerDomainNames</tt> array is empty or if it contains more than 10 entries, and <bcp14>MUST</bcp14> reject such challenges. Each domain name <bcp14>MUST NOT</bcp14> exceed 253 octets in length.</t>
          </li>
        </ul>
        <t>The following shows an example challenge object:</t>
        <figure anchor="fig-challenge-object">
          <name>Example dns-persist-01 Challenge Object</name>
          <sourcecode type="json"><![CDATA[
{
  "type": "dns-persist-01",
  "url": "https://ca.example/acme/authz/1234/0",
  "status": "pending",
  "issuerDomainNames": ["authority.example", "ca.example.net"]
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="directory-issuer-domain-names">
        <name>Directory Metadata for Issuer Domain Names</name>
        <t>A CA offering the <tt>dns-persist-01</tt> challenge type <bcp14>MUST</bcp14> advertise an <tt>issuerDomainNames</tt> array in the <tt>meta</tt> object of its directory (<xref target="RFC8555"/>, Section 7.1.1). This directory-level array lets a client discover Issuer Domain Names before opening any authorization, so it can pre-provision <tt>_validation-persist</tt> records per <xref target="pre-provisioning-records"/> without an interactive order.</t>
        <t>The directory <tt>issuerDomainNames</tt> array <bcp14>MUST</bcp14> use the same normalization and length rules as the challenge object's <tt>issuerDomainNames</tt> array (<xref target="challenge-object"/>): each entry <bcp14>MUST</bcp14> be a lowercase A-label domain name with no trailing dot and <bcp14>MUST NOT</bcp14> exceed 253 octets. The array <bcp14>MUST NOT</bcp14> be empty and <bcp14>MUST NOT</bcp14> contain more than 10 entries.</t>
        <t>Let D be the set of values in the directory <tt>issuerDomainNames</tt> array, and let I be the set of values in the directory <tt>caaIdentities</tt> array (<xref target="RFC8555"/>, Section 7.1.1), represented as lowercase A-label domain names with no trailing dot. This document does not require a CA to advertise <tt>caaIdentities</tt>; a CA that does not perform CAA validation has no names to disclose there. For each <tt>dns-persist-01</tt> challenge object the CA issues, let C be the set of values in that challenge's <tt>issuerDomainNames</tt> array. The CA <bcp14>MUST</bcp14> satisfy these requirements:</t>
        <ul spacing="normal">
          <li>
            <t>Every value in D <bcp14>MUST</bcp14> appear in C. A client that pre-provisions a record using a name from D is therefore guaranteed that the name will satisfy the <tt>issuer-domain-name</tt> requirement of any <tt>dns-persist-01</tt> challenge that CA issues later, without first opening an authorization.</t>
          </li>
          <li>
            <t>C <bcp14>MAY</bcp14> include values beyond D while remaining within the 10-entry maximum in <xref target="challenge-object"/>, so a CA can offer challenge-specific names in addition to its pre-provisioning baseline.</t>
          </li>
          <li>
            <t>If the CA advertises <tt>caaIdentities</tt>, every value in C <bcp14>MUST</bcp14> also appear in I. This prevents a CA that participates in CAA validation from accepting an <tt>issuer-domain-name</tt> it has not also disclosed through <tt>caaIdentities</tt>.</t>
          </li>
        </ul>
        <t>For these subset comparisons, the CA <bcp14>MUST</bcp14> compare <tt>caaIdentities</tt> values, when advertised, after applying the same lowercase A-label and trailing-dot rules used for D and C.</t>
        <t><tt>caaIdentities</tt> values of publicly trusted CAs are kept distinct by the CA/Browser Forum disclosure and audit regime. Identities of CAs outside that regime have no equivalent protection against another CA recognizing the same name, so a domain owner who adds such an identity to a CAA policy accepts that reuse caveat.</t>
        <t>A client <bcp14>MUST</bcp14> treat a missing or nonconforming directory <tt>issuerDomainNames</tt> array as unavailable for pre-provisioning. A missing or nonconforming <tt>caaIdentities</tt> array does not affect pre-provisioning; it only makes the I comparisons unavailable. A client <bcp14>MAY</bcp14> still process an interactive <tt>dns-persist-01</tt> challenge. When D is available, the client <bcp14>MUST</bcp14> consider a challenge malformed if any value in D is absent from C. When I is available, the client <bcp14>MUST</bcp14> consider a challenge malformed if any value in C is absent from I.</t>
      </section>
    </section>
    <section anchor="challenge-response-and-verification">
      <name>Challenge Response and Verification</name>
      <t>To respond to the challenge, the ACME client provisions a DNS TXT record at the Validation Domain Name of the domain being validated. The Validation Domain Name is formed by prepending the label "_validation-persist" to the domain name being validated.</t>
      <t>For example, if the domain being validated is "example.com", the Validation Domain Name would be "_validation-persist.example.com".</t>
      <t>The client indicates it is ready for validation by POSTing an empty JSON object (<tt>{}</tt>) to the challenge URL, following the procedure defined in <xref target="RFC8555"/>, Section 7.5.1.</t>
      <section anchor="validation-record-format">
        <name>Validation Record Format</name>
        <t>The RDATA of this TXT record <bcp14>MUST</bcp14> fulfill the following requirements:</t>
        <ol spacing="normal" type="1"><li>
            <t>The RDATA value <bcp14>MUST</bcp14> conform to the issue-value syntax defined in <xref target="RFC8659"/>, Section 4.2. To ensure forward compatibility, the server <bcp14>MUST</bcp14> ignore any parameter within the issue-value that has an unrecognized tag.</t>
          </li>
          <li>
            <t>The <tt>issuer-domain-name</tt> portion of the issue-value <bcp14>MUST</bcp14> be one of the Issuer Domain Names provided by the CA in the <tt>issuerDomainNames</tt> array of the challenge object. If the <tt>issuer-domain-name</tt> does not match any of the provided values, the CA <bcp14>MUST</bcp14> reject the record.</t>
          </li>
          <li>
            <t>The issue-value <bcp14>MUST</bcp14> contain an <tt>accounturi</tt> parameter whose value is a hashed URI identifying the ACME account requesting validation. A hashed URI cryptographically binds the account to the domain being validated without publishing the account URL in cleartext. It is formed by concatenating the CA's <tt>accountHashPrefix</tt>, a hash-algorithm identifier, a "/" separator, and a base64url hash value:  </t>
            <artwork><![CDATA[
<accountHashPrefix><hash-alg>/<base64url hash value>
]]></artwork>
            <t>
A CA that advertises support for the dns-persist-01 challenge type <bcp14>MUST</bcp14> advertise an <tt>accountHashPrefix</tt> string in the <tt>meta</tt> object of its directory (<xref target="RFC8555"/>, Section 7.1.1). This prefix places hashed account URIs under the CA's infrastructure and lets a client construct them from the directory without a per-provisioning request to the CA. The CA <bcp14>MUST</bcp14> choose a prefix such that appending the remaining components yields a valid URI (for example, <tt>https://ca.example/account-hash/</tt>).  </t>
            <t><tt>&lt;hash-alg&gt;</tt> <bcp14>MUST</bcp14> be the exact Hash Name String registered in the "Named Information Hash Algorithm Registry" defined by <xref target="RFC6920"/>, Section 9.4. Both clients and CAs implementing dns-persist-01 <bcp14>MUST</bcp14> support the registered <tt>sha-256</tt> Hash Name String, which identifies SHA-256 <xref target="FIPS180-4"/>: a client <bcp14>MUST</bcp14> be able to compute, and a CA <bcp14>MUST</bcp14> accept, a hashed URI that uses this token, so that every conforming implementation interoperates without prior negotiation. A CA <bcp14>MAY</bcp14> accept other registered algorithms and <bcp14>MUST</bcp14> document each additional algorithm it accepts. An additional algorithm <bcp14>MUST</bcp14> have a registered digest length of at least 256 bits and <bcp14>MUST</bcp14> remain collision resistant at the time of use. A client <bcp14>MAY</bcp14> use an optional algorithm only after establishing from the CA's documentation that the CA accepts it. This document defines no separate algorithm-negotiation mechanism.  </t>
            <t>
A CA <bcp14>MUST</bcp14> reject with a <tt>malformed</tt> error (<xref target="RFC8555"/>, Section 6.7) any <tt>_validation-persist</tt> record whose <tt>&lt;hash-alg&gt;</tt> token identifies a hash algorithm the CA no longer accepts, including records the CA previously validated under that algorithm. If a CA deprecates or discontinues acceptance of a hash algorithm, domain owners <bcp14>MUST</bcp14> re-provision records using an accepted hash algorithm.  </t>
            <t><tt>&lt;base64url hash value&gt;</tt> is the base64url encoding <xref target="RFC4648"/>, with trailing padding (<tt>=</tt>) omitted, of the hash digest computed with the identified algorithm over the following octet string:  </t>
            <artwork><![CDATA[
H(length_of_domain || domain_name || key || account_URL)
]]></artwork>
            <t>
where <tt>H</tt> is the identified hash algorithm and <tt>||</tt> denotes octet-string concatenation. The inputs are:  </t>
            <ol spacing="normal" type="1"><li>
                <t><tt>length_of_domain</tt> is a single octet giving the length in octets of <tt>domain_name</tt>. A domain name is limited to 255 octets (<xref target="RFC1035"/>, Section 2.3.4), so a single octet always suffices. This length prefix delimits <tt>domain_name</tt> from the fields that follow.</t>
              </li>
              <li>
                <t><tt>domain_name</tt> is, by default, the FQDN being validated: the Validation Domain Name with its leading <tt>_validation-persist</tt> label removed and no trailing dot, in the normalized lowercase A-label form produced by <xref target="normalization-algorithm"/>. This form is US-ASCII. This is the FQDN at which the <tt>_validation-persist</tt> record is provisioned, not the FQDN of the certificate ultimately requested; binding the record to its own domain is what makes the hashed URI domain-specific (see <xref target="hashed-uri-security"/>).      </t>
                <t>
As an exception, a client <bcp14>MAY</bcp14> set <tt>domain_name</tt> to the single US-ASCII octet <tt>*</tt> (0x2a; <tt>length_of_domain</tt> is then 0x01) to opt out of the domain-correlation mitigation. The resulting hashed URI does not depend on the domain and <bcp14>MAY</bcp14> therefore be reused across domains. A CA <bcp14>MUST</bcp14> accept a hashed URI computed with <tt>domain_name</tt> set to <tt>*</tt>. The privacy trade-off of this opt-out is described in <xref target="hashed-uri-security"/>.</t>
              </li>
              <li>
                <t><tt>key</tt> is the 43 ASCII octets of the unpadded base64url encoding <xref target="RFC4648"/> of the SHA-256 JWK Thumbprint <xref target="RFC7638"/> of a public key associated with the ACME account. This is the encoding used for the thumbprint component of an ACME key authorization (<xref target="RFC8555"/>, Section 8.1), so a client can reuse that component without decoding it. When provisioning a <tt>_validation-persist</tt> record, the client <bcp14>MUST</bcp14> use the account's current key. A CA <bcp14>MUST</bcp14> accept a hashed URI generated with the current key associated with the account. Additionally, a CA <bcp14>MUST</bcp14> accept a hashed URI generated with a prior key previously associated with the account that is known to the CA per the key retention obligation in <xref target="verification-procedure"/>, subject to the deactivation and retention rules stated there. This allows a record provisioned before a key rotation to continue to validate. The rationale for these requirements is given in <xref target="hashed-uri-security"/>.</t>
              </li>
              <li>
                <t><tt>account_URL</tt> is the ACME account URL (<xref target="RFC8555"/>, Section 7.3). A URI is US-ASCII per <xref target="RFC3986"/>, so it is encoded as those US-ASCII octets.</t>
              </li>
            </ol>
            <t>
The CA <bcp14>MUST</bcp14> verify that the hashed URI in the DNS record authorizes the ACME account making the request, by recomputing it as described in <xref target="verification-procedure"/>; if no recomputation matches, the CA <bcp14>MUST</bcp14> reject the record.</t>
          </li>
          <li>
            <t>The issue-value <bcp14>MAY</bcp14> contain a <tt>policy</tt> parameter. If present, this parameter modifies the validation scope. The <tt>policy</tt> parameter follows the 'tag=value' syntax from <xref target="RFC8659"/>. Comparison of the values defined for this parameter <bcp14>MUST</bcp14> be case-insensitive (e.g., "WILDCARD" and "wildcard" are equivalent).  </t>
            <t>
Note: The requirement to ignore unrecognized parameters (item 1) ensures forward compatibility, allowing future extensions without breaking existing implementations, consistent with ACME's extensibility model (<xref target="RFC8555"/>). The explicit case-insensitivity requirement is necessary to ensure consistent behavior across implementations; without it, some CAs might reject unknown parameter values, preventing protocol evolution.  </t>
            <t>
The following value for the <tt>policy</tt> parameter is defined with respect to subdomain and wildcard validation:  </t>
            <ul spacing="normal">
              <li>
                <t><tt>policy=wildcard</tt>: If this value is present, the CA <bcp14>MAY</bcp14> consider this validation sufficient for issuing certificates for the validated FQDN, for specific subdomains of the validated FQDN (as covered by wildcard scope or specific subdomain validation rules), and for wildcard certificates (e.g., <tt>*.example.com</tt>). See <xref target="wildcard-certificate-validation"/> and <xref target="subdomain-certificate-validation"/>.</t>
              </li>
            </ul>
            <t>
If the <tt>policy</tt> parameter is absent, or if its value is anything other than <tt>wildcard</tt>, the CA <bcp14>MUST</bcp14> proceed as if the <tt>policy</tt> parameter were not present (i.e., the validation applies only to the specific FQDN).</t>
          </li>
          <li>
            <t>The issue-value <bcp14>MAY</bcp14> contain a <tt>persistUntil</tt> parameter. If present, the value <bcp14>MUST</bcp14> be a base-10 encoded integer representing a UNIX timestamp (the number of seconds since 1970-01-01T00:00:00Z ignoring leap seconds). If the value is not a valid base-10 integer, the CA <bcp14>MUST</bcp14> treat the record as malformed and reject it.  </t>
            <t>
When a CA validates a <tt>_validation-persist</tt> record containing a <tt>persistUntil</tt> parameter with timestamp T, the CA <bcp14>MUST NOT</bcp14> set the <tt>expires</tt> field of the resulting authorization object (<xref target="RFC8555"/>, Section 7.1.4) later than T, and <bcp14>MUST NOT</bcp14> rely on that validation to issue certificates after T. After timestamp T, a CA <bcp14>MUST NOT</bcp14> consider the record valid for new validation attempts. Already-issued certificates are unaffected by the expiration of a <tt>persistUntil</tt> timestamp.</t>
          </li>
        </ol>
        <t>This specification defines the following case-handling rules for parameter values in dns-persist-01 records:</t>
        <ul spacing="normal">
          <li>
            <t><tt>accounturi</tt>: The value is a hashed URI. CAs <bcp14>MUST</bcp14> compare <tt>accounturi</tt> values using Simple String Comparison per <xref target="RFC3986"/>, Section 6.2.1, with no case-folding or other normalization.</t>
          </li>
          <li>
            <t><tt>policy</tt>: Case-insensitive, as specified in item 4 above.</t>
          </li>
          <li>
            <t><tt>persistUntil</tt>: The value is a base-10 integer. Case does not apply.</t>
          </li>
        </ul>
        <t>For example, for validation of the FQDN "example.com" with issuer domain name "authority.example", where the CA advertises an <tt>accountHashPrefix</tt> of "https://ca.example/account-hash/" and the account's hashed URI (see <xref target="hashed-uri-example"/> for the full computation) is "https://ca.example/account-hash/sha-256/5SQm7n6tPh2-PlLbCKGnViTXX5z19SCN4cPGQHSk-kw", the DNS TXT record would contain:</t>
        <figure anchor="ex-basic-validation">
          <name>Basic Validation TXT Record</name>
          <sourcecode type="dns"><![CDATA[
_validation-persist.example.com. IN TXT ("authority.example;"
" accounturi=https://ca.example/account-hash/"
"sha-256/5SQm7n6tPh2-PlLbCKGnViTXX5z19SCN4cPGQHSk-kw")
]]></sourcecode>
        </figure>
      </section>
      <section anchor="verification-procedure">
        <name>Verification Procedure</name>
        <t>The ACME server verifies the challenge by performing a DNS lookup for TXT records at the Validation Domain Name. It then iterates through the returned records to find one that conforms to the required structure. For a record to be considered valid, its <tt>issuer-domain-name</tt> value <bcp14>MUST</bcp14> match one of the values provided in the <tt>issuerDomainNames</tt> array from the challenge object, and its <tt>accounturi</tt> parameter <bcp14>MUST</bcp14> be a hashed URI that identifies the requesting account, as defined in <xref target="validation-record-format"/>. When comparing issuer domain names, the server <bcp14>MUST</bcp14> adhere to the normalization rules specified in <xref target="challenge-object"/>. The server also interprets any <tt>policy</tt> parameter values according to this specification. If no record meeting all requirements is found, the server <bcp14>MUST</bcp14> treat the challenge as failed.</t>
        <t>To verify a hashed-URI <tt>accounturi</tt> value, the CA already knows the requesting account's URL and the FQDN being validated. The CA computes the expected hashed URI as defined in <xref target="validation-record-format"/> over each ACME public key it retains for that account (see below); for each such key it computes the value twice, once using the FQDN being validated as <tt>domain_name</tt> and once using the domain-omitted opt-out form (<tt>domain_name</tt> set to <tt>*</tt>). The CA treats the record as satisfying the requirement if its <tt>accounturi</tt> value equals any of these computed hashed URIs under Simple String Comparison (<xref target="RFC3986"/>, Section 6.2.1). Retaining an account's prior key thumbprints allows records provisioned before a key rotation to continue validating.</t>
        <t>To recompute these hashed URIs, a CA has a data-retention obligation: it <bcp14>MUST</bcp14> retain an association between each ACME account and the SHA-256 JWK Thumbprints of all public keys that account has used since the CA began accepting <tt>dns-persist-01</tt> records. The following rules govern this retained data and the acceptance of the keys behind it, listed in order of precedence with earlier rules overriding later ones:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Deactivation overrides retention.</strong> A CA <bcp14>MUST NOT</bcp14> accept a hashed URI computed from a key of a deactivated ACME account, regardless of any retention rule below. Deactivating an account (<xref target="RFC8555"/>, Section 7.3.6) stops all of that account's <tt>_validation-persist</tt> records from validating immediately, which is the intended behavior for a suspected key or account compromise. The CA <bcp14>MUST</bcp14> evaluate account status from live account state at each validation attempt; an account proof or status observed at record publication time <bcp14>MUST NOT</bcp14> substitute for live validation-time account evaluation. Once an account is deactivated, the CA <bcp14>MAY</bcp14> prune all retained key thumbprints for that account.</t>
          </li>
          <li>
            <t><strong>Witnessed key retention.</strong> Subject to rule 1, a CA <bcp14>MUST</bcp14> retain the SHA-256 JWK Thumbprint of every public key an account has used, bounded only by the lifetime of the account, so that a record computed under any of those keys continues to validate across routine key rotations.</t>
          </li>
        </ol>
        <t>A CA <bcp14>MAY</bcp14> cache computed or accepted hashed URIs; such caching <bcp14>MUST NOT</bcp14> change any acceptance outcome.</t>
        <t>The CA <bcp14>MUST</bcp14> evaluate <tt>persistUntil</tt>, <tt>policy</tt>, <tt>issuer-domain-name</tt>, and any unrecognized parameters from fresh DNS data retrieved during each validation attempt. No previously observed or cached value of these fields overrides the values read during the current validation.</t>
        <t>When recomputing expected hashed URIs over retained keys, the CA <bcp14>MUST</bcp14> evaluate the account's current key first, and <bcp14>SHOULD</bcp14> evaluate remaining retained keys in reverse chronological order of their use.</t>
      </section>
      <section anchor="multiple-issuer-support">
        <name>Multiple Issuer Support</name>
        <t>A domain <bcp14>MAY</bcp14> authorize multiple Certificate Authorities (CAs) by provisioning a separate <tt>_validation-persist</tt> TXT record for each issuer. This allows domain owners to maintain relationships with multiple CAs simultaneously, enhancing flexibility and resilience.</t>
        <section anchor="coexistence-of-records">
          <name>Coexistence of Records</name>
          <t>When multiple TXT records are present at the same DNS label (e.g., <tt>_validation-persist.example.com</tt>), each record functions as an independent authorization for the specified issuer. This follows a similar pattern to CAA records <xref target="RFC8659"/>, where multiple records at the same label are permissible.</t>
        </section>
        <section anchor="ca-verification-process">
          <name>CA Verification Process</name>
          <t>When a CA performs validation for a domain with multiple <tt>_validation-persist</tt> TXT records, it <bcp14>MUST</bcp14> follow these steps:</t>
          <ol spacing="normal" type="1"><li>
              <t><strong>Query DNS</strong>: Retrieve all TXT records from the Validation Domain Name.</t>
            </li>
            <li>
              <t><strong>Filter Records</strong>: Iterate through the returned records to find those where the <tt>issuer-domain-name</tt> value matches one of the Issuer Domain Names the CA is configured to use for this validation. The CA <bcp14>MUST</bcp14> ignore all other records.</t>
            </li>
            <li>
              <t><strong>Validate Record</strong>: For each matching record, the CA proceeds to validate it according to the requirements in this specification, including verifying the <tt>accounturi</tt> and <tt>persistUntil</tt> parameters. If any matching record satisfies all requirements, the validation succeeds.</t>
            </li>
            <li>
              <t><strong>Handle No Match</strong>: If no record with a matching <tt>issuer-domain-name</tt> is found, or if no matching record satisfies all validation requirements, the validation attempt <bcp14>MUST</bcp14> fail.</t>
            </li>
          </ol>
        </section>
        <section anchor="security-and-management-considerations">
          <name>Security and Management Considerations</name>
          <t>When authorizing multiple issuers, domain owners <bcp14>MUST</bcp14> consider the following:</t>
          <dl>
            <dt><strong>Auditing</strong></dt>
            <dd>
              <t>Regularly audit DNS records to ensure that only intended CAs remain authorized. Remove records for CAs that are no longer in use.</t>
            </dd>
            <dt><strong>Independent Security</strong></dt>
            <dd>
              <t>Each authorized CA operates independently. The compromise of one CA's systems does not directly affect the security of other authorized CAs.</t>
            </dd>
            <dt><strong>Weakest Link</strong></dt>
            <dd>
              <t>The domain's overall security posture is influenced by the security practices of all authorized CAs. Domain owners should consider the practices of each CA they authorize.</t>
            </dd>
            <dt><strong>Authorization Removal</strong></dt>
            <dd>
              <t>To de-authorize a CA, the corresponding TXT record <bcp14>MUST</bcp14> be deleted from the DNS zone.</t>
            </dd>
          </dl>
        </section>
        <section anchor="example-authorizing-two-cas">
          <name>Example: Authorizing Two CAs</name>
          <t>This example demonstrates how a domain owner can authorize two different CAs, "ca1.example" and "ca2.example", to issue certificates for <tt>example.org</tt>.</t>
          <t><strong>DNS Configuration:</strong></t>
          <figure anchor="ex-multiple-ca-auth">
            <name>Multiple CA Authorization Records</name>
            <sourcecode type="dns"><![CDATA[
_validation-persist.example.org. 3600 IN TXT ("ca1.example;"
" accounturi=https://ca1.example/account-hash/"
"sha-256/wjZNvLpIgf7zrr9KQo7zCLaG2Ea67KS4o4cAwSepsls;"
" policy=wildcard")
_validation-persist.example.org. 3600 IN TXT ("ca2.example;"
" accounturi=https://ca2.example/account-hash/"
"sha-256/Mpngr2LZCN9gPArggXqEu4pKtYZvLL5IxMStzyWrrXc;"
" persistUntil=1767225600")
]]></sourcecode>
          </figure>
          <t><strong>Verification Flow for CA1:</strong></t>
          <ol spacing="normal" type="1"><li>
              <t>CA1 queries for TXT records at <tt>_validation-persist.example.org</tt>.</t>
            </li>
            <li>
              <t>It receives both records.</t>
            </li>
            <li>
              <t>It filters for the record where <tt>issuer-domain-name</tt> is "ca1.example".</t>
            </li>
            <li>
              <t>It validates the request using this record, noting the <tt>policy=wildcard</tt> authorization.</t>
            </li>
            <li>
              <t>The second record for "ca2.example" is ignored.</t>
            </li>
          </ol>
          <t><strong>Verification Flow for CA2:</strong></t>
          <ol spacing="normal" type="1"><li>
              <t>CA2 queries for TXT records at <tt>_validation-persist.example.org</tt>.</t>
            </li>
            <li>
              <t>It receives both records.</t>
            </li>
            <li>
              <t>It filters for the record where <tt>issuer-domain-name</tt> is "ca2.example".</t>
            </li>
            <li>
              <t>It validates the request using this record, noting the <tt>persistUntil</tt> constraint.</t>
            </li>
            <li>
              <t>The first record for "ca1.example" is ignored.</t>
            </li>
          </ol>
        </section>
      </section>
      <section anchor="just-in-time-validation">
        <name>Just-in-Time Validation</name>
        <t>When processing a new authorization request, a CA <bcp14>MAY</bcp14> perform an immediate DNS lookup for <tt>_validation-persist</tt> TXT records at the Validation Domain Name corresponding to the requested domain identifier.</t>
        <t>If one or more such records exist, the CA <bcp14>MUST</bcp14> evaluate them according to the requirements specified in <xref target="multiple-issuer-support"/>. If at least one record meets all validation requirements, the CA <bcp14>MAY</bcp14> transition the authorization to the "valid" status without returning a "pending" challenge to the client. This mechanism is an optimization and does not alter the ACME state machine defined in <xref target="RFC8555"/>. The server internally transitions the authorization from "pending" through "processing" to "valid" instantaneously. From the client's perspective, it receives a "valid" authorization object directly in response to its creation request.</t>
        <t>If no DNS TXT record meets the validation requirements, or if the records are absent, the CA <bcp14>MUST</bcp14> proceed with the standard authorization flow by returning a "pending" authorization with an associated <tt>dns-persist-01</tt> challenge object.</t>
        <t>CAs implementing Just-in-Time validation <bcp14>SHOULD</bcp14> rate-limit JIT DNS lookups per domain identifier, independent of the requesting account, to prevent amplification attacks where multiple accounts trigger excessive queries against a target domain. CAs <bcp14>SHOULD</bcp14> restrict JIT validation to accounts that have previously completed a successful <tt>dns-persist-01</tt> validation. CAs implementing Just-in-Time validation <bcp14>SHOULD</bcp14> provide account activity notifications or logging, as this path eliminates the challenge-response interaction that might otherwise provide a detection window for account compromise.</t>
        <t>This mechanism enables efficient reuse of persistent validation records while maintaining the security properties of the validation method.</t>
      </section>
      <section anchor="pre-provisioning-records">
        <name>Pre-Provisioning Records</name>
        <t>Domain owners <bcp14>MAY</bcp14> provision <tt>_validation-persist</tt> TXT records before requesting any certificates, provided they can compute the <tt>accounturi</tt> value. The earliest point at which this value can be computed is ACME account creation, because the account URL returned in the newAccount response (<xref target="RFC8555"/>, Section 7.3) is an input to the hash; no order, authorization, or challenge object is required to compute or publish the record. When constructing records without a challenge object, the following values <bcp14>MUST</bcp14> be used:</t>
        <ul spacing="normal">
          <li>
            <t><strong>accounturi</strong>: The hashed URI, computed as specified in <xref target="validation-record-format"/>. A client knows its own ACME account URL (as returned in the <tt>Location</tt> header of the account creation response, <xref target="RFC8555"/>, Section 7.3), the FQDN it is provisioning, and its current account key, so it can compute and publish the hashed URI itself from the CA's <tt>accountHashPrefix</tt> without a per-provisioning request to the CA. A client that wishes to reuse a single record across multiple domains <bcp14>MAY</bcp14> instead use the domain-omitted opt-out form (<tt>domain_name</tt> set to <tt>*</tt>, see <xref target="validation-record-format"/>).</t>
          </li>
          <li>
            <t><strong>issuer-domain-name</strong>: A CA offering the dns-persist-01 challenge type advertises its Issuer Domain Names in the <tt>issuerDomainNames</tt> array of its directory <tt>meta</tt> object (see <xref target="directory-issuer-domain-names"/>). Clients pre-provisioning records <bcp14>SHOULD</bcp14> use one of these values; a value obtained elsewhere is not guaranteed to appear in a later challenge and can leave the record unusable.</t>
          </li>
        </ul>
        <t>For a pre-provisioned record, the client computes the hashed <tt>accounturi</tt> itself, outside the ACME challenge-response flow, from its own ACME account URL, its current account key, and the CA's <tt>accountHashPrefix</tt>. The client obtains the <tt>accountHashPrefix</tt> from the CA's directory (<xref target="RFC8555"/>, Section 7.1.1) and <bcp14>SHOULD</bcp14> retrieve the directory over an authenticated channel, so that the record is placed under the intended CA's infrastructure. Because the hashed URI cryptographically binds the account key (see <xref target="hashed-uri-security"/>), a record computed with the client's genuine account key cannot be made to validate for a different account; this key binding is what lets a domain owner safely pre-provision without the challenge-response exchange.</t>
        <t>Computing the hashed URI requires no private-key operation; the inputs are the account URL, the account key's public JWK Thumbprint, the domain name (or the <tt>*</tt> opt-out), the CA's <tt>accountHashPrefix</tt>, and the hash-algorithm identifier, all of which the account holder can share with another party. A domain owner <bcp14>MAY</bcp14> therefore delegate computation and publication of a <tt>_validation-persist</tt> record to a party that does not operate the ACME client and holds no ACME credentials, such as a DNS operator; the ACME client itself needs no DNS credentials in this arrangement.</t>
        <t>Before delegating the computation or publication of a <tt>_validation-persist</tt> record, the account holder <bcp14>MUST</bcp14> verify the account URL by sending an authenticated POST request to the exact account URL used in the digest. Per <xref target="RFC8555"/>, Section 6.3, the payload of the JWS <bcp14>MUST</bcp14> be the empty octet string <tt>""</tt>. The client <bcp14>MUST</bcp14> follow no redirects and <bcp14>MUST</bcp14> verify that the returned account object has a <tt>status</tt> of <tt>valid</tt> (<xref target="RFC8555"/>, Section 7.1.2). A JWS payload of <tt>"{}"</tt> <bcp14>MUST</bcp14> be rejected as non-conforming for this check. A successful proof for an unchanged (account URL, account key) pair <bcp14>MAY</bcp14> satisfy later pre-publication checks. This proof authenticates that the requesting key controls the exact account URL used in the digest; it does not authenticate the account to the domain name being validated, which is established by the domain owner publishing the record in their DNS zone. The domain owner and the delegated party <bcp14>MUST</bcp14> use an authenticated channel to transmit the account URL, key thumbprint, domain name, <tt>accountHashPrefix</tt>, and algorithm identifier outside the ACME channel. Domain owners <bcp14>SHOULD</bcp14> also publish a CAA <tt>accounturi</tt> parameter (<xref target="RFC8657"/>) specifying their account URL as an independent reinforcing authorization.</t>
        <t>Sharing these values with such a party discloses the account URL, which the hashed form otherwise keeps out of public DNS, and enables that party to correlate the account's records across domains (see <xref target="account-uri-privacy"/>); the key binding described in <xref target="hashed-uri-security"/> is unaffected by which party performs the computation.</t>
        <t>Organizations pre-provisioning records <bcp14>SHOULD</bcp14> maintain an inventory of <tt>_validation-persist</tt> records and the ACME accounts they reference. Records <bcp14>MAY</bcp14> include a <tt>persistUntil</tt> parameter to bound their effective lifetime (see <xref target="persist-until-parameter-considerations"/>). Domain owners <bcp14>SHOULD</bcp14> audit <tt>_validation-persist</tt> records after any DNS infrastructure security incident, as pre-provisioned records persist beyond the window of compromise.</t>
        <t>CAs implementing <tt>dns-persist-01</tt> <bcp14>MUST</bcp14> maintain a stable <tt>accountHashPrefix</tt> and stable account URLs for the lifetime of an account once advertised, and <bcp14>MUST</bcp14> document their stability guarantees, since the hashed URI is computed over the account URL and served under the prefix. If a CA must change its <tt>accountHashPrefix</tt> or account-URL structure, it <bcp14>MUST</bcp14> provide a migration period during which hashed URIs under both the old and new forms are accepted for validation.</t>
      </section>
    </section>
    <section anchor="wildcard-certificate-validation">
      <name>Wildcard and Subdomain Certificate Validation</name>
      <t>This validation method supports validation for wildcard certificates (e.g., *.example.com) and specific subdomains through the use of the <tt>policy=wildcard</tt> parameter.</t>
      <section anchor="scope-of-policywildcard">
        <name>Scope of <tt>policy=wildcard</tt></name>
        <t>When a DNS TXT record includes the <tt>policy=wildcard</tt> parameter value, it authorizes certificate issuance for:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>The validated FQDN itself</strong> - The base domain for which the TXT record exists (e.g., <tt>example.com</tt>)</t>
          </li>
          <li>
            <t><strong>Wildcard certificates</strong> - Wildcard certificates for the validated FQDN or any of its subdomains (e.g., <tt>*.example.com</tt>, <tt>*.dept.example.com</tt>)</t>
          </li>
          <li>
            <t><strong>Specific subdomains</strong> - Any specific subdomain of the validated FQDN (e.g., <tt>www.example.com</tt>, <tt>app.example.com</tt>, <tt>server.dept.example.com</tt>)</t>
          </li>
        </ol>
        <t>For example, a TXT record at <tt>_validation-persist.example.com</tt> containing <tt>policy=wildcard</tt> can validate certificates for <tt>example.com</tt>, <tt>*.example.com</tt>, <tt>www.example.com</tt>, and any other subdomain of <tt>example.com</tt>.</t>
        <t>If the <tt>policy</tt> parameter is absent, or if its value is anything other than <tt>wildcard</tt>, the validation applies only to the specific FQDN being validated. CAs <bcp14>MUST NOT</bcp14> consider such validation sufficient for wildcard certificates or subdomains.</t>
      </section>
    </section>
    <section anchor="subdomain-certificate-validation">
      <name>Subdomain Certificate Validation</name>
      <t>When the <tt>policy=wildcard</tt> parameter is present (as described in <xref target="wildcard-certificate-validation"/>), CAs <bcp14>MAY</bcp14> issue certificates for subdomains of the validated FQDN. This section describes the implementation details for subdomain validation.</t>
      <section anchor="determining-permitted-subdomains">
        <name>Determining Permitted Subdomains</name>
        <t>To determine which subdomains are permitted, the FQDN for which the persistent TXT record exists (referred to as the "validated FQDN") <bcp14>MUST</bcp14> be a proper suffix of the FQDN for which a certificate is requested (referred to as the "requested FQDN"). For wildcard certificate requests, the proper suffix check applies to the base domain name after removing the wildcard prefix (<tt>*.</tt>), consistent with <xref target="RFC8555"/>, Section 7.1.3. The base-level wildcard (e.g., <tt>*.example.com</tt> where the validated FQDN is <tt>example.com</tt>) is authorized directly by <xref target="wildcard-certificate-validation"/> and is not subject to this proper suffix requirement.</t>
        <t>For example, if <tt>dept.example.com</tt> is the validated FQDN, a certificate for <tt>server.dept.example.com</tt> is permitted because <tt>dept.example.com</tt> is its suffix. A certificate for <tt>*.server.dept.example.com</tt> is also permitted: after removing the wildcard prefix, <tt>server.dept.example.com</tt> has <tt>dept.example.com</tt> as a proper suffix.</t>
      </section>
      <section anchor="implementation-requirements">
        <name>Implementation Requirements</name>
        <ul spacing="normal">
          <li>
            <t>The persistent DNS TXT record <bcp14>MUST</bcp14> include <tt>policy=wildcard</tt> for subdomain validation to be permitted.</t>
          </li>
          <li>
            <t>CAs <bcp14>MUST</bcp14> verify that the validated FQDN is a proper suffix of the requested FQDN. For wildcard requests, this check applies to the base domain after removing the <tt>*.</tt> prefix. The base-level wildcard is exempt per <xref target="wildcard-certificate-validation"/>.</t>
          </li>
          <li>
            <t>If the <tt>policy</tt> parameter is absent or has any value other than <tt>wildcard</tt>, subdomain validation <bcp14>MUST NOT</bcp14> be permitted.</t>
          </li>
        </ul>
        <t>See <xref target="subdomain-validation-risks"/> for important security implications of enabling subdomain validation.</t>
      </section>
      <section anchor="example-subdomain-validation">
        <name>Example: Subdomain Validation</name>
        <t>For a persistent TXT record provisioned at <tt>_validation-persist.example.com</tt> with <tt>policy=wildcard</tt>:</t>
        <ul spacing="normal">
          <li>
            <t>Permitted: <tt>example.com</tt>, <tt>www.example.com</tt>, <tt>app.example.com</tt>, <tt>server.dept.example.com</tt>, <tt>*.example.com</tt>, <tt>*.dept.example.com</tt></t>
          </li>
          <li>
            <t>Not permitted without additional validation: <tt>otherexample.com</tt>, <tt>example.net</tt></t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The requirement for CAs to ignore unknown parameter tags means that future extensions must be carefully designed to ensure that being ignored does not create security vulnerabilities. Extensions that require strict enforcement should use alternative mechanisms, such as separate record types or explicit version negotiation.</t>
      <section anchor="persistent-record-risks">
        <name>Persistent Record Risks</name>
        <t>The persistence of validation records creates extended windows of vulnerability compared to traditional ACME challenge methods. If an attacker gains control of a DNS zone containing persistent validation records, they can potentially obtain certificates for the validated domains until the validation records are removed or modified.</t>
        <t>Clients <bcp14>SHOULD</bcp14> protect validation records through appropriate DNS security measures, including:</t>
        <ul spacing="normal">
          <li>
            <t>Using DNS providers with strong authentication and access controls</t>
          </li>
          <li>
            <t>Implementing DNS Security Extensions (DNSSEC) where possible</t>
          </li>
          <li>
            <t>Monitoring DNS zones for unauthorized changes</t>
          </li>
          <li>
            <t>Regularly reviewing and rotating validation records</t>
          </li>
        </ul>
      </section>
      <section anchor="account-binding-security">
        <name>Account Binding Security</name>
        <t>The <tt>accounturi</tt> parameter provides strong binding between domain validation and the ACME account identified by the hashed URI. However, this binding depends on the security of the account itself.</t>
        <t>The security of this method is fundamentally bound to the security of the ACME account's private key. Because the <tt>accounturi</tt> is a hashed URI computed in part over the account key (see <xref target="hashed-uri-security"/>), if this key is compromised, an attacker can immediately use any pre-existing <tt>dns-persist-01</tt> authorizations associated with that account to issue certificates, without needing any further access to the domain's DNS infrastructure. This elevates the importance of secure key management for ACME clients far above that required for transient challenge methods, as the window of opportunity for an attacker is tied to the lifetime of the persistent authorization, not a momentary challenge.</t>
        <t>CAs <bcp14>SHOULD</bcp14> implement robust account security measures, including:</t>
        <ul spacing="normal">
          <li>
            <t>Strong authentication requirements for ACME accounts</t>
          </li>
          <li>
            <t>Account activity monitoring and anomaly detection</t>
          </li>
          <li>
            <t>Rapid account revocation capabilities</t>
          </li>
          <li>
            <t>Regular account security reviews</t>
          </li>
          <li>
            <t>Account key rotation policies and procedures</t>
          </li>
        </ul>
        <t>Clients <bcp14>SHOULD</bcp14> protect their ACME account keys with the same level of security as they would protect private keys for high-value certificates.</t>
        <section anchor="account-key-rotation">
          <name>Account Key Rotation</name>
          <t>When an account key rotates following the procedures defined in <xref target="RFC8555"/>, Section 7.3.5, the ACME account URL remains unchanged. The hashed URI in existing records changes because <tt>key</tt> is an input to the hash. Existing records remain valid under the retention rules in <xref target="verification-procedure"/>. Clients <bcp14>SHOULD</bcp14> republish <tt>_validation-persist</tt> records with the hashed URI recomputed under the account's new key promptly after a rotation. Republication ensures records reflect current credentials, which facilitates operational hygiene and auditing.</t>
        </section>
        <section anchor="account-uri-privacy">
          <name>Account URI Privacy</name>
          <t>Because <tt>_validation-persist</tt> TXT records are publicly queryable and long-lived, the <tt>accounturi</tt> value is visible to any party that queries DNS. With a cleartext account identifier, the same value appearing in records for multiple domains would let third parties infer that those domains share the same ACME account and likely share infrastructure; this correlation risk is noted in <xref target="RFC8657"/>, Section 5.9. The hashed URI defined in this document mitigates that risk by binding <tt>domain_name</tt> into the digest, so a given account produces a different <tt>accounturi</tt> value for each domain (see <xref target="hashed-uri-security"/>).</t>
          <t>Domain owners who require stronger privacy can additionally use separate ACME accounts for domains that should not be correlated. The domain-omitted opt-out form (<tt>domain_name</tt> set to <tt>*</tt>, see <xref target="validation-record-format"/>) deliberately forgoes the per-domain mitigation: the same value then appears in every record that uses it, so a bulk observer can link those domains. A domain owner who uses the opt-out to reuse one record across domains accepts that linkage.</t>
        </section>
        <section anchor="hashed-uri-security">
          <name>Hashed Account URIs</name>
          <t>The hashed URI is the sole <tt>accounturi</tt> form (<xref target="validation-record-format"/>). It serves two purposes: it cryptographically binds the requesting account to the domain so that a record cannot be transferred to authorize a different account, preserving the non-transferability property of <xref target="RFC8555"/>; and it reduces the correlation exposure described in <xref target="account-uri-privacy"/>. It does not hide the account from the CA, which necessarily learns the account URL when it recomputes and validates the record.</t>
          <t><strong>Source of the authorization binding.</strong> The account holder commits to the account URL by publishing a digest computed over <tt>account_URL</tt>. Because the hash is collision resistant, this commitment is comparable to publishing the account URL directly, while the digest also incorporates the account key and the domain, as described below.</t>
          <t><strong>Non-transferability and substitution resistance.</strong> A raw account URL is only a URL commitment: its integrity is only as good as the channel that delivered the URL to the domain owner, and if that channel is poisoned the record binds to an account the owner did not intend, so RFC 8555 non-transferability is not preserved. The hashed URI closes this gap by additionally binding the account key. A CA recomputes the digest over the requesting account's own key, so a record validates for an account only if it was computed with a key that account controls. An attacker therefore cannot make an honest CA accept, for the attacker's account, a digest the victim published, because the attacker does not hold the victim's private key; and an attacker who substitutes a different account URL still cannot produce a validating record without the corresponding key. This substitution resistance is the reason this document defines only the hashed URI and does not permit a raw account URL.</t>
          <t><strong>Role of the account key (privacy).</strong> ACME account URLs are frequently low in entropy (e.g., a short, sequential account identifier of only a handful of digits). An adversary who knows a CA's account-URL structure could enumerate all plausible account URLs, hash each against a target domain, and recover the account URL behind a published digest, defeating the privacy goal. The account key's JWK Thumbprint is included as a high-entropy input that raises the cost of this enumeration.</t>
          <t><strong>HTTP-01 key exposure.</strong> The key authorization for the <tt>http-01</tt> challenge (<xref target="RFC8555"/>, Section 8.3) is transmitted over cleartext HTTP and contains the same unpadded base64url SHA-256 JWK Thumbprint used as the <tt>key</tt> input above. An on-path observer of an <tt>http-01</tt> validation for the account therefore learns the thumbprint, leaving only the account URL unknown when evaluating a published hashed URI. The observer must still enumerate candidate account URLs and recompute the digest, so the remaining protection for that observer is limited to the entropy of the account URL.</t>
          <t><strong>Binding to the record's own domain.</strong> The digest binds <tt>domain_name</tt>, which is the FQDN at which the <tt>_validation-persist</tt> record is provisioned, not the FQDN of the certificate ultimately requested. This has two effects. First, the same account produces a different <tt>accounturi</tt> value in every domain's record, so a bulk observer cannot correlate domains by matching identical strings, as it could with a shared cleartext account URL. Second, because each record is bound to its own domain, there is no ambiguity under wildcard or CNAME'd provisioning about which name a given record authorizes, and a record cannot be lifted to a different domain. A domain owner who deliberately wants one record to authorize many names uses the domain-omitted opt-out (<tt>domain_name</tt> set to <tt>*</tt>), accepting the correlation trade-off described in <xref target="account-uri-privacy"/>.</t>
          <t><strong>Digest construction.</strong> The digest is compared for exact equality against a value the CA recomputes over a fixed field structure (<xref target="validation-record-format"/>), so there is no attacker-controlled trailing input, and length-extension of the digest yields nothing an attacker can use. The <tt>length_of_domain</tt> prefix and the fixed 43-octet <tt>key</tt> make every field boundary unambiguous regardless of which octets appear in <tt>domain_name</tt> or <tt>account_URL</tt>, so no field can be shifted into another to construct a colliding preimage. The <tt>key</tt> uses the unpadded base64url thumbprint representation already present as the second component of an ACME key authorization (<xref target="RFC8555"/>, Section 8.1), avoiding an unnecessary decode step.</t>
          <t><strong>Uniqueness of the binding.</strong> What <xref target="RFC8657"/>, Section 5.4 requires of an <tt>accounturi</tt> is reverse-direction uniqueness: a single <tt>accounturi</tt> value must not identify two different accounts. This holds because <tt>account_URL</tt> is one of the hash inputs and the hash is collision resistant, so each hashed URI uniquely identifies one account. The forward direction is intentionally one-to-many — one account yields a different value per domain — which is the privacy property above.</t>
          <t><strong>Acceptance of prior keys.</strong> A CA accepts digests generated with an account's prior keys so that records provisioned before a rotation survive without republication (<xref target="RFC8555"/>, Section 7.3.5), subject to the deactivation and retention rules in <xref target="verification-procedure"/>. This acceptance aligns with <xref target="RFC8555"/>, Section 7.3.5, which establishes that changing an account key should not have collateral impact on existing authorizations. Such a record was committed to the account's URL when it was provisioned, so even if the key in the record is one that was later rotated out, the domain owner's intent to authorize that account is preserved. Retaining historical public key thumbprints creates no capability for an attacker: under <xref target="RFC8555"/>, Section 7.3.5, a rotated-out key cannot authenticate subsequent requests, and registering a fresh account with an old key yields a different account URL that produces a different hashed URI. Furthermore, no CA acceptance policy can automatically distinguish an honest key rotation from a hostile one, so time-bounded acceptance provides no defense against account takeover; the effective controls against account takeover remain account deactivation, DNS record removal, and the <tt>persistUntil</tt> parameter. Account deactivation overrides this acceptance: once an account is deactivated, no digest computed from any of its keys validates, which is the emergency stop for a suspected key compromise.</t>
          <t><strong>Limits of the privacy protection.</strong> This construction is a best-effort obfuscation, not a cryptographically strong privacy mechanism. It resists bulk correlation and casual enumeration of account URLs, but a determined adversary with a-priori knowledge of candidate account URLs and their account keys can recover the true account URL. Domain owners who require stronger unlinkability <bcp14>SHOULD</bcp14> use separate ACME accounts for domains that must not be correlated.</t>
        </section>
      </section>
      <section anchor="subdomain-validation-risks">
        <name>Subdomain Validation Risks</name>
        <t>Enabling subdomain validation via <tt>policy=wildcard</tt> creates significant security implications. Organizations using this feature <bcp14>SHOULD</bcp14> carefully control subdomain delegation and monitor for unauthorized subdomains. This policy value serves as the explicit mechanism for domain owners to opt-in to broader validation scopes.</t>
        <t>The ability to issue certificates for subdomains of validated FQDNs creates significant security risks, particularly in environments with subdomain delegation or where subdomains may be controlled by different entities.</t>
        <t>Potential risks include:</t>
        <ul spacing="normal">
          <li>
            <t>Subdomain takeover attacks where abandoned subdomains are claimed by attackers</t>
          </li>
          <li>
            <t>Unauthorized certificate issuance for subdomains controlled by different organizations</t>
          </li>
          <li>
            <t>Confusion about which entity has authority over specific subdomains</t>
          </li>
        </ul>
        <t>Organizations considering the use of subdomain validation <bcp14>SHOULD</bcp14>:</t>
        <ul spacing="normal">
          <li>
            <t>Maintain strict control over subdomain delegation</t>
          </li>
          <li>
            <t>Implement monitoring for subdomain creation and changes</t>
          </li>
          <li>
            <t>Consider limiting subdomain validation to specific, controlled scenarios</t>
          </li>
          <li>
            <t>Provide clear governance policies for subdomain certificate authority</t>
          </li>
        </ul>
      </section>
      <section anchor="cross-ca-validation-reuse">
        <name>Cross-CA Validation Reuse</name>
        <t>The persistent nature of validation records raises concerns about potential reuse across different Certificate Authorities. While the <tt>issuer-domain-name</tt> parameter is designed to prevent such reuse, implementations <bcp14>MUST</bcp14> validate that the <tt>issuer-domain-name</tt> in the DNS record matches the CA's disclosed Issuer Domain Name.</t>
      </section>
      <section anchor="record-tampering-and-integrity">
        <name>Record Tampering and Integrity</name>
        <t>DNS records are generally not authenticated end-to-end, making them potentially vulnerable to tampering. CAs <bcp14>SHOULD</bcp14> implement additional integrity checks where possible and consider the overall security posture of the DNS infrastructure when relying on persistent validation records.</t>
        <t>Additionally, CAs <bcp14>SHOULD</bcp14> protect their <tt>ACME directory URL</tt> with appropriate security measures. Using DNSSEC to protect the CA's <tt>ACME directory URL</tt> is <bcp14>RECOMMENDED</bcp14>. An attacker who compromises the DNS for a CA's <tt>ACME directory URL</tt> could disrupt validation or potentially impersonate the CA in certain scenarios. While this is a systemic DNS security risk that extends beyond this specification, it is amplified by any mechanism that relies on DNS for identity.</t>
      </section>
      <section anchor="issuer-domain-name-normalization-and-limits">
        <name>Issuer Domain Name Normalization and Limits</name>
        <t>The <tt>issuerDomainNames</tt> field requires domain names to be provided in a normalized form (lowercase A-labels, no trailing dot) to prevent errors and security issues arising from case-sensitivity differences or Unicode homograph attacks. By requiring a canonical representation, servers and clients can perform simple byte-for-byte comparisons, ensuring interoperability and deterministic validation. The order of names in the array has no significance.</t>
        <t>The server-side limit on the number of issuer domain names provided in a single challenge (e.g., 10) helps mitigate denial-of-service vectors where a client might be forced to perform an excessive number of DNS queries or a server might be burdened by validating against a large set of domains.</t>
      </section>
      <section anchor="caa-interaction">
        <name>CAA Interaction</name>
        <t>The <tt>dns-persist-01</tt> validation method is a valid <tt>validationmethods</tt> parameter value for CAA records per <xref target="RFC8657"/>. Under <xref target="RFC8657"/>, Section 3.1, a CAA <tt>accounturi</tt> for an ACME account is the URI of the ACME account object (the account URL); when the parameter is present, the CA matches that URI as part of CAA processing. The <tt>dns-persist-01</tt> <tt>accounturi</tt> is instead the hashed URI defined in <xref target="validation-record-format"/>, which the CA matches by recomputing it while validating the <tt>_validation-persist</tt> record. These parameters occur in different DNS records and need not have the same value. They are independent reinforcing checks: both can restrict issuance, and the CA evaluates them separately.</t>
      </section>
      <section anchor="dns-security-measures">
        <name>DNS Security Measures</name>
        <t>To enhance the security and integrity of the validation process, CAs and clients should consider implementing advanced DNS security measures.</t>
        <section anchor="dnssec">
          <name>DNSSEC</name>
          <t>DNS Security Extensions (DNSSEC) <xref target="RFC4033"/> provide cryptographic authentication of DNS data, ensuring that the validation records retrieved by a CA are authentic and have not been tampered with. CAs <bcp14>SHOULD</bcp14> use a DNSSEC-validating resolver when querying <tt>dns-persist-01</tt> TXT records. Without one, a CA will silently accept forged responses in DNSSEC-signed zones. If a CA performs DNSSEC validation, it <bcp14>MUST</bcp14> treat validation failure (e.g., expired signatures, broken chain of trust) as a challenge failure and <bcp14>MUST NOT</bcp14> use the record for domain validation. This requirement is stricter than the general DNSSEC guidance in <xref target="RFC8555"/> because <tt>dns-persist-01</tt> records are long-lived and their compromise would persist for the record's lifetime.</t>
        </section>
        <section anchor="multi-perspective-validation">
          <name>Multi-Perspective Validation</name>
          <t>Multi-Perspective Issuance Corroboration (MPIC) is a technique to validate domain control from multiple network vantage points. This is a critical defense against localized network attacks, such as BGP hijacking and DNS spoofing, which could otherwise lead to certificate mis-issuance.</t>
          <t>For CAs subject to requirements like the CA/Browser Forum Baseline Requirements, MPIC is essential for robust domain validation. However, for private PKI systems where the network topology is well-known and such localized attacks are not part of the threat model, operators might reasonably judge MPIC unnecessary.</t>
        </section>
      </section>
      <section anchor="validation-data-reuse">
        <name>Validation Data Reuse</name>
        <t>This validation method is explicitly designed for persistence and reuse. The period for which a CA may rely on validation data is its <tt>Validation Data Reuse Period</tt> (as defined in <xref target="conventions-and-definitions"/>), bounded by the CA's own policy, applicable root program requirements, and any <tt>persistUntil</tt> constraint on the record (<xref target="validation-record-format"/>). The DNS TTL of the <tt>_validation-persist</tt> record governs caching at the DNS layer only; it is not a validation data reuse limit, and a CA <bcp14>MUST NOT</bcp14> derive the effective validation data reuse period from the record's observed TTL.</t>
        <t>CAs <bcp14>MAY</bcp14> reuse validation data obtained through this method for the duration of their Validation Data Reuse Period, subject to the <tt>expires</tt> constraint established by any <tt>persistUntil</tt> parameter on the validated record (see <xref target="validation-record-format"/>). For a validation attempt that queries DNS, removing or changing the TXT record takes effect after resolver caches expire, as described in <xref target="revocation-and-invalidation"/>. Record removal or later modification of <tt>persistUntil</tt> in DNS does not retroactively invalidate or shorten previously obtained validation data before its established authorization expiration.</t>
      </section>
      <section anchor="persist-until-parameter-considerations">
        <name>persistUntil Parameter Considerations</name>
        <t>The <tt>persistUntil</tt> parameter provides domain owners with direct control over the validity period of their validation records. CAs and clients should be aware of the following considerations:</t>
        <ul spacing="normal">
          <li>
            <t>Domain owners should set expiration dates for validation records that balance security and operational needs. To avoid unexpected validation failures during certificate renewal, domain owners are advised to:
            </t>
            <ul spacing="normal">
              <li>
                <t>Align <tt>persistUntil</tt> values with certificate lifetimes or planned maintenance intervals</t>
              </li>
              <li>
                <t>Monitor or set reminders for <tt>persistUntil</tt> expirations</t>
              </li>
              <li>
                <t>Document <tt>persistUntil</tt> practices in certificate management procedures</t>
              </li>
              <li>
                <t>Automate updates to validation records with new <tt>persistUntil</tt> values during certificate renewal workflows</t>
              </li>
            </ul>
          </li>
          <li>
            <t>CAs <bcp14>MUST</bcp14> parse and apply the <tt>persistUntil</tt> timestamp as specified in <xref target="validation-record-format"/>.</t>
          </li>
        </ul>
      </section>
      <section anchor="revocation-and-invalidation">
        <name>Revocation and Invalidation of Persistent Authorizations</name>
        <t>The persistent nature of <tt>dns-persist-01</tt> authorizations means that a valid DNS TXT record can grant control for an extended period, potentially even if the domain owner's intent changes or if the associated account key is compromised. Therefore, explicit mechanisms for revoking or invalidating these persistent authorizations are critical.</t>
        <t>There are two primary revocation and invalidation actions:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Remove DNS record:</strong> Removing the corresponding DNS TXT record from the Validation Domain Name is the standard method for an Applicant to invalidate a <tt>dns-persist-01</tt> authorization. After the record is removed and resolver caches have expired, new validation attempts for the domain will fail. This action is available to the domain owner and does not require CA involvement.</t>
          </li>
          <li>
            <t><strong>Deactivate ACME account:</strong> For situations requiring immediate revocation of issuance capability (e.g., suspected account key compromise), the account bound by the record can be deactivated as specified in <xref target="RFC8555"/>, Section 7.3.6. Per the deactivation rule in <xref target="verification-procedure"/>, a CA <bcp14>MUST NOT</bcp14> accept a hashed URI computed from any key of a deactivated account; deactivation therefore takes effect immediately and overrides key retention, including the certificate-backed retention of a key that a currently valid certificate depends on. This makes account deactivation a full emergency measure that invalidates the record's utility without waiting for DNS caches to expire.</t>
          </li>
        </ol>
        <t>The following table summarizes the applicability and timing of these actions:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Action</th>
              <th align="left">Effect</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Remove DNS record</td>
              <td align="left">New validations fail after resolver cache expiry; domain-owner action, no CA involvement</td>
            </tr>
            <tr>
              <td align="left">Deactivate ACME account</td>
              <td align="left">New validations fail immediately; overrides key retention (see <xref target="verification-procedure"/>)</td>
            </tr>
          </tbody>
        </table>
        <t>ACME Clients <bcp14>SHOULD</bcp14> provide clear mechanisms for users to:</t>
        <ul spacing="normal">
          <li>
            <t>Remove the <tt>_validation-persist</tt> DNS TXT record.</t>
          </li>
          <li>
            <t>Monitor the presence and content of their <tt>_validation-persist</tt> records to ensure they accurately reflect desired authorization.</t>
          </li>
        </ul>
        <t>Certificate Authorities (CAs) implementing this method <bcp14>MUST</bcp14>:</t>
        <ul spacing="normal">
          <li>
            <t>During a validation attempt, fail the validation if the corresponding DNS TXT record is no longer present or if its content does not meet the requirements of this specification (e.g., incorrect <tt>issuer-domain-name</tt>, missing <tt>accounturi</tt>, altered <tt>policy</tt>).</t>
          </li>
          <li>
            <t>Respect the <tt>persistUntil</tt> constraint as specified in <xref target="validation-record-format"/>, setting authorization expiration to no later than the specified timestamp and rejecting new validation attempts after the timestamp elapses.</t>
          </li>
          <li>
            <t>Ensure their internal systems are capable of efficiently handling the validation failure when DNS records are removed or become invalid.</t>
          </li>
        </ul>
        <t>While this method provides a persistent signal of control, the fundamental ACME authorization object (as defined in <xref target="RFC8555"/>) remains subject to its own lifecycle, including expiration. A persistent DNS record allows for repeated authorizations, but each authorization object issued by the CA will have a defined validity period, after which it expires unless renewed.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="acme-validation-methods-registry">
        <name>ACME Validation Methods Registry</name>
        <t>IANA is requested to register the following entry in the "ACME Validation Methods" registry:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Label</strong>: dns-persist-01</t>
          </li>
          <li>
            <t><strong>Identifier Type</strong>: dns</t>
          </li>
          <li>
            <t><strong>ACME</strong>: Y</t>
          </li>
          <li>
            <t><strong>Reference</strong>: This document</t>
          </li>
        </ul>
      </section>
      <section anchor="dns-node-names-registry">
        <name>Underscored and Globally Scoped DNS Node Names Registry</name>
        <t>IANA is requested to register the following entry in the "Underscored and Globally Scoped DNS Node Names" registry defined in <xref target="RFC8552"/>:</t>
        <ul spacing="normal">
          <li>
            <t><strong>RR Type</strong>: TXT</t>
          </li>
          <li>
            <t><strong>_NODE NAME</strong>: _validation-persist</t>
          </li>
          <li>
            <t><strong>Reference</strong>: This document</t>
          </li>
        </ul>
      </section>
      <section anchor="acme-directory-metadata-field">
        <name>ACME Directory Metadata Fields</name>
        <t>IANA is requested to register the following entries in the "Fields in the 'meta' Object within a Directory Object" registry defined in <xref target="RFC8555"/>, Section 9.7.6:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Field Name</strong>: accountHashPrefix</t>
          </li>
          <li>
            <t><strong>Field Type</strong>: string</t>
          </li>
          <li>
            <t><strong>Reference</strong>: This document</t>
          </li>
          <li>
            <t><strong>Field Name</strong>: issuerDomainNames</t>
          </li>
          <li>
            <t><strong>Field Type</strong>: array of string</t>
          </li>
          <li>
            <t><strong>Reference</strong>: This document</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="implementation-considerations">
      <name>Implementation Considerations</name>
      <t>When designing future extensions to this specification, new parameters <bcp14>SHOULD</bcp14> be designed to degrade gracefully when ignored by CAs that do not recognize them. Parameters that fundamentally change the security properties of the validation <bcp14>SHOULD NOT</bcp14> be introduced without a version negotiation mechanism.</t>
      <section anchor="dns-record-size-considerations">
        <name>DNS Record Size Considerations</name>
        <t>The RDATA of the TXT record, which contains the <tt>issue-value</tt>, may become large, particularly if the <tt>accounturi</tt> is long. While the total size of a TXT record's RDATA can be up to 65,535 octets, it must be formatted as a sequence of one or more character-strings, where each string is limited to 255 octets in length.</t>
        <t><strong>CA Implementation Guidelines:</strong></t>
        <ul spacing="normal">
          <li>
            <t>CAs <bcp14>SHOULD</bcp14> endeavor to keep the <tt>accounturi</tt> values they generate reasonably concise to minimize the final record size.</t>
          </li>
        </ul>
        <t><strong>Client Implementation Guidelines:</strong></t>
        <ul spacing="normal">
          <li>
            <t>Clients <bcp14>MUST</bcp14> properly handle the creation of TXT records where the RDATA exceeds 255 octets. As specified in <xref target="RFC1035"/>, Section 3.3.14, clients <bcp14>MUST</bcp14> split the RDATA into multiple, concatenated, quote-enclosed strings, each no more than 255 octets. For example:</t>
          </li>
        </ul>
        <figure anchor="ex-long-txt-record">
          <name>Multi-String TXT Record Format</name>
          <sourcecode type="dns"><![CDATA[
_validation-persist.example.com. IN TXT ("first-255-bytes..."
" ...remaining-bytes")
]]></sourcecode>
        </figure>
        <t>Failure to correctly format long RDATA values may result in validation failures.</t>
      </section>
      <section anchor="normalization-algorithm">
        <name>Domain Name Normalization Algorithm</name>
        <t>This section provides an algorithm for domain name normalization to promote interoperability. Both clients and servers <bcp14>SHOULD</bcp14> follow a consistent normalization process to ensure that domain names are handled uniformly.</t>
        <t>The recommended normalization process consists of the following four steps, applied in order:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Case-folding</strong>: Apply Unicode-aware, locale-independent case-folding to the entire domain name string to convert it to lowercase.</t>
          </li>
          <li>
            <t><strong>Unicode Normalization</strong>: Normalize the string to Unicode Normalization Form C (NFC).</t>
          </li>
          <li>
            <t><strong>Punycode Conversion</strong>: Convert each label of the domain name to its A-label (Punycode) representation as specified in <xref target="RFC5890"/>.</t>
          </li>
          <li>
            <t><strong>Trailing Dot Removal</strong>: Remove any trailing dot from the final string.</t>
          </li>
        </ol>
        <t>For example, a domain name like <tt>EXAMPLE.com.</tt> is normalized as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>After case-folding: <tt>example.com.</tt></t>
          </li>
          <li>
            <t>After NFC normalization: <tt>example.com.</tt></t>
          </li>
          <li>
            <t>After Punycode conversion: <tt>example.com.</tt></t>
          </li>
          <li>
            <t>After removing trailing dot: <tt>example.com</tt></t>
          </li>
        </ol>
        <t>An internationalized domain name like <tt>üÑICODE-example.com.</tt> is normalized as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>After case-folding: <tt>ünicode-example.com.</tt></t>
          </li>
          <li>
            <t>After NFC normalization: <tt>ünicode-example.com.</tt></t>
          </li>
          <li>
            <t>After Punycode conversion: <tt>xn--nicode-example-9jb.com.</tt></t>
          </li>
          <li>
            <t>After removing trailing dot: <tt>xn--nicode-example-9jb.com</tt></t>
          </li>
        </ol>
      </section>
      <section anchor="ca-implementation-guidelines">
        <name>CA Implementation Guidelines</name>
        <t>Certificate Authorities implementing this validation method should consider:</t>
        <ul spacing="normal">
          <li>
            <t>Establishing clear policies for Issuer Domain Name disclosure in Certificate Policies and Certification Practice Statements</t>
          </li>
          <li>
            <t>Creating account security monitoring and incident response procedures</t>
          </li>
          <li>
            <t>Providing clear documentation for clients on proper record construction</t>
          </li>
        </ul>
        <section anchor="error-handling">
          <name>Error Handling</name>
          <t>When implementing the "dns-persist-01" validation method, Certificate Authorities <bcp14>SHOULD</bcp14> return appropriate ACME error codes to provide clear feedback on validation failures. Specifically:</t>
          <ul spacing="normal">
            <li>
              <t>CAs <bcp14>SHOULD</bcp14> return a <tt>malformed</tt> error (as defined in <xref target="RFC8555"/>) when the TXT record has invalid syntax, such as duplicate parameters, invalid timestamp format in the <tt>persistUntil</tt> parameter, missing mandatory <tt>accounturi</tt> parameter, an <tt>accounturi</tt> that is not a well-formed hashed URI (for example, one not placed under the CA's <tt>accountHashPrefix</tt>, one using an algorithm identifier the CA does not accept, or one whose hash value is not valid base64url of the expected length), or other syntactic violations of the record format specified in this document.</t>
            </li>
            <li>
              <t>CAs <bcp14>SHOULD</bcp14> return an <tt>unauthorized</tt> error (as defined in <xref target="RFC8555"/>) when validation fails due to authorization issues, including:  </t>
              <ul spacing="normal">
                <li>
                  <t>The <tt>accounturi</tt> hashed URI in the DNS TXT record does not, when recomputed by the CA over the requesting account's retained keys (see <xref target="verification-procedure"/>), match any value the CA accepts for that account</t>
                </li>
                <li>
                  <t>The <tt>persistUntil</tt> timestamp has expired, indicating that the validation record is no longer considered valid for new validation attempts</t>
                </li>
                <li>
                  <t>The <tt>issuer-domain-name</tt> in the DNS TXT record does not match any of the values provided in the <tt>issuerDomainNames</tt> array of the challenge object</t>
                </li>
              </ul>
            </li>
          </ul>
          <t>Note that these error codes apply to validation attempts on specific challenges. In the case of Just-in-Time Validation (see <xref target="just-in-time-validation"/>), when a CA finds a pre-existing DNS TXT record that does not meet validation requirements, the CA proceeds with the standard authorization flow by issuing a new <tt>pending</tt> challenge rather than returning an error.</t>
          <t>These error codes help ACME clients distinguish between different types of validation failures and take appropriate corrective actions.</t>
          <t>To mitigate potential denial-of-service risks from accounts with extensive key rollover history, CAs <bcp14>MUST</bcp14> rate-limit failed validation attempts per domain and account.</t>
        </section>
      </section>
      <section anchor="client-implementation-guidelines">
        <name>Client Implementation Guidelines</name>
        <t>ACME clients implementing this validation method should consider:</t>
        <ul spacing="normal">
          <li>
            <t>Implementing secure DNS record management practices</t>
          </li>
          <li>
            <t>Providing clear user interfaces for managing persistent validation records</t>
          </li>
          <li>
            <t>Implementing validation record monitoring and alerting</t>
          </li>
          <li>
            <t>Designing appropriate error handling for validation failures</t>
          </li>
          <li>
            <t>Considering the security implications of persistent records in their threat models</t>
          </li>
        </ul>
        <t>Clients that delegate record publication to third parties (such as DNS providers) <bcp14>MUST</bcp14> perform the pre-publication account check specified in <xref target="pre-provisioning-records"/> before transmitting inputs.</t>
        <t>Clients that manage or provision <tt>_validation-persist</tt> records <bcp14>SHOULD</bcp14> inspect their own local provisioning state (rather than relying on a DNS lookup) before initiating a new order, and <bcp14>SHOULD</bcp14> warn the operator if a record's <tt>persistUntil</tt> value has already expired or is likely to expire before validation completes. A client that skips this check risks initiating a validation attempt that the CA will reject with an <tt>unauthorized</tt> error (see <xref target="ca-implementation-guidelines"/>) instead of reporting an actionable, locally diagnosed cause.</t>
      </section>
      <section anchor="dns-provider-considerations">
        <name>DNS Provider Considerations</name>
        <t>DNS providers supporting this validation method should consider:</t>
        <ul spacing="normal">
          <li>
            <t>Implementing appropriate access controls for validation record management</t>
          </li>
          <li>
            <t>Providing audit logging for validation record changes</t>
          </li>
          <li>
            <t>Considering dedicated interfaces or APIs for ACME validation record management</t>
          </li>
          <li>
            <t>Supporting workflows in which the provider computes and publishes <tt>_validation-persist</tt> records on a domain owner's behalf from the shareable values listed in <xref target="pre-provisioning-records"/>, none of which include private key material</t>
          </li>
          <li>
            <t>Never requesting or storing ACME account private keys, which no record-management operation described in this document requires</t>
          </li>
          <li>
            <t>Providing inventory and audit views of <tt>_validation-persist</tt> records to support the inventory practices described in <xref target="pre-provisioning-records"/></t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <section anchor="basic-validation-example">
        <name>Basic Validation Example (FQDN Only)</name>
        <t>For validation of "example.com" by a CA using "authority.example" as its Issuer Domain Name, where the validation should only apply to "example.com":</t>
        <ol spacing="normal" type="1"><li>
            <t>CA provides challenge object with a list of valid Issuer Domain Names:  </t>
            <sourcecode type="json"><![CDATA[
{
  "type": "dns-persist-01",
  "url": "https://ca.example/acme/authz/1234/0",
  "status": "pending",
  "issuerDomainNames": ["authority.example", "ca.example.net"]
}
]]></sourcecode>
          </li>
          <li>
            <t>Client chooses one of the provided Issuer Domain Names (e.g., "authority.example"), computes its hashed URI as shown in <xref target="hashed-uri-example"/>, and provisions a DNS TXT record (note the absence of a <tt>policy</tt> parameter for scope):  </t>
            <sourcecode type="dns"><![CDATA[
_validation-persist.example.com. IN TXT ("authority.example;"
" accounturi=https://ca.example/account-hash/"
"sha-256/5SQm7n6tPh2-PlLbCKGnViTXX5z19SCN4cPGQHSk-kw")
]]></sourcecode>
          </li>
          <li>
            <t>CA validates the record through DNS queries. This validation is sufficient only for "example.com".</t>
          </li>
        </ol>
      </section>
      <section anchor="hashed-uri-example">
        <name>Hashed-URI Example</name>
        <t>This example validates "example.com" using a hashed URI (<xref target="validation-record-format"/>) and serves as a test vector. The hash inputs are:</t>
        <ul spacing="normal">
          <li>
            <t><tt>length_of_domain</tt>: <tt>0x0b</tt> (the domain <tt>example.com</tt> is 11 octets)</t>
          </li>
          <li>
            <t><tt>domain_name</tt>: <tt>example.com</tt></t>
          </li>
          <li>
            <t><tt>key</tt>: the 43 ASCII octets of <tt>NzbLsXh8uDCcd-6MNwXF4W_7noWXFZAfHkxZsRGC9Xs</tt>, the unpadded base64url encoding of the account's current SHA-256 JWK Thumbprint <xref target="RFC7638"/> (the example thumbprint from <xref target="RFC7638"/>, Section 3.1)</t>
          </li>
          <li>
            <t><tt>account_URL</tt>: <tt>https://ca.example/acct/123</tt></t>
          </li>
        </ul>
        <t>Computing <tt>SHA-256(length_of_domain || domain_name || key || account_URL)</tt> and applying unpadded base64url encoding to the 32-octet digest yields:</t>
        <artwork><![CDATA[
5SQm7n6tPh2-PlLbCKGnViTXX5z19SCN4cPGQHSk-kw
]]></artwork>
        <t>With a CA <tt>accountHashPrefix</tt> of <tt>https://ca.example/account-hash/</tt> and the <tt>sha-256</tt> algorithm identifier, the hashed URI is <tt>https://ca.example/account-hash/sha-256/5SQm7n6tPh2-PlLbCKGnViTXX5z19SCN4cPGQHSk-kw</tt>. Using issuer domain name "authority.example", the client provisions:</t>
        <figure anchor="ex-hashed-uri">
          <name>Hashed-URI Validation Record</name>
          <sourcecode type="dns"><![CDATA[
_validation-persist.example.com. IN TXT ("authority.example;"
" accounturi=https://ca.example/account-hash/"
"sha-256/5SQm7n6tPh2-PlLbCKGnViTXX5z19SCN4cPGQHSk-kw")
]]></sourcecode>
        </figure>
        <t>To instead opt out of the domain-correlation mitigation (<xref target="validation-record-format"/>), the client sets <tt>domain_name</tt> to the single octet <tt>*</tt> (so <tt>length_of_domain</tt> is <tt>0x01</tt>), keeping the same <tt>key</tt> and <tt>account_URL</tt>. Computing <tt>SHA-256(0x01 || "*" || key || account_URL)</tt> yields:</t>
        <artwork><![CDATA[
NpDnSwUthQK8zCgFdefYxAdAVPnygMLbs9US6oO-5ug
]]></artwork>
        <t>The resulting hashed URI, <tt>https://ca.example/account-hash/sha-256/NpDnSwUthQK8zCgFdefYxAdAVPnygMLbs9US6oO-5ug</tt>, does not depend on the domain and <bcp14>MAY</bcp14> be reused across domains.</t>
      </section>
      <section anchor="pre-provisioned-validation-example">
        <name>Pre-Provisioned Validation Example</name>
        <t>This example illustrates the pre-provisioning flow described in <xref target="pre-provisioning-records"/>: the <tt>_validation-persist</tt> record for "example.com" is computed and published before any order exists, by a party other than the ACME client.</t>
        <ol spacing="normal" type="1"><li>
            <t>Prerequisite: the domain owner's ACME client has an account with the CA; the account URL <tt>https://ca.example/acct/123</tt> was returned in the <tt>Location</tt> header of the newAccount response. No order, authorization, or challenge object exists yet.</t>
          </li>
          <li>
            <t>The CA's directory <tt>meta</tt> object advertises the values needed to pre-provision a record:  </t>
            <figure anchor="ex-preprovisioned-directory-meta">
              <name>Directory Metadata for Pre-Provisioning</name>
              <sourcecode type="json"><![CDATA[
{
  "meta": {
    "accountHashPrefix": "https://ca.example/account-hash/",
    "issuerDomainNames": ["authority.example", "ca.example.net"]
  }
}
]]></sourcecode>
            </figure>
            <t>
Per <xref target="directory-issuer-domain-names"/>, a name taken from this array is guaranteed to satisfy the <tt>issuer-domain-name</tt> requirement of any <tt>dns-persist-01</tt> challenge this CA issues later.</t>
          </li>
          <li>
            <t>The account holder supplies the account URL <tt>https://ca.example/acct/123</tt> and the account key's public JWK Thumbprint (encoded as <tt>NzbLsXh8uDCcd-6MNwXF4W_7noWXFZAfHkxZsRGC9Xs</tt>, as in <xref target="hashed-uri-example"/>) to the DNS operator managing the zone, a party distinct from the ACME client. No private key material is shared. Using the same inputs and result as <xref target="hashed-uri-example"/>, that party computes the hashed URI and publishes the TXT record:  </t>
            <figure anchor="ex-preprovisioned">
              <name>Pre-Provisioned Validation Record</name>
              <sourcecode type="dns"><![CDATA[
_validation-persist.example.com. IN TXT ("authority.example;"
" accounturi=https://ca.example/account-hash/"
"sha-256/5SQm7n6tPh2-PlLbCKGnViTXX5z19SCN4cPGQHSk-kw")
]]></sourcecode>
            </figure>
          </li>
          <li>
            <t>At any later time, the client submits a newOrder request. If the CA returns a pending <tt>dns-persist-01</tt> challenge, the client responds to it and the CA validates the already-present record through DNS queries; no DNS change is needed at order time. A CA implementing Just-in-Time validation (<xref target="just-in-time-validation"/>) may instead evaluate the record when the authorization is created and return it already valid, subject to the restrictions in that section; because the account in this example has not previously completed a <tt>dns-persist-01</tt> validation, a CA following that section's account restriction would take the pending-challenge path for this first order.</t>
          </li>
        </ol>
      </section>
      <section anchor="wildcard-validation-example">
        <name>Wildcard Validation Example</name>
        <t>For validation of "*.example.com" (which also validates "example.com" and specific subdomains like "www.example.com") by a CA using "authority.example" as its Issuer Domain Name:</t>
        <ol spacing="normal" type="1"><li>
            <t>The CA provides a challenge object similar to the basic example, containing an <tt>issuerDomainNames</tt> array.</t>
          </li>
          <li>
            <t>Client chooses one of the provided Issuer Domain Names (e.g., "authority.example") and provisions a DNS TXT record at the base domain's Validation Domain Name, including <tt>policy=wildcard</tt>:  </t>
            <figure anchor="ex-wildcard-validation">
              <name>Wildcard Policy Validation Record</name>
              <sourcecode type="dns"><![CDATA[
_validation-persist.example.com. IN TXT ("authority.example;"
" accounturi=https://ca.example/account-hash/"
"sha-256/5SQm7n6tPh2-PlLbCKGnViTXX5z19SCN4cPGQHSk-kw;"
" policy=wildcard")
]]></sourcecode>
            </figure>
          </li>
          <li>
            <t>CA validates the record through DNS queries. This validation authorizes certificates for "example.com", "*.example.com", and specific subdomains like "www.example.com".</t>
          </li>
        </ol>
      </section>
      <section anchor="validation-example-with-persistuntil">
        <name>Validation Example with persistUntil</name>
        <t>For validation of "example.com" with an explicit expiration date:</t>
        <ol spacing="normal" type="1"><li>
            <t>The CA provides a challenge object similar to the basic example, containing an <tt>issuerDomainNames</tt> array.</t>
          </li>
          <li>
            <t>Client chooses one of the provided Issuer Domain Names (e.g., "authority.example") and provisions a DNS TXT record including <tt>persistUntil</tt>:  </t>
            <figure anchor="ex-persist-until">
              <name>Validation Record with Expiration Time</name>
              <sourcecode type="dns"><![CDATA[
_validation-persist.example.com. IN TXT ("authority.example;"
" accounturi=https://ca.example/account-hash/"
"sha-256/5SQm7n6tPh2-PlLbCKGnViTXX5z19SCN4cPGQHSk-kw;"
" persistUntil=1721952000")
]]></sourcecode>
            </figure>
          </li>
          <li>
            <t>CA validates the record. This validation is sufficient only for "example.com" and will not be considered valid after the specified timestamp (2024-07-26T00:00:00Z).</t>
          </li>
        </ol>
      </section>
      <section anchor="wildcard-validation-example-with-persistuntil">
        <name>Wildcard Validation Example with persistUntil</name>
        <t>For validation of "*.example.com" with an explicit expiration date:</t>
        <ol spacing="normal" type="1"><li>
            <t>The CA provides a challenge object similar to the basic example, containing an <tt>issuerDomainNames</tt> array.</t>
          </li>
          <li>
            <t>Client chooses one of the provided Issuer Domain Names (e.g., "authority.example") and provisions a DNS TXT record including <tt>policy=wildcard</tt> and <tt>persistUntil</tt>:  </t>
            <figure anchor="ex-wildcard-persist-until">
              <name>Wildcard Validation Record with Expiration Time</name>
              <sourcecode type="dns"><![CDATA[
_validation-persist.example.com. IN TXT ("authority.example;"
" accounturi=https://ca.example/account-hash/"
"sha-256/5SQm7n6tPh2-PlLbCKGnViTXX5z19SCN4cPGQHSk-kw;"
" policy=wildcard;"
" persistUntil=1721952000")
]]></sourcecode>
            </figure>
          </li>
          <li>
            <t>CA validates the record. This validation authorizes certificates for "example.com", "*.example.com", and specific subdomains, but will not be considered valid after the specified timestamp (2024-07-26T00:00:00Z).</t>
          </li>
        </ol>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="FIPS180-4" target="https://doi.org/10.6028/NIST.FIPS.180-4">
          <front>
            <title>Secure Hash Standard (SHS)</title>
            <author>
              <organization>National Institute of Standards and Technology (NIST)</organization>
            </author>
            <date year="2015" month="August"/>
          </front>
          <seriesInfo name="FIPS PUB" value="180-4"/>
        </reference>
        <reference anchor="RFC8555" target="https://www.rfc-editor.org/info/rfc8555" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8555.xml">
          <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="RFC8659" target="https://www.rfc-editor.org/info/rfc8659" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8659.xml">
          <front>
            <title>DNS Certification Authority Authorization (CAA) Resource Record</title>
            <author fullname="P. Hallam-Baker" initials="P." surname="Hallam-Baker"/>
            <author fullname="R. Stradling" initials="R." surname="Stradling"/>
            <author fullname="J. Hoffman-Andrews" initials="J." surname="Hoffman-Andrews"/>
            <date month="November" year="2019"/>
            <abstract>
              <t>The Certification Authority Authorization (CAA) DNS Resource Record allows a DNS domain name holder to specify one or more Certification Authorities (CAs) authorized to issue certificates for that domain name. CAA Resource Records allow a public CA to implement additional controls to reduce the risk of unintended certificate mis-issue. This document defines the syntax of the CAA record and rules for processing CAA records by CAs.</t>
              <t>This document obsoletes RFC 6844.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8659"/>
          <seriesInfo name="DOI" value="10.17487/RFC8659"/>
        </reference>
        <reference anchor="RFC8657" target="https://www.rfc-editor.org/info/rfc8657" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8657.xml">
          <front>
            <title>Certification Authority Authorization (CAA) Record Extensions for Account URI and Automatic Certificate Management Environment (ACME) Method Binding</title>
            <author fullname="H. Landau" initials="H." surname="Landau"/>
            <date month="November" year="2019"/>
            <abstract>
              <t>The Certification Authority Authorization (CAA) DNS record allows a domain to communicate an issuance policy to Certification Authorities (CAs) but only allows a domain to define a policy with CA-level granularity. However, the CAA specification (RFC 8659) also provides facilities for an extension to admit a more granular, CA-specific policy. This specification defines two such parameters: one allowing specific accounts of a CA to be identified by URIs and one allowing specific methods of domain control validation as defined by the Automatic Certificate Management Environment (ACME) protocol to be required.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8657"/>
          <seriesInfo name="DOI" value="10.17487/RFC8657"/>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <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" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <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="RFC5890" target="https://www.rfc-editor.org/info/rfc5890" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5890.xml">
          <front>
            <title>Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework</title>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>This document is one of a collection that, together, describe the protocol and usage context for a revision of Internationalized Domain Names for Applications (IDNA), superseding the earlier version. It describes the document collection and provides definitions and other material that are common to the set. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5890"/>
          <seriesInfo name="DOI" value="10.17487/RFC5890"/>
        </reference>
        <reference anchor="RFC6920" target="https://www.rfc-editor.org/info/rfc6920" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6920.xml">
          <front>
            <title>Naming Things with Hashes</title>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="D. Kutscher" initials="D." surname="Kutscher"/>
            <author fullname="C. Dannewitz" initials="C." surname="Dannewitz"/>
            <author fullname="B. Ohlman" initials="B." surname="Ohlman"/>
            <author fullname="A. Keranen" initials="A." surname="Keranen"/>
            <author fullname="P. Hallam-Baker" initials="P." surname="Hallam-Baker"/>
            <date month="April" year="2013"/>
            <abstract>
              <t>This document defines a set of ways to identify a thing (a digital object in this case) using the output from a hash function. It specifies a new URI scheme for this purpose, a way to map these to HTTP URLs, and binary and human-speakable formats for these names. The various formats are designed to support, but not require, a strong link to the referenced object, such that the referenced object may be authenticated to the same degree as the reference to it. The reason for this work is to standardise current uses of hash outputs in URLs and to support new information-centric applications and other uses of hash outputs in protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6920"/>
          <seriesInfo name="DOI" value="10.17487/RFC6920"/>
        </reference>
        <reference anchor="RFC4648" target="https://www.rfc-editor.org/info/rfc4648" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4648.xml">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="October" year="2006"/>
            <abstract>
              <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </reference>
        <reference anchor="RFC1035" target="https://www.rfc-editor.org/info/rfc1035" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.1035.xml">
          <front>
            <title>Domain names - implementation and specification</title>
            <author fullname="P. Mockapetris" initials="P." surname="Mockapetris"/>
            <date month="November" year="1987"/>
            <abstract>
              <t>This RFC is the revised specification of the protocol and format used in the implementation of the Domain Name System. It obsoletes RFC-883. This memo documents the details of the domain name client - server communication.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="13"/>
          <seriesInfo name="RFC" value="1035"/>
          <seriesInfo name="DOI" value="10.17487/RFC1035"/>
        </reference>
        <reference anchor="RFC7638" target="https://www.rfc-editor.org/info/rfc7638" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7638.xml">
          <front>
            <title>JSON Web Key (JWK) Thumbprint</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>This specification defines a method for computing a hash value over a JSON Web Key (JWK). It defines which fields in a JWK are used in the hash computation, the method of creating a canonical form for those fields, and how to convert the resulting Unicode string into a byte sequence to be hashed. The resulting hash value can be used for identifying or selecting the key represented by the JWK that is the subject of the thumbprint.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7638"/>
          <seriesInfo name="DOI" value="10.17487/RFC7638"/>
        </reference>
        <reference anchor="RFC3986" target="https://www.rfc-editor.org/info/rfc3986" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3986.xml">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="RFC8552" target="https://www.rfc-editor.org/info/rfc8552" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8552.xml">
          <front>
            <title>Scoped Interpretation of DNS Resource Records through "Underscored" Naming of Attribute Leaves</title>
            <author fullname="D. Crocker" initials="D." surname="Crocker"/>
            <date month="March" year="2019"/>
            <abstract>
              <t>Formally, any DNS Resource Record (RR) may occur under any domain name. However, some services use an operational convention for defining specific interpretations of an RRset by locating the records in a DNS branch under the parent domain to which the RRset actually applies. The top of this subordinate branch is defined by a naming convention that uses a reserved node name, which begins with the underscore character (e.g., "_name"). The underscored naming construct defines a semantic scope for DNS record types that are associated with the parent domain above the underscored branch. This specification explores the nature of this DNS usage and defines the "Underscored and Globally Scoped DNS Node Names" registry with IANA. The purpose of this registry is to avoid collisions resulting from the use of the same underscored name for different services.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="222"/>
          <seriesInfo name="RFC" value="8552"/>
          <seriesInfo name="DOI" value="10.17487/RFC8552"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="birgelee-sc082-security">
          <front>
            <title>Security of SC-082 Redux</title>
            <author initials="H." surname="Birge-Lee" fullname="Henry Birge-Lee">
              <organization>Princeton University</organization>
            </author>
            <date year="2025"/>
          </front>
        </reference>
        <reference anchor="cabf-br" target="https://cabforum.org/baseline-requirements-documents/">
          <front>
            <title>Baseline Requirements for the Issuance and Management of Publicly-Trusted TLS Server Certificates</title>
            <author>
              <organization/>
            </author>
            <date year="2025"/>
          </front>
        </reference>
        <reference anchor="RFC4033" target="https://www.rfc-editor.org/info/rfc4033" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4033.xml">
          <front>
            <title>DNS Security Introduction and Requirements</title>
            <author fullname="R. Arends" initials="R." surname="Arends"/>
            <author fullname="R. Austein" initials="R." surname="Austein"/>
            <author fullname="M. Larson" initials="M." surname="Larson"/>
            <author fullname="D. Massey" initials="D." surname="Massey"/>
            <author fullname="S. Rose" initials="S." surname="Rose"/>
            <date month="March" year="2005"/>
            <abstract>
              <t>The Domain Name System Security Extensions (DNSSEC) add data origin authentication and data integrity to the Domain Name System. This document introduces these extensions and describes their capabilities and limitations. This document also discusses the services that the DNS security extensions do and do not provide. Last, this document describes the interrelationships between the documents that collectively describe DNSSEC. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4033"/>
          <seriesInfo name="DOI" value="10.17487/RFC4033"/>
        </reference>
      </references>
    </references>
    <?line 860?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors acknowledge prior community work that directly informed this specification:</t>
      <ul spacing="normal">
        <li>
          <t>The CA/Browser Forum ballot proposals to enable persistent / static DNS Domain Control Validation signals in the Baseline Requirements <xref target="cabf-br"/>, in particular Ballot SC-082 ("Clarify CA Assisted DNS Validation under 3.2.2.4.7", authored by Michael Slaughter) and the active proposal SC-088 ("DNS TXT Record with Persistent Value DCV Method", also authored by Michael Slaughter). These efforts provided the policy framing and initial industry discussion motivating standardization of a reusable ACME DNS validation record.</t>
        </li>
        <li>
          <t>The formal and empirical security analysis of static / persistent DCV methods performed by Henry Birge-Lee ("Proof of static DCV security" presentation, the "Security of SC-082 Redux" paper <xref target="birgelee-sc082-security"/>, and related research), which helped clarify the threat model and informed the security considerations in this document.</t>
        </li>
        <li>
          <t>The Delegated DNS Domain Validation (DDDV) Threat Modeling Tiger Team discussions and document ("Validation SC - Delegated DNS Domain Validation (DDDV) Threat Model"), whose participants contributed to broad threat enumeration; notable contributors include Michael Slaughter (Amazon Trust Services), Corey Bonnell (DigiCert), Clint Wilson (Apple), and Martijn Katerbarg (Sectigo).</t>
        </li>
      </ul>
      <t>The authors also thank members of the ACME Working Group and CA/Browser Forum who provided early review, critique, and operational perspectives on persistent validation records.</t>
      <t>Any errors or omissions are the responsibility of the authors.</t>
    </section>
    <section numbered="false" anchor="changelog">
      <name>Change Log</name>
      <t>RFC Editor: please remove this section before publication.</t>
      <section numbered="false" anchor="since-draft-ietf-acme-dns-persist-01">
        <name>Since draft-ietf-acme-dns-persist-01</name>
        <ul spacing="normal">
          <li>
            <t>The <tt>accounturi</tt> is now a hashed URI that cryptographically binds the ACME account to the domain being validated. In -01 the <tt>accounturi</tt> was the ACME account URL, or another URI that uniquely and permanently identified a single account (<xref target="RFC8657"/>, Section 5.4), with no cryptographic binding; that form is no longer accepted.</t>
          </li>
          <li>
            <t>Defined the hashed URI as <tt>&lt;accountHashPrefix&gt;&lt;hash-alg&gt;/&lt;base64url hash value&gt;</tt>, advertised via the new <tt>accountHashPrefix</tt> directory metadata field and carrying an in-URI hash-algorithm identifier for algorithm agility (the registered <tt>sha-256</tt> Hash Name String is mandatory).</t>
          </li>
          <li>
            <t>Specified the digest as <tt>H(length_of_domain || domain_name || key || account_URL)</tt>, with a leading length octet delimiting the domain name.</t>
          </li>
          <li>
            <t>Added a mandatory domain-omitted opt-out (<tt>domain_name</tt> set to <tt>*</tt>) for correlation opt-out and cross-domain record reuse.</t>
          </li>
          <li>
            <t>Specified CA key retention as a data-retention obligation with ranked precedence (deactivation overrides certificate-backed retention overrides general retention); account deactivation is an immediate override.</t>
          </li>
          <li>
            <t>Retired the temporal key rotation window mechanisms (keyRotationPeriod directory metadata and keyRolloverWindow); prior-key acceptance is governed by CA retention.</t>
          </li>
          <li>
            <t>Specified uniform witnessed-thumbprint retention as a <bcp14>MUST</bcp14> bounded only by account lifetime, with pruning permitted upon account deactivation.</t>
          </li>
          <li>
            <t>Replaced the -01 reuse-unaffected text with a requirement that CAs clamp authorization <tt>expires</tt> to <tt>persistUntil</tt>.</t>
          </li>
          <li>
            <t>Upgraded <tt>accountHashPrefix</tt> and account-URL stability to a <bcp14>MUST</bcp14> with mandatory dual acceptance during migration periods.</t>
          </li>
          <li>
            <t>Added a pre-publication account-resource proof (authenticated POST-as-GET with empty payload <tt>""</tt> verifying <tt>status=valid</tt>) before delegating record publication.</t>
          </li>
          <li>
            <t>Mitigated recomputation denial-of-service by evaluating current keys first, evaluating historical keys in reverse chronological order, and rate-limiting failed validations.</t>
          </li>
          <li>
            <t>Renamed the challenge object's plural field from <tt>issuer-domain-names</tt> to <tt>issuerDomainNames</tt> to align with ACME's camelCase convention (<xref target="RFC8555"/>); the singular DNS <tt>issuer-domain-name</tt> parameter and <tt>persistUntil</tt> are unchanged (#56).</t>
          </li>
          <li>
            <t>Clarified that <tt>key</tt> in the digest is the 43-octet unpadded base64url encoding of the SHA-256 JWK Thumbprint <xref target="RFC7638"/>, not the 32 raw digest octets, matching the encoding already used in ACME key authorizations (<xref target="RFC8555"/>, Section 8.1).</t>
          </li>
          <li>
            <t>Required <tt>sha-256</tt> support in both clients and CAs for interoperability, moved <tt>&lt;hash-alg&gt;</tt> to the Hash Name String registry defined by <xref target="RFC6920"/>, excluded truncated digests shorter than 256 bits, and removed the document-local slash-to-hyphen substitution rule.</t>
          </li>
          <li>
            <t>Clarified the relationship between the CAA <tt>accounturi</tt> and the <tt>dns-persist-01</tt> <tt>accounturi</tt> in the Introduction and <xref target="caa-interaction"/>, citing <xref target="RFC8657"/>, Section 3.1.</t>
          </li>
          <li>
            <t>Added a privacy caveat noting that a cleartext <tt>http-01</tt> key authorization exposes the same account-key thumbprint used in the hashed URI, leaving account-URL entropy as the remaining protection.</t>
          </li>
          <li>
            <t>Added client-side guidance (<xref target="client-implementation-guidelines"/>) to check <tt>persistUntil</tt> against local provisioning state before initiating an order (#38).</t>
          </li>
          <li>
            <t>Removed DNS TTL as a validation data reuse limit; reuse remains subject to <tt>persistUntil</tt> and the CA's Validation Data Reuse Period. Renamed <xref target="validation-data-reuse"/> accordingly and removed the related TTL-specific implementation guidance (#42).</t>
          </li>
          <li>
            <t>Corrected the stale Account Key Rotation text: the account URL is stable, but the hashed <tt>accounturi</tt> changes with the account key, and continued acceptance of a prior key is governed by <xref target="verification-procedure"/>.</t>
          </li>
          <li>
            <t>Added the required directory <tt>issuerDomainNames</tt> metadata field and the D ⊆ C consistency rule with the challenge object's <tt>issuerDomainNames</tt>; the C ⊆ I rule against <tt>caaIdentities</tt> applies when the CA advertises <tt>caaIdentities</tt> (#60).</t>
          </li>
          <li>
            <t>Added a pre-provisioned validation example and clarified that computing and publishing a <tt>_validation-persist</tt> record requires no private-key operation and can be performed out of band by a party other than the ACME client, at any point after account creation.</t>
          </li>
        </ul>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
