<?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.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-sheurich-acme-dns-persist-00" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.30.0 -->
  <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-sheurich-acme-dns-persist-00"/>
    <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>Princeton University</organization>
      <address>
        <email>birgelee@princeton.edu</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="2025" month="August" day="08"/>
    <area>Security</area>
    <workgroup>Automated Certificate Management Environment</workgroup>
    <keyword>acme</keyword>
    <keyword>dns</keyword>
    <keyword>validation</keyword>
    <keyword>persistent</keyword>
    <abstract>
      <?line 64?>

<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 IoT deployments, multi-tenant platforms, and scenarios requiring batch certificate operations. 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-sheurich-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/sheurich/draft-sheurich-acme-dns-persist"/>.</t>
    </note>
  </front>
  <middle>
    <?line 68?>

<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>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>
        <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>Scenarios requiring wildcard certificates where domain control is proven once and reused over an extended period.</t>
        </li>
        <li>
          <t>Environments with strict change management processes where DNS modifications require approval workflows.</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.</t>
      <t>The record format is based on the "issue-value" syntax from <xref target="RFC8659"/>, incorporating an issuer-domain-name and a mandatory accounturi parameter <xref target="RFC8657"/> that uniquely identifies the applicant's account. This design provides strong binding between the domain, the CA, and the specific account 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>Consideration of DNS TTL values when determining the effective validity period of an authorization, balancing persistence with responsiveness to DNS changes (see <xref target="validation-data-reuse-and-ttl-handling"/>).</t>
          </li>
          <li>
            <t>Explicit binding of the domain validation to a specific 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>Authorization 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>
        </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>Note: The <tt>issuer-domain-names</tt> provided in the challenge object <bcp14>SHOULD</bcp14> be drawn from the machine-readable <tt>caaIdentities</tt> array in the ACME server's directory object, as specified in <xref target="RFC8555"/>, Section 9.7.6. This creates a clearer programmatic link between the server's advertised identities and the 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 in UTC (the number of seconds since 1970-01-01T00:00:00Z ignoring leap seconds).</t>
        </dd>
      </dl>
    </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 specific ACME 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 Authorization 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>issuer-domain-names</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>issuer-domain-names</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",
  "issuer-domain-names": ["authority.example", "ca.example.net"]
}
]]></sourcecode>
        </figure>
      </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 for the Authorization Domain Name being validated. The Authorization 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 Authorization Domain Name would be "_validation-persist.example.com".</t>
      <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 as defined in <xref target="RFC8659"/>, Section 4.</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>issuer-domain-names</tt> array of the challenge object.</t>
        </li>
        <li>
          <t>The issue-value <bcp14>MUST</bcp14> contain an accounturi parameter. The value of this parameter <bcp14>MUST</bcp14> be a unique URI identifying the account of the applicant which requested the validation, constructed according to <xref target="RFC8657"/>, Section 3.</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 <tt>key=value</tt> syntax. The policy parameter key and its defined values <bcp14>MUST</bcp14> be treated as case-insensitive. CAs <bcp14>MUST</bcp14> ignore any unknown parameter keys. 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 policy 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). CAs <bcp14>MUST NOT</bcp14> consider this validation record valid for new validation attempts after the specified timestamp. However, this does not affect the reuse of already-validated data.</t>
        </li>
      </ol>
      <t>For example, if the ACME client is requesting validation for the FQDN "example.com" from a CA that uses "authority.example" as its Issuer Domain Name, and the client's account URI is "https://ca.example/acct/123", it might provision:</t>
      <sourcecode type="dns"><![CDATA[
_validation-persist.example.com. IN TXT ("authority.example;"
" accounturi=https://ca.example/acct/123")
]]></sourcecode>
      <t>The ACME server verifies the challenge by performing a DNS lookup for TXT records at the Authorization 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>issuer-domain-names</tt> array from the challenge object, and it must contain a valid <tt>accounturi</tt> for the requesting account. 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.</t>
      <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 Authorization Domain Name.</t>
            </li>
            <li>
              <t><strong>Filter Records</strong>: Iterate through the returned records to find one 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>: If a matching record is found, the CA proceeds to validate it according to the requirements in this specification, including verifying the <tt>accounturi</tt> and <tt>persistUntil</tt> parameters.</t>
            </li>
            <li>
              <t><strong>Handle No Match</strong>: If no record with a matching <tt>issuer-domain-name</tt> is found, 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>
          <sourcecode type="dns"><![CDATA[
_validation-persist.example.org. 3600 IN TXT ("ca1.example;"
" accounturi=https://ca1.example/acme/acct/12345;"
" policy=wildcard")
_validation-persist.example.org. 3600 IN TXT ("ca2.example;"
" accounturi=https://ca2.example/acme/acct/67890;"
" persistUntil=1767225600")
]]></sourcecode>
          <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 Authorization 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>This mechanism enables efficient reuse of persistent validation records while maintaining the security properties of the validation method.</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> - Certificates covering immediate subdomains (e.g., <tt>*.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 and <bcp14>MUST NOT</bcp14> be considered 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") must appear as the exact suffix of the FQDN for which a certificate is requested (referred to as the "requested FQDN").</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.</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.</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>:
- 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>
- Not permitted without additional validation: <tt>otherexample.com</tt>, <tt>example.net</tt></t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <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 specific ACME accounts. However, this binding depends on the security of the ACME account itself.</t>
        <t>The security of this method is fundamentally bound to the security of the ACME account's private key. 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>The <tt>accounturi</tt> parameter is a stable identifier for the ACME account that persists across key rotations. When a client rotates their account key following the procedures defined in <xref target="RFC8555"/>, Section 7.3.5, the <tt>accounturi</tt> remains unchanged. Therefore, existing DNS TXT records containing the <tt>accounturi</tt> parameter do not require modification when performing account key rotations.</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>MUST</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>MUST</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 issuer-domain-name parameter is designed to prevent such reuse, implementations <bcp14>MUST</bcp14> carefully validate that the issuer-domain-name 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>MUST</bcp14> protect their <tt>issuer-domain-name</tt> with robust security measures. Using DNSSEC is a recommended mechanism for this purpose. An attacker who compromises the DNS for a CA's <tt>issuer-domain-name</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>issuer-domain-names</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="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) provide cryptographic authentication of DNS data. This is a critical security measure that ensures the validation records retrieved by a CA are authentic and have not been tampered with.</t>
          <t>For CAs operating within the public WebPKI, the use of DNSSEC is a vital best practice for ensuring the integrity of domain validation. For private or closed PKI environments, DNSSEC is strongly recommended but may not be required, depending on the trust model and risk profile of the specific deployment.</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, MPIC may be considered optional.</t>
        </section>
      </section>
      <section anchor="validation-data-reuse-and-ttl-handling">
        <name>Validation Data Reuse and TTL Handling</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"/>). However, if the DNS TXT record's Time-to-Live (TTL) is shorter than this period, the CA <bcp14>MUST</bcp14> treat the record's TTL as the effective validation data reuse period for that specific validation.</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 TTL constraints described in this section. The <tt>persistUntil</tt> parameter indicates when the DNS validation record should no longer be considered valid for new validation attempts. If a <tt>persistUntil</tt> parameter is present in the DNS TXT record, the CA <bcp14>MUST NOT</bcp14> successfully complete a validation attempt after the date and time specified in that parameter. This restriction does not preclude reuse of data that has already been validated.</t>
      </section>
      <section anchor="persistuntil-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> properly parse and interpret the integer timestamp value as a UNIX timestamp (the number of seconds since 1970-01-01T00:00:00Z ignoring leap seconds) and apply the expiration correctly.</t>
          </li>
          <li>
            <t>CAs <bcp14>MUST</bcp14> reject or consider expired any validation record where the current time exceeds the <tt>persistUntil</tt> timestamp.</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 ACME account key is compromised. Therefore, explicit mechanisms for revoking or invalidating these persistent authorizations are critical.</t>
        <t>The primary method for an Applicant to invalidate a <tt>dns-persist-01</tt> authorization for a domain is to <strong>remove the corresponding DNS TXT record</strong> from the Authorization Domain Name. After the record is removed, new validation attempts for the domain will fail. This behavior represents a deliberate design trade-off: any existing authorization obtained via this method will remain valid until it expires as per the CA's Validation Data Reuse Period. This persistence underscores the importance of protecting the ACME account key.</t>
        <t>For situations requiring immediate revocation of issuance capability, such as a suspected account key compromise, the primary and most effective mechanism is to <strong>deactivate the ACME account</strong> as specified in <xref target="RFC8555"/>, Section 7.5.2. Deactivating the account immediately and irrevocably prevents it from being used for any further certificate issuance.</t>
        <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>Reject new validation attempts when the current time exceeds the timestamp specified in a <tt>persistUntil</tt> parameter, even if the DNS TXT record remains present and would otherwise satisfy all other validation requirements.</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>
    <section anchor="implementation-considerations">
      <name>Implementation Considerations</name>
      <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>
- CAs <bcp14>SHOULD</bcp14> endeavor to keep the <tt>accounturi</tt> values they generate reasonably concise to minimize the final record size.</t>
        <t><strong>Client Implementation Guidelines:</strong>
- 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, clients <bcp14>MUST</bcp14> split the RDATA into multiple, concatenated, quote-enclosed strings, each no more than 255 octets. For example:</t>
        <t>~~~ dns
  _validation-persist.example.com. IN TXT ("first-part-of-long-string..."
  " ...second-part-of-long-string")
  ~~~</t>
        <t>Failure to correctly format long RDATA values may result in validation failures.</t>
        <section anchor="domain-name-normalization-algorithm">
          <name>Domain Name Normalization Algorithm</name>
          <t>This section provides a non-normative 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:
1. After case-folding: <tt>example.com.</tt>
2. After NFC normalization: <tt>example.com.</tt>
3. After Punycode conversion: <tt>example.com.</tt>
4. After removing trailing dot: <tt>example.com</tt></t>
          <t>An internationalized domain name like <tt>üÑICODE-example.com.</tt> is normalized as follows:
1. After case-folding: <tt>ünicode-example.com.</tt>
2. After NFC normalization: <tt>ünicode-example.com.</tt>
3. After Punycode conversion: <tt>xn--nicode-example-9jb.com.</tt>
4. After removing trailing dot: <tt>xn--nicode-example-9jb.com</tt></t>
        </section>
      </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>Developing procedures for handling validation record TTL variations</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, 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> parameter in the DNS TXT record does not match the URI of the ACME account making the request</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>issuer-domain-names</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>
        </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>
      </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>Supporting reasonable TTL values for validation records</t>
          </li>
          <li>
            <t>Considering dedicated interfaces or APIs for ACME validation record management</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",
  "issuer-domain-names": ["authority.example", "ca.example.net"]
}
]]></sourcecode>
          </li>
          <li>
            <t>Client chooses one of the provided Issuer Domain Names (e.g., "authority.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/acct/123")
]]></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="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>issuer-domain-names</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 Authorization Domain Name, including <tt>policy=wildcard</tt>:  </t>
            <sourcecode type="dns"><![CDATA[
_validation-persist.example.com. IN TXT ("authority.example;"
" accounturi=https://ca.example/acct/123;"
" policy=wildcard")
]]></sourcecode>
          </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>issuer-domain-names</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>
            <sourcecode type="dns"><![CDATA[
_validation-persist.example.com. IN TXT ("authority.example;"
" accounturi=https://ca.example/acct/123;"
" persistUntil=1721952000")
]]></sourcecode>
          </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>issuer-domain-names</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>
            <sourcecode type="dns"><![CDATA[
_validation-persist.example.com. IN TXT ("authority.example;"
" accounturi=https://ca.example/acct/123;"
" policy=wildcard;"
" persistUntil=1721952000")
]]></sourcecode>
          </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="RFC8555">
          <front>
            <title>Automatic Certificate Management Environment (ACME)</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="J. Hoffman-Andrews" initials="J." surname="Hoffman-Andrews"/>
            <author fullname="D. McCarney" initials="D." surname="McCarney"/>
            <author fullname="J. Kasten" initials="J." surname="Kasten"/>
            <date month="March" year="2019"/>
            <abstract>
              <t>Public Key Infrastructure using X.509 (PKIX) certificates are used for a number of purposes, the most significant of which is the authentication of domain names. Thus, certification authorities (CAs) in the Web PKI are trusted to verify that an applicant for a certificate legitimately represents the domain name(s) in the certificate. As of this writing, this verification is done through a collection of ad hoc mechanisms. This document describes a protocol that a CA and an applicant can use to automate the process of verification and certificate issuance. The protocol also provides facilities for other certificate management functions, such as certificate revocation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8555"/>
          <seriesInfo name="DOI" value="10.17487/RFC8555"/>
        </reference>
        <reference anchor="RFC8659">
          <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">
          <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">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC5890">
          <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="RFC1035">
          <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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="draft-sheth-identifiers-dns" target="https://datatracker.ietf.org/doc/draft-sheth-identifiers-dns/">
          <front>
            <title>Best Practices for Persistent References in DNS</title>
            <author initials="S." surname="Sheth" fullname="Swapneel Sheth">
              <organization>Verisign Labs</organization>
            </author>
            <author initials="A." surname="Kaizer" fullname="Andrew Kaizer">
              <organization>Verisign Labs</organization>
            </author>
            <date year="2025" month="April" day="22"/>
          </front>
        </reference>
        <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>
      </references>
    </references>
    <?line 613?>

<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, 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", GitHub PR #608, 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>
  </back>
  <!-- ##markdown-source:
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
FqgAAA==

-->

</rfc>
