<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.4 (Ruby 3.0.2) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="full3978trust200902" docName="draft-ietf-acme-dns-account-challenge-01" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="ACME-DNS-CHALLENGE">Automated Certificate Management Environment (ACME) DNS Labeled With ACME Account ID Challenge</title>

    <author fullname="Antonios A. Chariton">
      <organization>Independent Contributor</organization>
      <address>
        <email>daknob@daknob.net</email>
      </address>
    </author>
    <author fullname="Amir A. Omidi">
      <organization>Spirl</organization>
      <address>
        <email>amir@aaomidi.com</email>
      </address>
    </author>
    <author fullname="James Kasten">
      <organization>Google</organization>
      <address>
        <email>jdkasten@google.com</email>
      </address>
    </author>
    <author fullname="Fotis Loukos">
      <organization>Google</organization>
      <address>
        <email>fotisl@google.com</email>
      </address>
    </author>
    <author fullname="Stanislaw A. Janikowski">
      <organization>Google</organization>
      <address>
        <email>stanwise@google.com</email>
      </address>
    </author>

    <date year="2024" month="January" day="10"/>

    <area>Security</area>
    <workgroup>Automated Certificate Management Environment</workgroup>
    <keyword>acme</keyword>

    <abstract>


<?line 52?>

<t>This document outlines a new challenge for the ACME protocol, enabling an ACME
client to answer a domain control validation challenge from an ACME server
using a DNS resource linked to the ACME Account ID. This allows multiple
systems or environments to handle challenge-solving for a single domain.</t>



    </abstract>

    <note title="About This Document" removeInRFC="true">
      <t>
        The latest revision of this draft can be found at <eref target="https://aaomidi.github.io/draft-ietf-acme-dns-account-challenge"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-acme-dns-account-challenge/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        WG Working Group mailing list (<eref target="mailto:acme@ietf.org"/>),
        which is archived at <eref target="https://datatracker.ietf.org/wg/acme/about/"/>.
        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/aaomidi/draft-ietf-acme-dns-account-challenge"/>.</t>
    </note>


  </front>

  <middle>


<?line 59?>

<section anchor="introduction"><name>Introduction</name>

<t>The <spanx style="verb">dns-01</spanx> challenge specified in section 8.4 of <xref target="RFC8555"/> requires that
ACME clients validate the domain under the <spanx style="verb">_acme-challenge</spanx> label for the
<spanx style="verb">TXT</spanx> record. This unique label creates an impediment limiting the number of
other entities domain validation can be delegated to.</t>

<t>In multi-region deployments, where separate availability zones serve the same
content, and dependencies across them are avoided, operators need a way to
obtain a separate certificate per zone, for the same domain name. Similarly, in
cases of zero-downtime migration, two different setups of the infrastructure
may coexist for a long period of time, and both need access to valid
certificates.</t>

<t>Due to the uniqueness of the <spanx style="verb">_acme-challenge</spanx> label, operators today have to
pick a single ACME challenge solver for their domain name, and then add a
<spanx style="verb">CNAME</spanx> record to this infrastructure. A domain name can only have one <spanx style="verb">CNAME</spanx>
in DNS.</t>

<t>This document specifies a new challenge type, <spanx style="verb">dns-account-01</spanx>. This challenge
leverages the ACME Account Resource URL to present an account-unique stable
challenge to an ACME server. This challenge allows any domain name to delegate
its domain validation to more than one service through ACME account-unique DNS
records.</t>

<t>As now multiple labels can be used to prove domain control, and they depend on
the ACME account, any number of them can be generated in advance, and then all
required <spanx style="verb">CNAME</spanx> records can be created statically. The dynamic part of the
label depends on the ACME account and not the account key, to allow for
seamless account key rollover without the label changing. This ensures very
long-lived labels, without any security considerations.</t>

<t>This RFC does not intend to deprecate the <spanx style="verb">dns-01</spanx> challenge specified in
<xref target="RFC8555"/>. Since this new challenge does not modify or build on any
pre-existing challenges, the ability to complete the <spanx style="verb">dns-account-01</spanx> challenge
requires ACME server operators to deploy new changes to their codebase. This
makes adopting and using this challenge an opt-in process.</t>

</section>
<section anchor="conventions-and-definitions"><name>Conventions and Definitions</name>

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

<?line -18?>

</section>
<section anchor="dns-account-01-challenge"><name>DNS-ACCOUNT-01 Challenge</name>

<t>When the identifier being validated is a domain name, the client can prove control of that domain by provisioning a <spanx style="verb">TXT</spanx> resource record containing a designated value for a specific validation domain name.</t>

<t><list style="symbols">
  <t>type (required, string): The string "dns-account-01".</t>
  <t>token (required, string): A random value that uniquely identifies the challenge. This value <bcp14>MUST</bcp14> have at least 128 bits of entropy. It <bcp14>MUST NOT</bcp14> contain any characters outside the base64url alphabet, including padding characters ("="). See <xref target="RFC4086"/> for additional information on additional requirements for secure randomness.</t>
</list></t>

<figure><artwork><![CDATA[
{
    "type": "dns-account-01",
    "url": "https://example.com/acme/chall/i00MGYwLWIx",
    "status": "pending",
    "token": "ODE4OWY4NTktYjhmYS00YmY1LTk5MDgtZTFjYTZmNjZlYTUx"
}
]]></artwork></figure>

<t>A client can fulfill this challenge by performing the following steps:</t>

<t><list style="symbols">
  <t>Construct a key authorization <xref section="8.1" sectionFormat="comma" target="RFC8555"/> from the <spanx style="verb">token</spanx> value provided in the challenge and the client's account key</t>
  <t>Compute the SHA-256 digest <xref target="FIPS180-4"/> of the key authorization</t>
  <t>Construct the validation domain name by prepending the following label to the domain name being validated:  <vspace blankLines='1'/>
    <figure><artwork><![CDATA[
"_acme-challenge_" || base32(SHA-256(Account Resource URL)[0:9])
]]></artwork></figure>
  <list style="symbols">
      <t>SHA-256 is the SHA hashing operation defined in <xref target="RFC6234"/></t>
      <t><spanx style="verb">[0:9]</spanx> is the operation that selects the first ten bytes (bytes 0 through 9 inclusive) from the previous SHA256 operation</t>
      <t>base32 is the operation defined in <xref target="RFC4648"/></t>
      <t>Account Resource URL is defined in <xref section="7.3" sectionFormat="comma" target="RFC8555"/> as the value in the Location header field</t>
      <t>The <spanx style="verb">"||"</spanx> operator indicates concatenation of strings</t>
    </list></t>
  <t>Provision a DNS <spanx style="verb">TXT</spanx> record with the base64url digest value under the constructed domain validation name</t>
</list></t>

<t>For example, if the domain name being validated is "www.example.org", and the account URL of "https://example.com/acme/acct/ExampleAccount" then the client would provision the following DNS record:</t>

<figure><artwork><![CDATA[
_acme-challenge_ujmmovf2vn55tgye.www.example.org 300 IN TXT "LoqXcYV8...jxAjEuX0.9jg46WB3...fm21mqTI"
]]></artwork></figure>

<t>(In the above, "..." indicates that the token and the JWK thumbprint in the key authorization have been truncated to fit on the page.)</t>

<t>Respond to the ACME server with an empty object ({}) to acknowledge that the challenge can be validated by the server</t>

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

{
  "protected": base64url({
    "alg": "ES256",
    "kid": "https://example.com/acme/acct/evOfKhNU60wg",
    "nonce": "SS2sSl1PtspvFZ08kNtzKd",
    "url": "https://example.com/acme/chall/Rg5dV14Gh1Q"
  }),
  "payload": base64url({}),
  "signature": "Q1bURgJoEslbD1c5...3pYdSMLio57mQNN4"
}
]]></artwork></figure>

<t>On receiving a response, the server constructs and stores the key authorization from the challenge <spanx style="verb">token</spanx> value and the current client account key.</t>

<t>To validate the <spanx style="verb">dns-account-01</spanx> challenge, the server performs the following steps:</t>

<t><list style="symbols">
  <t>Compute the SHA-256 digest <xref target="FIPS180-4"/> of the stored key authorization</t>
  <t>Compute the validation domain name with the account URL of the ACME account requesting validation</t>
  <t>Query for <spanx style="verb">TXT</spanx> records for the validation domain name</t>
  <t>Verify that the contents of one of the <spanx style="verb">TXT</spanx> records match the digest value</t>
</list></t>

<t>If all the above verifications succeed, then the validation is successful. If no DNS record is found, or DNS record and response payload do not pass these checks, then the server <bcp14>MUST</bcp14> fail the validation and mark the challenge as invalid.</t>

<t>The client <bcp14>SHOULD</bcp14> de-provision the resource record(s) provisioned for this challenge once the challenge is complete, i.e., once the "status" field of the challenge has the value "valid" or "invalid".</t>

<section anchor="errors"><name>Errors</name>

<t>The server <bcp14>SHOULD</bcp14> follow the guidelines set in <xref section="6.7" sectionFormat="comma" target="RFC8555"/> for error conditions that occur during challenge validation.</t>

<t>If the server is unable to find a <spanx style="verb">TXT</spanx> record for the validation domain name, it <bcp14>SHOULD</bcp14> include the account URL it used to construct the validation domain name in the problem document. Clients <bcp14>MUST NOT</bcp14> use or rely on the presence of this field to construct the validation domain name.</t>

</section>
<section anchor="implementation-considerations"><name>Implementation Considerations</name>

<t>As this challenge creates strong dependency on the <spanx style="verb">kid</spanx> account identifier, the server <bcp14>SHOULD</bcp14> ensure that the account identifier is not changed during the lifetime of the account.</t>

<t>If this change occurs, the existing long-term <spanx style="verb">CNAME</spanx> records created by all account holders will no longer be valid. The clients will not be able to issue certificates automatically moving forward.</t>

</section>
</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>As this challenge that is introduced only differs in the left-most label of the domain name from the existing <spanx style="verb">dns-01</spanx> challenge, the same security considerations apply.</t>

<t>In terms of the construction of the label prepended to the domain name, there is no need for a cryptographic hash. The purpose of that is to create a long-lived and statistically distinctive record of minimal size.</t>

<t>SHA-256 was picked due to its broad adoption, hardware support, and existing need in implementations that would likely support <spanx style="verb">dns-account-01</spanx>.</t>

<t>The first 10 bytes were picked as a tradeoff: the value needs to be short enough to not significantly impact DNS record and response size, long enough to provide sufficient probability of collision avoidance across ACME accounts, and just the right size to have Base32 require no padding. As the algorithm is used for uniform distribution of inputs, and not for integrity, we do not consider the trimming a security issue.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<section anchor="dns-parameters"><name>DNS Parameters</name>

<t>The Underscored and Globally Scoped DNS Node Names is to be updated to include the following entry:</t>

<figure><artwork><![CDATA[
RR Type: TXT
_NODE NAME: _acme-challenge_*
Reference: This document
]]></artwork></figure>

<t>Where <spanx style="verb">_acme-challenge_*</spanx> denotes all node names beginning with the string <spanx style="verb">_acme-challenge_</spanx>. It does NOT refer to a DNS wildcard specification.</t>

</section>
<section anchor="acme-validation-method"><name>ACME Validation Method</name>

<t>The "ACME Validation Methods" registry is to be updated to include the following entry:</t>

<figure><artwork><![CDATA[
label: dns-account-01
identifier-type: dns
ACME: Y
Reference: This document
]]></artwork></figure>

</section>
</section>


  </middle>

  <back>


    <references title='Normative References' anchor="sec-normative-references">

<reference anchor="FIPS180-4" target="https://csrc.nist.gov/publications/detail/fips/180/4/final">
  <front>
    <title>Secure Hash Standard (SHS)</title>
    <author >
      <organization>National Institute of Standards and Technology</organization>
    </author>
    <date year="2015" month="August"/>
  </front>
</reference>


<reference anchor="RFC8555">
  <front>
    <title>Automatic Certificate Management Environment (ACME)</title>
    <author fullname="R. Barnes" initials="R." surname="Barnes"/>
    <author fullname="J. Hoffman-Andrews" initials="J." surname="Hoffman-Andrews"/>
    <author fullname="D. McCarney" initials="D." surname="McCarney"/>
    <author fullname="J. Kasten" initials="J." surname="Kasten"/>
    <date month="March" year="2019"/>
    <abstract>
      <t>Public Key Infrastructure using X.509 (PKIX) certificates are used for a number of purposes, the most significant of which is the authentication of domain names. Thus, certification authorities (CAs) in the Web PKI are trusted to verify that an applicant for a certificate legitimately represents the domain name(s) in the certificate. As of this writing, this verification is done through a collection of ad hoc mechanisms. This document describes a protocol that a CA and an applicant can use to automate the process of verification and certificate issuance. The protocol also provides facilities for other certificate management functions, such as certificate revocation.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8555"/>
  <seriesInfo name="DOI" value="10.17487/RFC8555"/>
</reference>

<reference anchor="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="RFC4086">
  <front>
    <title>Randomness Requirements for Security</title>
    <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
    <author fullname="J. Schiller" initials="J." surname="Schiller"/>
    <author fullname="S. Crocker" initials="S." surname="Crocker"/>
    <date month="June" year="2005"/>
    <abstract>
      <t>Security systems are built on strong cryptographic algorithms that foil pattern analysis attempts. However, the security of these systems is dependent on generating secret quantities for passwords, cryptographic keys, and similar quantities. The use of pseudo-random processes to generate secret quantities can result in pseudo-security. A sophisticated attacker may find it easier to reproduce the environment that produced the secret quantities and to search the resulting small set of possibilities than to locate the quantities in the whole of the potential number space.</t>
      <t>Choosing random quantities to foil a resourceful and motivated adversary is surprisingly difficult. This document points out many pitfalls in using poor entropy sources or traditional pseudo-random number generation techniques for generating such quantities. It recommends the use of truly random hardware techniques and shows that the existing hardware on many systems can be used for this purpose. It provides suggestions to ameliorate the problem when a hardware solution is not available, and it gives examples of how large such quantities need to be for some applications. 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="106"/>
  <seriesInfo name="RFC" value="4086"/>
  <seriesInfo name="DOI" value="10.17487/RFC4086"/>
</reference>

<reference anchor="RFC6234">
  <front>
    <title>US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)</title>
    <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
    <author fullname="T. Hansen" initials="T." surname="Hansen"/>
    <date month="May" year="2011"/>
    <abstract>
      <t>Federal Information Processing Standard, FIPS</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6234"/>
  <seriesInfo name="DOI" value="10.17487/RFC6234"/>
</reference>

<reference anchor="RFC4648">
  <front>
    <title>The Base16, Base32, and Base64 Data Encodings</title>
    <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
    <date month="October" year="2006"/>
    <abstract>
      <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="4648"/>
  <seriesInfo name="DOI" value="10.17487/RFC4648"/>
</reference>




    </references>



<?line 241?>

<section numbered="false" anchor="acknowledgments"><name>Acknowledgments</name>

</section>


  </back>

<!-- ##markdown-source:
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
c5Iupq26OKgdjLSKI32ewTCw3Du1T51NWra8aITQha6QyNZBcsNzbIuKVDKw
1LrpGNV9muqHyf5DdnhYTpeyuyG3eNLribORgHJF61z/+lN0++NRt9u9fz+8
P61+6nWf308Pnr777gmeTdL9fvrrzVnLkuHOWeYSaAR4ZIAY0WrYlj2A3tvY
6bXz/bsf8B81Vw5Llx5B2xTIAXEsSRlFxSjh+mGiSl8e5aiGu3BlwDjX2Xpr
zuXkDBNQtUxzZPh6fA8oi52Pn3a5aormqC4TGU/lStgVcboqbmV1MBg3YmyT
kHXw+hLxuBmOrqaH8Y/9g5ez/pvglaa+f8PqwbFtH3Vu+K4CaalvxO7dayP/
fm+onUfBsUWNTkmYRbiqIb7j4maYTCmKnV6DEHxsm6v4D6MlY00+XE5+mI3e
Pu0t6qCYwQU5Cl9f75vrpP+6NPnDi597R/NR+eGH+K9F48bxqTn9abfNhwmX
iQ43juLe2UwOWQKt/qY/fns1/V6fmmR80o8Ogagn+W18fXGu9OGz9M1odFCH
4suMgC/Vg80JCwaBcemnM3/t+7Y2MiAfl4lt461m3BUC1kNsHUirghtozj8b
4ZRKX73eM/18EbkmqEsYzB+kC38tTPNR489E69VSn4nVNbtuUNlWU4IyPmnL
6tVS2ONNJYslp4BN1jZ1M/PxfTHxR1lQAb9yR+sxnAhTD8m3C9dWRTIaWXmb
MSAIziZc8NUcRW0N25DkctlUUSQpl68ptyGWcu+NQZqH3HsiMt1gW3o/gQqo
wVs0nxNKPBaFAz7OyN2JPLQdYkMgk9HcNLZ2QOAEfxKqZFMeWjcNi/lmdkeN
Sh7WteW+Q6UrKWPZWY8cG3XVjtldhRbgxdpnLZ3VtufS3JTeu04JwmVXdtur
UT77tjmAt9dq7mwtf2ix6C3SYcudo0Vtja/EaVHowrUwnG7cmax78CLTCjmv
vTYysvxc3vK0+8xVMZIWJUzZksXFKB3BpUVcFWvdoYbyuwylhpX4IoM6qTYi
ZXGjbmUU/DHOobTaQrYik1vehhG+vxl9SXrt4iiMCbHSurvSFcfuKqcuHbEs
6bug+tRHUm4YR869CNpsvC/c2xrsjABBW9r3x2tNQW7lbgDL3/5gfbpbqG9T
aqnuENPuaqWsWhBrzOnUaBuXK97YnkVGIye07bjY25tboWoi+bLEodVN9ma3
UrMvEFJc27DuJ3KbFAV0ut0Hdg1gJA7EQ16mmU5iqrcXVDyCVWgBbqxY/dom
sb+Bc4NKeu0Rp4yp1q6LDJE8/czCtpkFMj53lbgIi5j7hP63GV9gGFYi34DY
W0bpOmr27sh4qCVyUnZS5DiufNPbeXMdU2tlbTd826vbrc90lDlRWtq7PNJz
fWlUg9MVD6u2tqs0V/e1mw2qQlo82Jsr2z+KimVe6mkR5jMVcSFoTZFXRa6N
rFtXinu51rjuZsy1yW2SAamNt0TM547oAtxzA5ZJVabSMBFGfSDv8QF9AW6k
ey1Gp7U0EDAuKITY/jBd481g0gU1TU2V57pwl5G1hvlAim9UG/7oqM4WE4ma
k/O7+dtXT5Z1bcHa77l6dUE6c9KF1PMrC9R6ejIZNPicNjeum2tmtLjMuLgt
bQSkbI8xm5XUHUvzEMzyuehJ2mnbi8fVKq7RAeEnWIdjHXGeb+JDuRHig6sb
6Q6WLm787WwzdzFWb/eVsYxRqOms5D3t9TwM9p0trl1bi9DiumZdMbRRDJk4
UqtylnJIMA5KFc6IbI6Nz7+ycfhUGRIvty9pY8K1cCmnBPo2NOwTBY9/Wz4V
Kk1tkls7CDMA+/XZcDTc8umvuKkrXocF8E69PWvRt1QUm4gzQ5LhZQLFEUqv
I9TmMc8ZaSh3xL/IUd6SVR778qsZrlZ5KrUol64AvboStrxBPAx+GV2enApi
xYHYrEy/RuHGd9ERDW5eCdgE/x176ebF8C9f3yFUQEmSf24BdUGajOUdy6nK
uEVc56+uo7u1yB13U/naiEJiQYJwScg6AOfGEf3KxneUfRYAvTKEflzFwQuJ
7Dq2+m09/hLJEP34ALIs/0udMqkNxLqfBqvY1rE/fsN7/vnGQNz+iW759yRj
FMAEoWFdB3PnNvg4sFeiMv5HaxImRrY+Bf8Pi7UXB7AoAAA=

-->

</rfc>

