<?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.6.22 (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-dnsop-domain-verification-techniques-01" category="bcp" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.16.0 -->
  <front>
    <title abbrev="Domain Verification Techniques">Domain Verification Techniques using DNS</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-dnsop-domain-verification-techniques-01"/>
    <author initials="S." surname="Sahib" fullname="Shivan Sahib">
      <organization>Brave Software</organization>
      <address>
        <email>shivankaulsahib@gmail.com</email>
      </address>
    </author>
    <author initials="S." surname="Huque" fullname="Shumon Huque">
      <organization>Salesforce</organization>
      <address>
        <email>shuque@gmail.com</email>
      </address>
    </author>
    <author initials="P." surname="Wouters" fullname="Paul Wouters">
      <organization>Aiven</organization>
      <address>
        <email>paul.wouters@aiven.io</email>
      </address>
    </author>
    <date year="2023" month="February" day="16"/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>Many services on the Internet need to verify ownership or control of a domain in the Domain Name System (DNS). This verification is often done by requesting a specific DNS record to be visible in the domain. There are a variety of techniques in use today, with different pros and cons. This document proposes some practices to avoid known problems.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Source for this draft and an issue tracker can be found at
  <eref target="https://github.com/ShivanKaul/draft-sahib-domain-verification-techniques"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>Many providers of internet services need domain owners to prove that they control a particular domain before they can operate a services or grant some privilege to the associated domain. For instance, certificate authorities (CAs) ask requesters of TLS certificates to prove that they operate the domain they are requesting the certificate for. Providers generally allow for several different ways of proving domain control. In practice, DNS-based verification takes the form of the provider generating a random value visible only to the requester, and then asking the requester to create a DNS record containing this random value and placing it at a location within the domain that the provider can query for. Generally only one temporary DNS record is sufficient for proving domain ownership, although sometimes the DNS record must be kept in the zone to prove continued ownership of the domain.</t>
      <t>This document describes common practices and pitfalls associated with using DNS-based techniques for domain verification in the <xref target="appendix"/>, and recommends using TXT-based domain verification which is time-bound and targeted to the service. Other techniques such as email or HTTP(S) based verification are out-of-scope.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" 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>
      <t>Provider: an internet-based provider of a service, for e.g., a Certificate Authority or a service that allows for user-controlled websites. These services often require a user to verify that they control a domain.</t>
      <t>APEX: the 'top' of the domain name. From the user perspective, the highest level of "their" domain name.</t>
      <artwork><![CDATA[
# this record is at the APEX of the domain example.com.
example.com.   IN   NS   a.iana-servers.net.
# this record is NOT at the APEX of the domain example.com.
something.example.com.   IN   A   192.0.2.1
]]></artwork>
      <t>Random Token: a random value that uniquely identifies the DNS domain verification challenge.</t>
    </section>
    <section anchor="recommendations">
      <name>Recommendations</name>
      <section anchor="txt-record">
        <name>TXT Record</name>
        <t>DNS TXT records are the RECOMMENDED method of doing DNS-based domain verification. The provider constructs the validation domain name by prepending a provider-relevant prefix followed by "-challenge" to the domain name being validated (e.g. "_foo-challenge.example.com").</t>
        <t>The RDATA of the TXT resource record MUST contain a unique token identifying the challenge constructed as the output of the following:</t>
        <ol spacing="normal" type="1"><li>Generate a Random Token with at least 128 bits of entropy.</li>
          <li>Take the SHA-256 digest output <xref target="SHA256"/> of it.</li>
          <li>base64url encode it.</li>
        </ol>
        <t>See <xref target="RFC4086"/> for additional information on randomness requirements.</t>
        <t>Providers MUST provide clear instructions on when a verifying record can be removed. The user SHOULD de-provision the resource record provisioned for a DNS-based domain verification challenge once the one-time challenge is complete. These instructions SHOULD be encoded in the RDATA via comma-separated ASCII key-value pairs <xref target="RFC1464"/> using the key <tt>expiry</tt>. If this is done, the token should have a key <tt>token</tt>. For example:</t>
        <artwork><![CDATA[
_foo-challenge.example.com.  IN   TXT  "token=3419...3d206c4,expiry=2023-02-08T02:03:19+00:00"
]]></artwork>
        <t>Alternatively, if the record should never expire (i.e. if the same challenge is used repeatedly), the <tt>expiry</tt> can set to be <tt>never</tt>.</t>
        <artwork><![CDATA[
_foo-challenge.example.com.  IN   TXT  "token=3419...3d206c4,expiry=never"
]]></artwork>
        <t>If metadata is not used, then the unique token generated as-above can be placed as the only contents of the RDATA.</t>
        <t>For example:</t>
        <artwork><![CDATA[
_foo-challenge.example.com.  IN   TXT  "3419...3d206c4"
]]></artwork>
        <t>If a provider has an application-specific need to have multiple verifications for the same label, multiple prefixes can be used:</t>
        <artwork><![CDATA[
_feature1._foo-challenge.example.com.  IN   TXT  "3419...3d206c4"
]]></artwork>
        <t>This again allows the provider to query only for application-specific records it needs, while giving flexibility to the user adding the DNS verification record (i.e. they can be given permission to only add records under a specific prefix by the DNS administrator). Whether or not multiple verifying records can exist for the same domain is up to the implementation.</t>
        <t>Consumers of the provider services need to relay information from a provider's website to their local DNS administrators. The exact DNS record type, content and location is often not clear when the DNS administrator receives the information, especially to consumers who are not DNS experts. Providers SHOULD offer detailed help pages, that are accessible without needing a login on the provider website, as the DNS adminstrator often has no login account on the provider service website. Similarly, for clarity, the exact and full DNS record (including a Fully Qualified Domain Name) to be added SHOULD be provided along with help instructions.</t>
      </section>
      <section anchor="cname-record">
        <name>CNAME Record</name>
        <t>CNAME records cannot co-exist with any other data; what happens when both a CNAME and other records exist depends on the DNS implementation, and might break in unexpected ways. If a CNAME is added for continuous authorization, and for another service a TXT record is added, the TXT record might work but the CNAME record might break. Another issue with CNAME records is that they must not point to another CNAME. But while this might be true in an initial deployment, if the target that the CNAME points to is changed from a non-CNAME record to a CNAME record, some DNS software might no longer resolve this as expected. However, when using a properly named prefix, existing CNAME records should never conflict with regular CNAME records.</t>
        <t>It is therefore NOT RECOMMENDED to use CNAMEs for DNS domain verification.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Both the provider and the service being authenticated and authorized should be obvious from the TXT content to prevent malicious services from misleading the domain owner into certifying a different provider or service.</t>
      <t>DNSSEC <xref target="I-D.ietf-dnsop-dnssec-bcp"/> SHOULD be employed by the domain owner to protect their domain verification records against DNS spoofing attacks.</t>
      <t>DNSSEC validation MUST be enabled by service providers that verify domain verification records they have issued and when no DNSSEC support is detected for the domain owner zone, SHOULD attempt to query and confirm by matching the validation record using multiple DNS validators on (preferably) unpredictable geographically diverse IP addressses to reduce an attacker's ability to spoof DNS. Alternatively, service providers MAY perform multiple queries spread out over a longer time period to reduce the chance of receiving spoofed DNS answers.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC1034">
          <front>
            <title>Domain names - concepts and facilities</title>
            <author fullname="P. Mockapetris" initials="P." surname="Mockapetris">
              <organization/>
            </author>
            <date month="November" year="1987"/>
            <abstract>
              <t>This RFC is the revised basic definition of The Domain Name System.  It obsoletes RFC-882.  This memo describes the domain style names and their used for host address look up and electronic mail forwarding.  It discusses the clients and servers in the domain name system and the protocol used between them.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="13"/>
          <seriesInfo name="RFC" value="1034"/>
          <seriesInfo name="DOI" value="10.17487/RFC1034"/>
        </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">
              <organization/>
            </author>
            <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="RFC1464">
          <front>
            <title>Using the Domain Name System To Store Arbitrary String Attributes</title>
            <author fullname="R. Rosenbaum" initials="R." surname="Rosenbaum">
              <organization/>
            </author>
            <date month="May" year="1993"/>
            <abstract>
              <t>This paper describes a simple means to associate arbitrary string information (ASCII text) with attributes that have not been defined by the DNS.  This memo defines an Experimental Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1464"/>
          <seriesInfo name="DOI" value="10.17487/RFC1464"/>
        </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">
              <organization/>
            </author>
            <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="I-D.ietf-dnsop-dnssec-bcp">
          <front>
            <title>DNS Security Extensions (DNSSEC)</title>
            <author fullname="Paul E. Hoffman" initials="P. E." surname="Hoffman">
              <organization>ICANN</organization>
            </author>
            <date day="24" month="October" year="2022"/>
            <abstract>
              <t>This document describes the DNS Security Extensions (commonly called "DNSSEC") that are specified in RFCs 4033, 4034, and 4035, as well as a handful of others.  One purpose is to introduce all of the RFCs in one place so that the reader can understand the many aspects of DNSSEC.  This document does not update any of those RFCs.  A second purpose is to state that using DNSSEC for origin authentication of DNS data is the best current practice.  A third purpose is to provide a single reference for other documents that want to refer to DNSSEC.
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-dnsop-dnssec-bcp-06"/>
        </reference>
        <reference anchor="SHA256" target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf">
          <front>
            <title>Secure Hash Standard (SHS), NIST FIPS 180-4</title>
            <author initials="" surname="National Institute of Standards and Technology">
              <organization/>
            </author>
            <date year="2015"/>
          </front>
        </reference>
        <reference anchor="AVOID-FRAGMENTATION">
          <front>
            <title>Fragmentation Avoidance in DNS</title>
            <author fullname="Kazunori Fujiwara" initials="K." surname="Fujiwara">
              <organization>Japan Registry Services Co., Ltd.</organization>
            </author>
            <author fullname="Paul A. Vixie" initials="P. A." surname="Vixie">
              <organization>AWS Security</organization>
            </author>
            <date day="19" month="January" year="2023"/>
            <abstract>
              <t>   EDNS0 enables a DNS server to send large responses using UDP and is
   widely deployed.  Large DNS/UDP responses are fragmented, and IP
   fragmentation has exposed weaknesses in application protocols.  It is
   possible to avoid IP fragmentation in DNS by limiting response size
   where possible, and signaling the need to upgrade from UDP to TCP
   transport where necessary.  This document proposes techniques to
   avoid IP fragmentation in DNS.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-dnsop-avoid-fragmentation-11"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC4086">
          <front>
            <title>Randomness Requirements for Security</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd">
              <organization/>
            </author>
            <author fullname="J. Schiller" initials="J." surname="Schiller">
              <organization/>
            </author>
            <author fullname="S. Crocker" initials="S." surname="Crocker">
              <organization/>
            </author>
            <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="RFC8555">
          <front>
            <title>Automatic Certificate Management Environment (ACME)</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes">
              <organization/>
            </author>
            <author fullname="J. Hoffman-Andrews" initials="J." surname="Hoffman-Andrews">
              <organization/>
            </author>
            <author fullname="D. McCarney" initials="D." surname="McCarney">
              <organization/>
            </author>
            <author fullname="J. Kasten" initials="J." surname="Kasten">
              <organization/>
            </author>
            <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="RFC9210">
          <front>
            <title>DNS Transport over TCP - Operational Requirements</title>
            <author fullname="J. Kristoff" initials="J." surname="Kristoff">
              <organization/>
            </author>
            <author fullname="D. Wessels" initials="D." surname="Wessels">
              <organization/>
            </author>
            <date month="March" year="2022"/>
            <abstract>
              <t>This document updates RFCs 1123 and 1536.  This document requires the operational practice of permitting DNS messages to be carried over TCP on the Internet as a Best Current Practice.  This operational requirement is aligned with the implementation requirements in RFC 7766.  The use of TCP includes both DNS over unencrypted TCP as well as over an encrypted TLS session.  The document also considers the consequences of this form of DNS communication and the potential operational issues that can arise when this Best Current Practice is not upheld.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="235"/>
          <seriesInfo name="RFC" value="9210"/>
          <seriesInfo name="DOI" value="10.17487/RFC9210"/>
        </reference>
        <reference anchor="RFC6672">
          <front>
            <title>DNAME Redirection in the DNS</title>
            <author fullname="S. Rose" initials="S." surname="Rose">
              <organization/>
            </author>
            <author fullname="W. Wijngaards" initials="W." surname="Wijngaards">
              <organization/>
            </author>
            <date month="June" year="2012"/>
            <abstract>
              <t>The DNAME record provides redirection for a subtree of the domain name tree in the DNS.  That is, all names that end with a particular suffix are redirected to another part of the DNS.  This document obsoletes the original specification in RFC 2672 as well as updates the document on representing IPv6 addresses in DNS (RFC 3363). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6672"/>
          <seriesInfo name="DOI" value="10.17487/RFC6672"/>
        </reference>
        <reference anchor="LETSENCRYPT" target="https://letsencrypt.org/docs/challenge-types/#dns-01-challenge">
          <front>
            <title>Challenge Types: DNS-01 challenge</title>
            <author initials="" surname="Let's Encrypt">
              <organization/>
            </author>
            <date year="2020"/>
          </front>
        </reference>
        <reference anchor="GOOGLE-WORKSPACE-TXT" target="https://support.google.com/a/answer/2716802">
          <front>
            <title>TXT record values</title>
            <author initials="" surname="Google">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="GOOGLE-WORKSPACE-CNAME" target="https://support.google.com/a/answer/112038">
          <front>
            <title>CNAME record values</title>
            <author initials="" surname="Google">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="ACM-CNAME" target="https://docs.aws.amazon.com/acm/latest/userguide/dns-validation.html">
          <front>
            <title>Option 1: DNS Validation</title>
            <author initials="" surname="AWS">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="GITHUB-TXT" target="https://docs.github.com/en/github/setting-up-and-managing-organizations-and-teams/verifying-your-organizations-domain">
          <front>
            <title>Verifying your organization's domain</title>
            <author initials="" surname="GitHub">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="ATLASSIAN-VERIFY" target="https://support.atlassian.com/user-management/docs/verify-a-domain-to-manage-accounts/#Verify-over-DNS">
          <front>
            <title>Verify over DNS</title>
            <author initials="" surname="Atlassian">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
    <section anchor="appendix">
      <name>Appendix</name>
      <t>The survey done in this document found several varying methods for DNS domain verification techniques across providers. This Appendix lists them, for completeness.</t>
      <section anchor="survey-of-verification-techniques">
        <name>Survey of Verification Techniques</name>
        <section anchor="txt-based">
          <name>TXT based</name>
          <t>TXT record-based DNS domain verification is usually the default option for DNS verification. The service provider asks the user to add a DNS TXT record (perhaps through their domain host or DNS provider) at the domain with a certain value. Then the service provider does a DNS TXT query for the domain being verified and checks that the value exists. For example, this is what a DNS TXT verification record could look like for a provider Foo:</t>
          <artwork><![CDATA[
example.com.   IN   TXT   "237943648324687364"
]]></artwork>
          <t>Here, the value "237943648324687364" serves as the randomly-generated TXT value being added to prove ownership of the domain to Foo provider. Note that in this construction provider Foo would have to query for all TXT records at "example.com" to get the validating record. Although the original DNS protocol specifications did not associate any semantics with the DNS TXT record, <xref target="RFC1464"/> describes how to use them to store attributes in the form of ASCII text key-value pairs for a particular domain. In practice, there is wide variation in the content of DNS TXT records used for domain verification, and they often do not follow the key-value pair model. Even so, the RDATA <xref target="RFC1034"/> portion of the DNS TXT record has to contain the value being used to verify the domain. The value is usually a Random Token in order to guarantee that the entity who requested that the domain be verified (i.e. the person managing the account at Foo provider) is the one who has (direct or delegated) access to DNS records for the domain. After a TXT record has been added, the service provider will usually take some time to verify that the DNS TXT record with the expected token exists for the domain. The generated token typically expires in a few days. See <xref target="appendix"/> for a survey of different implementations.</t>
          <t>Some providers use a suffix of <tt>_PROVIDER_NAME-challenge</tt> in the Name field of the TXT record challenge. For ACME, the full Host is <tt>_acme-challenge.&lt;YOUR_DOMAIN&gt;</tt>. Such patterns are useful for doing targeted domain verification. The ACME protocol <xref target="RFC8555"/> has a challenge type  <tt>DNS-01</tt> that lets a user prove domain ownership. In this challenge, an implementing CA asks you to create a TXT record with a randomly-generated token at <tt>_acme-challenge.&lt;YOUR_DOMAIN&gt;</tt>:</t>
          <artwork><![CDATA[
_acme-challenge.example.com.  IN  TXT "cE3A8qQpEzAIYq-T9DWNdLJ1_YRXamdxcjGTbzrOH5L"
]]></artwork>
          <t><xref target="RFC8555"/> (section 8.4) places requirements on the Random Token.</t>
          <t>An operational issue arises from the DNS protocol only being able to query for "all TXT records" at a single location: if multiple services all require TXT records, this can cause the DNS answer for TXT records to become very large. It has been observed that some well known domains had so many services deployed that their DNS TXT answer did not fit in a single UDP DNS packet. This results in fragmentation which is known to be vulnerable to various attacks (<xref target="AVOID-FRAGMENTATION"/>). It can also lead to UDP packet truncation, causing a retry over TCP. Not all networks properly transport DNS over TCP and some DNS software mistakenly believe TCP support is optional (<xref target="RFC9210"/>).</t>
          <t>A malicious service that promises to deliver something after domain verification could surreptitiously ask another service provider to start processing or sending mail for the target domain and then present the victim domain administrator with this DNS TXT record pretending to be for their service. Once the administrator has added the DNS TXT record, instead of getting their service, their domain is now certifying another service of which they are not aware they are now a consumer. If services use a clear description and name attribution in the required DNS TXT record, this can be avoided. For example, by requiring a DNS TXT record at _vendorname.example.com instead of at example.com, a malicious service could no longer replay this without the DNS administrator noticing this.</t>
          <section anchor="lets-encrypt">
            <name>Let's Encrypt</name>
            <t>The ACME example in <xref target="txt-based"/> is implemented by Let's Encrypt <xref target="LETSENCRYPT"/>.</t>
          </section>
          <section anchor="google-workspace">
            <name>Google Workspace</name>
            <t><xref target="GOOGLE-WORKSPACE-TXT"/> asks the user to sign in with their administrative account and obtain their verification token as part of the setup process for Google Workspace. The verification token is a 68-character string that begins with "google-site-verification=", followed by 43 characters. Google recommends a TTL of 3600 seconds. The owner name of the TXT record is the domain or subdomain neme being verified.</t>
            <t><xref target="GOOGLE-WORKSPACE-CNAME"/> lets you specify a CNAME record for verifying domain ownership. The user gets a unique 12-character string that is added as "Host", with TTL 3600 (or default) and Destination an 86-character string beginning with "gv-" and ending with ".domainverify.googlehosted.com.".</t>
          </section>
          <section anchor="github">
            <name>GitHub</name>
            <t>GitHub asks you to create a DNS TXT record under <tt>_github-challenge-ORGANIZATION-&lt;YOUR_DOMAIN&gt;</tt>, where ORGANIZATION stands for the GitHub organization name <xref target="GITHUB-TXT"/>. The code is a numeric code that expires in 7 days.</t>
          </section>
        </section>
        <section anchor="cname-based">
          <name>CNAME based</name>
          <t>Less commonly than TXT record verification, service providers also provide the ability to verify domain ownership via CNAME records. One reason for using CNAME is for the case where the user cannot create TXT records; for example, when the domain name may already have a CNAME record that aliases it to a 3rd-party target domain. CNAMEs have a technical restriction that no other record types can be placed along side them at the same domain name <xref section="3.6.2" sectionFormat="of" target="RFC1034"/>. The CNAME based domain verification method typically uses a randomized label prepended to the domain name being verified. For example:</t>
          <artwork><![CDATA[
_random-token1.example.com.   IN   CNAME _random-token2.validation.com.`
]]></artwork>
          <t>When a third-party validation provider is used, both the client and the service provider need to give the validation provider a random token, so that the validation provider can confirm the client request is unique and bound to the service provider's request.</t>
          <section anchor="google-workspace-1">
            <name>Google Workspace</name>
            <t><xref target="GOOGLE-WORKSPACE-CNAME"/> lets you specify a CNAME record for verifying domain ownership. The user gets a unique 12-character string that is added as "Host", with TTL 3600 (or default) and Destination an 86-character string beginning with "gv-" and ending with ".domainverify.googlehosted.com.".</t>
          </section>
          <section anchor="aws-certificate-manager-acm">
            <name>AWS Certificate Manager (ACM)</name>
            <t>To get issued a certificate by AWS Certificate Manager (ACM), you can create a CNAME record to verify domain ownership <xref target="ACM-CNAME"/>. The record name for the CNAME looks like:</t>
            <artwork><![CDATA[
 `_<random-token1>.example.com.   IN   CNAME _RANDOM-TOKEN.acm-validations.aws.`
]]></artwork>
            <t>Note that if there are more than 5 CNAMEs being chained, then this method does not work.</t>
          </section>
        </section>
        <section anchor="dname">
          <name>DNAME</name>
          <t>DNAME-based <xref target="RFC6672"/> domain verification is theoretically possible (though no examples were found). Since DNAME redirects the entire subtree of names underneath the owner of the DNAME, you cannot place an underscore name under the DNAME itself - it would have to be placed under the DNAME target name, since any lookups for an underscore at the DNAME will be redirected to the corresponding label under the DNAME target.</t>
        </section>
        <section anchor="time-bound-checking">
          <name>Time-bound checking</name>
          <t>After domain verification is done, there is typically no need for the TXT or CNAME record to continue to exist as the presence of the domain-verifying DNS record for a service only implies that a user with access to the service also has DNS control of the domain at the time the code was generated. It should be safe to remove the verifying DNS record once the verification is done and the service provider doing the verification should specify how long the verification will take (i.e. after how much time can the verifying DNS record be deleted).</t>
          <section anchor="atlassian">
            <name>Atlassian</name>
            <t>Some services ask the DNS record to exist in perpetuity <xref target="ATLASSIAN-VERIFY"/>. If the record is removed, the user gets a limited amount of time to re-add it before they lose domain verification status.</t>
          </section>
        </section>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
