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

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-acme-tls-alpn-02" category="std">

  <front>
    <title abbrev="ACME-TLS-ALPN">ACME TLS ALPN Challenge Extension</title>

    <author initials="R.B." surname="Shoemaker" fullname="Roland Bracewell Shoemaker">
      <organization abbrev="ISRG">Internet Security Research Group</organization>
      <address>
        <email>roland@letsencrypt.org</email>
      </address>
    </author>

    <date year="2018" month="August" day="13"/>

    <area>General</area>
    <workgroup>ACME Working Group</workgroup>
    

    <abstract>


<t>This document specifies a new challenge for the Automated Certificate Management Environment (ACME) protocol which allows for domain control validation using TLS.</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>The Automatic Certificate Management Environment (ACME) <xref target="I-D.ietf-acme-acme"/> standard specifies methods for validating control of domain names via HTTP and DNS. Deployment experience has shown it is also useful to be able to validate domain control using the TLS layer alone. In particular, this allows hosting providers, CDNs, and TLS-terminating load balancers to validate domain control without modifying the HTTP handling behavior of their backends. This separation of layers can improve security and usability of ACME validation.</t>

<t>Early ACME drafts specified two TLS-based challenge types: TLS-SNI-01 and TLS-SNI-02. These methods were removed because they relied on assumptions about the deployed base of HTTPS hosting providers that proved to be incorrect. Those incorrect assumptions weakened the security of those methods and are discussed in the “Design Rationale” appendix.</t>

<t>This document specifies a new TLS-based challenge type, TLS-ALPN-01. This challenge requires negotiating a new application-layer protocol using the TLS Application-Layer Protocol Negotiation (ALPN) Extension <xref target="RFC7301"/>. Because no existing software implements this protocol, the ability to fulfill TLS-ALPN-01 challenges is effectively opt-in. A service provider must proactively deploy new code in order to implement TLS-ALPN-01, so we can specify stronger controls in that code, resulting in a stronger validation method.</t>

</section>
<section anchor="terminology" title="Terminology">

<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>

</section>
<section anchor="tls-with-application-level-protocol-negotiation-tls-alpn-challenge" title="TLS with Application Level Protocol Negotiation (TLS ALPN) Challenge">

<t>The TLS with Application Level Protocol Negotiation (TLS ALPN) validation method proves control over a domain name by requiring the client to configure a TLS server to respond to specific connection attempts utilizing the ALPN extension with identifying information. The ACME server validates control of the domain name by connecting to a TLS server at one of the addresses resolved for the domain name and verifying that a certificate with specific content is presented.</t>

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

<figure><artwork><![CDATA[
GET /acme/authz/1234/1 HTTP/1.1
Host: example.com

HTTP/1.1 200 OK
{
  "type": "tls-alpn-01",
  "url": "https://example.com/acme/authz/1234/1",
  "status": "pending",
  "token": "evaGxfADs6pSRb2LAv9IZf17Dt3juxGJ-PCt92wr-oA"
}
]]></artwork></figure>

<t>The client prepares for validation by constructing a self-signed certificate which MUST contain a acmeValidation-v1 extension and a subjectAlternativeName extension <xref target="RFC5280"/>. The subjectAlternativeName extension MUST contain a single dNSName entry where the value is the domain name being validated. The acmeValidation-v1 extension MUST contain the SHA-256 digest <xref target="FIPS180-4"></xref> of the key authorization <xref target="I-D.ietf-acme-acme"/> for the challenge. The acmeValidation extension MUST be critical so that the certificate isn’t inadvertently used by non-ACME software.</t>

<figure><artwork><![CDATA[
id-pe-acmeIdentifier OBJECT IDENTIFIER ::=  { id-pe 31 }

id-pe-acmeIdentifier-v1 OBJECT IDENTIFIER ::=  { id-pe-acmeIdentifier 1 }

acmeValidation-v1 ::= OCTET STRING (SIZE (32))
]]></artwork></figure>

<t>Once this certificate has been created it MUST be provisioned such that it is returned during a TLS handshake that contains a ALPN extension containing the value “acme-tls/1” and a SNI extension containing the domain name being validated.</t>

<t>A client responds with an empty object ({}) to acknowledge that the challenge is ready to be validated by the server. The base64url encoding of the protected headers and payload is described in <xref target="I-D.ietf-acme-acme"/> Section 6.1.</t>

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

{
  "protected": base64url({
    "alg": "ES256",
    "kid": "https://example.com/acme/acct/1",
    "nonce": "JHb54aT_KTXBWQOzGYkt9A",
    "url": "https://example.com/acme/authz/1234/1"
  }),
  "payload": base64url({}),
  "signature": "Q1bURgJoEslbD1c5...3pYdSMLio57mQNN4"
}
]]></artwork></figure>

<t>On receiving a response the server constructs and stores the key authorization from the challenge “token” value and the current client account key.</t>

<t>The server then verifies the client’s control over the domain by verifying that the TLS server was configured as expected using the following steps:</t>

<t><list style="numbers">
  <t>Compute the expected SHA-256 digest of the expected key authorization.</t>
  <t>Resolve the domain name being validated and choose one of the IP addresses returned for validation (the server MAY validate against multiple addresses if more than one is returned, but this is not required).</t>
  <t>Initiate a TLS connection with the chosen IP address, this connection MUST use TCP port 443. The ClientHello that initiates the handshake MUST contain a ALPN extension with the single protocol name “acme-tls/1” and a Server Name Indication <xref target="RFC6066"/> extension containing the domain name being validated.</t>
  <t>Verify that the ServerHello contains a ALPN extension containing the value “acme-tls/1” and that the certificate returned contains a subjectAltName extension containing the dNSName being validated and no other entries and a critical acmeValidation extension containing the digest computed in step 1. The comparison of dNSNames MUST be case insensitive <xref target="RFC4343"/>. Note that as ACME doesn’t support Unicode identifiers all dNSNames MUST be encoded using the <xref target="RFC3492"/> rules.</t>
</list></t>

<t>If all of the above steps succeed then the validation is successful, otherwise it fails. Once the TLS handshake has been completed the connection MUST be immediately closed and no further data should be exchanged.</t>

<section anchor="acme-tls1-protocol-definition" title="acme-tls/1 Protocol Definition">

<t>The “acme-tls/1” protocol MUST only be used for validating ACME tls-alpn-01 challenges. The protocol consists of a TLS handshake in which the required validation information is transmitted. Once the handshake is completed the client MUST NOT exchange any further data with the server and MUST immediately close the connection.</t>

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

<t>The design of this challenges relies on some assumptions centered around how a server behaves during validation.</t>

<t>The first assumption is that when a server is being used to serve content for multiple DNS names from a single IP address that it properly segregates control of those names to the users that own them. This means that if User A registers Host A and User B registers Host B the server should not allow a TLS request using a SNI value for Host A to be served by User B or Host B to be served by User A. If the server allows User B to serve this request it allows them to illegitimately validate control of Host A to the ACME server.</t>

<t>The second assumption is that a server will not violate <xref target="RFC7301"/> by blindly agreeing to use the “acme-tls/1” protocol without actually understanding it.</t>

<t>To further mitigate the risk of users claiming domain names used by other users on the same infrastructure hosting providers, CDNs, and other service providers should not allow users to provide their own certificates for the TLS ALPN validation process. If providers wish to implement TLS ALPN validation they SHOULD only generate certificates used for validation themselves and not expose this functionality to users.</t>

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

<t>[[RFC Editor: please replace XXXX below by the RFC number.]]</t>

<section anchor="smi-security-for-pkix-certificate-extension-oid" title="SMI Security for PKIX Certificate Extension OID">

<t>Within the SMI-numbers registry, the “SMI Security for PKIX Certificate Extension (1.3.6.1.5.5.7.1)” table is to be updated to add the following entry:</t>

<texttable>
      <ttcol align='left'>Decimal</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>References</ttcol>
      <c>30</c>
      <c>id-pe-acmeIdentifier</c>
      <c>RFC XXXX</c>
</texttable>

</section>
<section anchor="alpn-protocol-id" title="ALPN Protocol ID">

<t>Within the Transport Layer Security (TLS) Extensions registry, the “Application-Layer Protocol Negotiation (ALPN) Protocol IDs” table is to be updated to add the following entry:</t>

<texttable>
      <ttcol align='left'>Protocol</ttcol>
      <ttcol align='left'>Identification Sequence</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>ACME-TLS/1</c>
      <c>0x61 0x63 0x6d 0x65 0x2d 0x74 0x6c 0x73 0x2f 0x31 (“acme-tls/1”)</c>
      <c>RFC XXXX</c>
</texttable>

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

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

<texttable>
      <ttcol align='left'>Label</ttcol>
      <ttcol align='left'>Identifier Type</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>tls-alpn-01</c>
      <c>dns</c>
      <c>RFC XXXX</c>
</texttable>

</section>
</section>
<section anchor="appendix-design-rationale" title="Appendix: Design Rationale">

<t>The TLS ALPN challenge exists to replace the TLS SNI challenge defined in the early ACME drafts. This challenge was convenient for service providers who were either operating large TLS layer load balancing systems at which they wanted to perform validation or running servers fronting large numbers of DNS names from a single host as it allowed validation purely within the TLS layer.</t>

<t>A security issue was discovered in the TLS SNI challenge by Frans Rosen which allowed users of various service providers to illegitimately validate control of the DNS names of other users of the provider. When the TLS SNI challenge was designed it was assumed that a user would only be able to respond to TLS traffic via SNI for domain names they controlled (i.e. if User A registered Host A and User B registered Host B with a service provider that User A wouldn’t be able to respond to SNI traffic for Host B). This turns out not to be a security property provided by a number of large service providers. Because of this users were able to respond to SNI traffic for the SNI names used by the TLS SNI challenge validation process. This meant that if User A and User B had registered Host A and Host B respectively User A would be able to claim the SNI name for a validation for Host B and when the validation connection was made that User A would be able to answer, proving control of Host B.</t>

</section>
<section anchor="acknowledgements" title="Acknowledgements">

<t>The author would like to thank all those whom have provided design insights and editorial review of this document, including Richard Barnes, Ryan Hurst, Adam Langley, Ryan Sleevi, Jacob Hoffman-Andrews, Daniel McCarney, Marcin Walas, and Martin Thomson and especially Frans Rosén who discovered the vulnerability in the TLS SNI method which necessitated the writing of this specication.</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>





<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 initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author>
<date year='1997' month='March' />
<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="RFC3492" target='https://www.rfc-editor.org/info/rfc3492'>
<front>
<title>Punycode: A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA)</title>
<author initials='A.' surname='Costello' fullname='A. Costello'><organization /></author>
<date year='2003' month='March' />
<abstract><t>Punycode is a simple and efficient transfer encoding syntax designed for use with Internationalized Domain Names in Applications (IDNA).  It uniquely and reversibly transforms a Unicode string into an ASCII string.  ASCII characters in the Unicode string are represented literally, and non-ASCII characters are represented by ASCII characters that are allowed in host name labels (letters, digits, and hyphens). This document defines a general algorithm called Bootstring that allows a string of basic code points to uniquely represent any string of code points drawn from a larger set.  Punycode is an instance of Bootstring that uses particular parameter values specified by this document, appropriate for IDNA.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='3492'/>
<seriesInfo name='DOI' value='10.17487/RFC3492'/>
</reference>



<reference  anchor="RFC4343" target='https://www.rfc-editor.org/info/rfc4343'>
<front>
<title>Domain Name System (DNS) Case Insensitivity Clarification</title>
<author initials='D.' surname='Eastlake 3rd' fullname='D. Eastlake 3rd'><organization /></author>
<date year='2006' month='January' />
<abstract><t>Domain Name System (DNS) names are &quot;case insensitive&quot;.  This document explains exactly what that means and provides a clear specification of the rules.  This clarification updates RFCs 1034, 1035, and 2181.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='4343'/>
<seriesInfo name='DOI' value='10.17487/RFC4343'/>
</reference>



<reference  anchor="RFC5280" target='https://www.rfc-editor.org/info/rfc5280'>
<front>
<title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
<author initials='D.' surname='Cooper' fullname='D. Cooper'><organization /></author>
<author initials='S.' surname='Santesson' fullname='S. Santesson'><organization /></author>
<author initials='S.' surname='Farrell' fullname='S. Farrell'><organization /></author>
<author initials='S.' surname='Boeyen' fullname='S. Boeyen'><organization /></author>
<author initials='R.' surname='Housley' fullname='R. Housley'><organization /></author>
<author initials='W.' surname='Polk' fullname='W. Polk'><organization /></author>
<date year='2008' month='May' />
<abstract><t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet.  An overview of this approach and model is provided as an introduction.  The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms.  Standard certificate extensions are described and two Internet-specific extensions are defined.  A set of required certificate extensions is specified.  The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions.  An algorithm for X.509 certification path validation is described.  An ASN.1 module and examples are provided in the appendices.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5280'/>
<seriesInfo name='DOI' value='10.17487/RFC5280'/>
</reference>



<reference  anchor="RFC6066" target='https://www.rfc-editor.org/info/rfc6066'>
<front>
<title>Transport Layer Security (TLS) Extensions: Extension Definitions</title>
<author initials='D.' surname='Eastlake 3rd' fullname='D. Eastlake 3rd'><organization /></author>
<date year='2011' month='January' />
<abstract><t>This document provides specifications for existing TLS extensions.  It is a companion document for RFC 5246, &quot;The Transport Layer Security (TLS) Protocol Version 1.2&quot;.  The extensions specified are server_name, max_fragment_length, client_certificate_url, trusted_ca_keys, truncated_hmac, and status_request.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6066'/>
<seriesInfo name='DOI' value='10.17487/RFC6066'/>
</reference>



<reference  anchor="RFC7301" target='https://www.rfc-editor.org/info/rfc7301'>
<front>
<title>Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension</title>
<author initials='S.' surname='Friedl' fullname='S. Friedl'><organization /></author>
<author initials='A.' surname='Popov' fullname='A. Popov'><organization /></author>
<author initials='A.' surname='Langley' fullname='A. Langley'><organization /></author>
<author initials='E.' surname='Stephan' fullname='E. Stephan'><organization /></author>
<date year='2014' month='July' />
<abstract><t>This document describes a Transport Layer Security (TLS) extension for application-layer protocol negotiation within the TLS handshake. For instances in which multiple application protocols are supported on the same TCP or UDP port, this extension allows the application layer to negotiate which protocol will be used within the TLS connection.</t></abstract>
</front>
<seriesInfo name='RFC' value='7301'/>
<seriesInfo name='DOI' value='10.17487/RFC7301'/>
</reference>



<reference anchor="I-D.ietf-acme-acme">
<front>
<title>Automatic Certificate Management Environment (ACME)</title>

<author initials='R' surname='Barnes' fullname='Richard Barnes'>
    <organization />
</author>

<author initials='J' surname='Hoffman-Andrews' fullname='Jacob Hoffman-Andrews'>
    <organization />
</author>

<author initials='D' surname='McCarney' fullname='Daniel McCarney'>
    <organization />
</author>

<author initials='J' surname='Kasten' fullname='James Kasten'>
    <organization />
</author>

<date month='August' day='10' year='2018' />

<abstract><t>Public Key Infrastructure 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.  Today, 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.  RFC EDITOR: PLEASE REMOVE THE FOLLOWING PARAGRAPH: The source for this draft is maintained in GitHub.  Suggested changes should be submitted as pull requests at https://github.com/ietf-wg-acme/acme [1].  Instructions are on that page as well.  Editorial changes can be managed in GitHub, but any substantive change should be discussed on the ACME mailing list (acme@ietf.org).</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-acme-acme-14' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-acme-acme-14.txt' />
</reference>


<reference anchor="FIPS180-4" target="http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf">
  <front>
    <title>NIST FIPS 180-4, Secure Hash Standard</title>
    <author initials="National Institute of Standards and Technology, U.S." surname="Department of Commerce" fullname="NIST">
      <organization></organization>
    </author>
    <date year="2012" month="March"/>
  </front>
</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 initials='B.' surname='Leiba' fullname='B. Leiba'><organization /></author>
<date year='2017' month='May' />
<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" target='https://www.rfc-editor.org/info/rfc4086'>
<front>
<title>Randomness Requirements for Security</title>
<author initials='D.' surname='Eastlake 3rd' fullname='D. Eastlake 3rd'><organization /></author>
<author initials='J.' surname='Schiller' fullname='J. Schiller'><organization /></author>
<author initials='S.' surname='Crocker' fullname='S. Crocker'><organization /></author>
<date year='2005' month='June' />
<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>




    </references>




  </back>

<!-- ##markdown-source:
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
UA34f/7DT4OkLQAA

-->

</rfc>

