<?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-01" category="std" consensus="true" submissionType="IETF" version="3">
  <!-- xml2rfc v2v3 conversion 3.30.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-sheurich-acme-dns-persist-01"/>
    <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="September" day="04"/>
    <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>
        <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>MAY</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>
      <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 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>
        <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 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 defined in <xref target="RFC8659"/>, Section 4. 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>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 'tag=value' syntax from <xref target="RFC8659"/>. The parameter's 'tag' and its defined values <bcp14>MUST</bcp14> be treated as case-insensitive.  </t>
          <t>
Note: This requirement ensures forward compatibility, allowing future extensions without breaking existing implementations, consistent with ACME's extensibility model (RFC 8555, Section 7.3). The explicit requirement is necessary to ensure consistent behavior across implementations; without it, some CAs might reject unknown parameters, 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 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>
      <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/acct/123")
]]></sourcecode>
      </figure>
      <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>
          <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/acme/acct/12345;"
" policy=wildcard")
_validation-persist.example.org. 3600 IN TXT ("ca2.example;"
" accounturi=https://ca2.example/acme/acct/67890;"
" 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 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>
        <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>
        <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>
        <t/>
      </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 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 to protect the CA's <tt>issuer-domain-name</tt> 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, ensuring that the validation records retrieved by a CA are authentic and have not been tampered with. To ensure the integrity of the validation process, DNSSEC signatures <bcp14>SHOULD</bcp14> be validated on <tt>dns-persist-01</tt> TXT records.</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>
        <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>
        <t/>
      </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>
- 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>
        <artwork><![CDATA[
~~~ dns
_validation-persist.example.com. IN TXT ("first-part-of-long-string..."
" ...second-part-of-long-string")
~~~
{: #ex-long-txt-record title="Multi-String TXT Record Format"}
]]></artwork>
        <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>
        <t/>
      </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>
            <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/acct/123;"
" 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>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>
            <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/acct/123;"
" 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>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>
            <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/acct/123;"
" 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="RFC8555" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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>
        <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>
      </references>
    </references>
    <?line 642?>

<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>
  </back>
  <!-- ##markdown-source:
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
rgAA

-->

</rfc>
