
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/">
    <channel>
        <title><![CDATA[ The Cloudflare Blog ]]></title>
        <description><![CDATA[ Get the latest news on how products at Cloudflare are built, technologies used, and join the teams helping to build a better Internet. ]]></description>
        <link>https://blog.cloudflare.com</link>
        <atom:link href="https://blog.cloudflare.com/" rel="self" type="application/rss+xml"/>
        <language>en-us</language>
        <image>
            <url>https://blog.cloudflare.com/favicon.png</url>
            <title>The Cloudflare Blog</title>
            <link>https://blog.cloudflare.com</link>
        </image>
        <lastBuildDate>Sat, 04 Apr 2026 02:37:07 GMT</lastBuildDate>
        <item>
            <title><![CDATA[Deprecating SPDY]]></title>
            <link>https://blog.cloudflare.com/deprecating-spdy/</link>
            <pubDate>Thu, 18 Jan 2018 15:58:00 GMT</pubDate>
            <description><![CDATA[ Participating in the Internet democracy occasionally means that technologies that were once popular lose their utility as newer technologies emerge. SPDY is one such technology.  As a result, we're announcing our intention to deprecate the use of SPDY for connections made to Cloudflare's edge. ]]></description>
            <content:encoded><![CDATA[ <p>Democratizing the Internet and making new features available to all Cloudflare customers is a core part of what we do. We're proud to be early adopters and have a long record of adopting new standards early, such as <a href="/introducing-http2/">HTTP/2</a>, as well as features that are experimental or not yet final, like <a href="/introducing-tls-1-3/">TLS 1.3</a> and <a href="/introducing-spdy/">SPDY</a>.</p><p>Participating in the Internet democracy occasionally means that ideas and technologies that were once popular or ubiquitous on the net lose their utility as newer technologies emerge. SPDY is one such technology. Several years ago, Google drafted a <a href="http://www.chromium.org/spdy/spdy-whitepaper">proprietary and experimental new protocol called SPDY</a>. SPDY offered many performance improvements over the aging HTTP/1.1 standard and these improvements resulted in significantly faster page load times for real-world websites. Stemming from its success, SPDY became the starting point for HTTP/2 and, when the new HTTP standard was finalized, the SPDY experiment came to an end where it gradually fell into disuse.</p><p>As a result, we're announcing our intention to deprecate the use of SPDY for connections made to Cloudflare's edge by February 21st, 2018.</p>
    <div>
      <h3>Remembering 2012</h3>
      <a href="#remembering-2012">
        
      </a>
    </div>
    <p>Five and a half years ago, when the majority of the web was unencrypted and web developers were resorting to creative tricks to improve performance (such as domain sharding to download resources in parallel) to get around the limitations of the then thirteen-year-old HTTP/1.1 standard, Cloudflare launched support for an exciting new protocol called SPDY.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/GcM2v0PkiVsXMHYMcNMFd/d4450ed0bde7202c91677354c4e0c486/0910152_02-A4-at-144-dpi.jpg" />
            
            </figure><p><a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a> by <a href="https://cds.cern.ch/record/1211045">Maximilien Brice</a></p><p>SPDY aimed to remove many of the bottlenecks present in HTTP/1.1 by changing the way HTTP requests were sent over the wire. Using header compression, request prioritization, and multiplexing, SPDY was able to provide significant performance gains while remaining compatible with the existing HTTP/1.1 standard. This meant that server operators could place a SPDY layer, such as Cloudflare, in front of their web application and gain the performance benefits of SPDY without modifying any of their existing code. SPDY effectively became a fast tunnel for HTTP traffic.</p>
    <div>
      <h3>2015: An ever-changing landscape</h3>
      <a href="#2015-an-ever-changing-landscape">
        
      </a>
    </div>
    <p>As the HTTPbis Working Group submitted SPDY for <a href="https://tools.ietf.org/html/draft-ietf-httpbis-http2-00">standardization</a>, the protocol underwent some changes (e.g.— Using <a href="https://tools.ietf.org/html/rfc7541">HPACK</a> for compression), but retained its core performance optimizations and came to be known as HTTP/2 in May 2015.</p><p>With the standardization of HTTP/2, Google announced that they would cease supporting SPDY with the public release of Chrome 51 in May 2016. This signaled to other software providers that they too should abandon support for the experimental SPDY protocol in favor of the newly standardized HTTP/2. Mozilla did so with the release of Firefox 51 in January 2017 and NGINX built their HTTP/2 module so that either it or the SPDY module could be used to terminate HTTPS connections, but not both.</p><p>Cloudflare announced support for HTTP/2 in December of 2015. It was at this point that we deviated from our peers in the industry. We knew that adoption of this new standard and the migration away from SPDY would take longer than the 1-2 year timeline put forth by Google and others, so we created our own patch for NGINX so that we could support terminating both SPDY and HTTP/2. This allowed Cloudflare customers who had yet to upgrade their clients to continue to receive the performance benefits of SPDY until they were able to support HTTP/2.</p><p>When we made this decision, SPDY was used for 53.59% of TLS connections to our edge and HTTP/2 for 26.79%. Had we only adopted the standard NGINX HTTP/2 module, we would've made the internet around 20% slower for more than half of all visitors to sites on Cloudflare— definitely not a performance compromise we were willing to make!</p>
    <div>
      <h3>To 2018 and Beyond</h3>
      <a href="#to-2018-and-beyond">
        
      </a>
    </div>
    <p>Two years after we began supporting HTTP/2 (and nearly three years after standardization), the majority of web browsers now support HTTP/2 where the notable exceptions are the UC Browser for Android and Opera Mini. This results in SPDY being used for only 3.83% of TLS connections to Cloudflare's edge whereas HTTP/2 accounts for 66.88%. At this point, and for several reasons, now is the time to stop supporting SPDY.</p><p><a href="https://creativecommons.org/publicdomain/zero/1.0/">CC0</a> by <a href="https://pixabay.com/en/users/JanBaby-3005373/">JanBaby</a></p><p>Looking closer at the low percentage of clients connecting with SPDY in 2018, 65% of these connections are made by older iOS and macOS apps compiled against HTTP and TLS libraries which only support SPDY and not HTTP/2. This means that these app developers need to publish an update with HTTP/2 support to enable support for this protocol. We worked closely with Apple to assess the impact of deprecating SPDY for these clients and determined that the impact of deprecation is minimal.</p><p>We mentioned earlier that we applied our own patch to NGINX in order to be able to continue to support both SPDY and HTTP/2 for TLS connections. What we didn't mention was the engineering cost associated with maintaining this patch. Every time we want to update NGINX, we also need to update and test our patch, which makes each upgrade more difficult. Further, no active development is being done to SPDY so in the event that security issues arise, we would incur the cost of developing our own security patches.</p><p>Finally, when we do disable SPDY this February, the less than 4% of traffic that currently uses SPDY will still be able to connect to Cloudflare's edge by gracefully falling back to using HTTP/1.1.</p>
    <div>
      <h3>Moving Forward While Looking Back</h3>
      <a href="#moving-forward-while-looking-back">
        
      </a>
    </div>
    <p>Part of being an innovator is knowing when it is time to move forward and put older innovations in the rear view mirror. By seeing 10% of HTTP requests made on the internet, Cloudflare is in a unique position to analyze overall adoption trends of new technologies, allowing us to make informed decisions on when to launch new features or deprecate legacy ones.</p><p>SPDY has been extraordinarily beneficial to clients connecting to Cloudflare over the years, but now that the protocol is largely abandoned and superseded by newer technologies, we recognize that 2018 is time to say goodbye to an aging legacy protocol.</p> ]]></content:encoded>
            <category><![CDATA[SSL]]></category>
            <category><![CDATA[Product News]]></category>
            <category><![CDATA[spdy]]></category>
            <category><![CDATA[HTTP2]]></category>
            <category><![CDATA[Security]]></category>
            <category><![CDATA[Speed & Reliability]]></category>
            <guid isPermaLink="false">3PXXT92K6072DYydBkCKiN</guid>
            <dc:creator>Max Nystrom</dc:creator>
        </item>
        <item>
            <title><![CDATA[CAA of the Wild: Supporting a New Standard]]></title>
            <link>https://blog.cloudflare.com/caa-of-the-wild/</link>
            <pubDate>Thu, 07 Dec 2017 14:00:00 GMT</pubDate>
            <description><![CDATA[ One thing we take pride in at Cloudflare is embracing new protocols and standards that help make the Internet faster and safer. Sometimes this means that we’ll launch support for experimental features or standards still under active development, as we did with TLS 1.3. ]]></description>
            <content:encoded><![CDATA[ <p>One thing we take pride in at Cloudflare is embracing new protocols and standards that help make the Internet faster and safer. Sometimes this means that we’ll launch support for experimental features or standards still under active development, <a href="/introducing-tls-1-3/">as we did</a> with TLS 1.3. Due to the not-quite-final nature of some of these features, we limit the availability at the onset to only the most ardent users so we can observe how these cutting-edge features behave in the wild. Some of our observations have helped the community propose revisions to the corresponding RFCs.</p><p>We began supporting the DNS <a href="https://tools.ietf.org/html/rfc6844">Certification Authority Authorization (CAA) Resource Record</a> in June behind a beta flag. Our goal in doing so was to see how the presence of these records would affect <a href="https://www.cloudflare.com/application-services/products/ssl/">SSL certificate</a> issuance by publicly-trusted certification authorities. We also wanted to do so in advance of the <a href="https://cabforum.org/2017/03/08/ballot-187-make-caa-checking-mandatory/">8 September 2017 enforcement date</a> for mandatory CAA checking at certificate issuance time, without introducing a new and externally unproven behavior to millions of Cloudflare customers at once. This beta period has provided invaluable insight as to how CAA records have changed and will continue to change the commercial public-key infrastructure (PKI) ecosystem.</p><p>As of today, we’ve removed this beta flag and all users are welcome to add CAA records as they see fit—without having to first contact support. Note that if you’ve got Universal SSL enabled, we’ll automatically augment your CAA records to allow issuance from our CA partners; if you’d like to disable Universal SSL and provide your own certificates, you’re welcome to do that too.Below are some additional details on CAA, the purpose of this record type, and how its use has evolved since it was first introduced. If you’d rather just jump to the details of our implementation, <a href="#caa-and-cloudflare">click here</a> and we’ll take you to the relevant section of the post.</p>
    <div>
      <h4>The Publicly-Trusted PKI Ecosystem — Abridged</h4>
      <a href="#the-publicly-trusted-pki-ecosystem-abridged">
        
      </a>
    </div>
    <p>Before diving into CAA it’s helpful to understand the purpose of a public key infrastructure (PKI). Quite simply, PKI is a framework that’s used to secure communications between parties over an insecure public network. In “web PKI”, the PKI system that’s used to secure communications between your web browser and this blog (for example), the TLS protocol is used with SSL certificates and private keys to protect against eavesdropping and tampering.</p><p>While TLS handles the sanctity of the connection, ensuring that nobody can snoop on or mess with HTTPS requests, how does your browser know it’s talking to the actual owner of blog.cloudflare.com and not some imposter? Anyone with access to OpenSSL or a similar tool can generate a certificate purporting to be valid for this hostname but fortunately your browser only trusts certificates issued (or “signed by”) by certain well-known parties.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/tTMIE50NuXq1J2phXhoPr/3d2d302cf9e84a7dbdf6e268f9b55360/illustration-ssl-certificate.png" />
            
            </figure><p>These well-known parties are known as certification authorities (CAs). The private and public key that form the certificate for <code>blog.cloudflare.com</code> were generated on Cloudflare hardware, but the stamp of approval—the signature—was placed on the certificate by a CA. When your browser receives this “leaf” certificate, it follows the issuer all the way to a “root” that it trusts, validating the signatures along the way and deciding whether to accept the certificate as valid for the requested hostname.</p><p>Before placing this stamp of approval, CAs are supposed to take steps to ensure that the certificate requester can demonstrate control over the hostname. (In some cases, as you’ll learn below, this is not always the case, and is one of the reasons that CAA was introduced.)</p>
    <div>
      <h4>Anthropogenic Threats</h4>
      <a href="#anthropogenic-threats">
        
      </a>
    </div>
    <p>Given that people are imperfect beings and prone to making mistakes or poor judgement calls, it should come to the surprise of no one that the PKI ecosystem has a fairly blemished track-record when it comes to maintaining trust. Clients, CAs, servers, and certificate requesters are all created or operated by people who have made mistakes.</p><p><i>Jurassic Park. 1993, Stephen Spielberg [Film] Universal Pictures.</i></p><p>Client providers have been known to <a href="https://en.wikipedia.org/wiki/Superfish">add compromising certificates to the local trust store</a> or <a href="/understanding-the-prevalence-of-web-traffic-interception/">install software to intercept secure connections</a>; servers have been demonstrated to <a href="/answering-the-critical-question-can-you-get-private-ssl-keys-using-heartbleed/">leak private keys</a> or <a href="/microsoft-tls-downgrade-schannel-bug/">be unable to properly rotate session ticket keys</a>; CAs have <a href="https://security.googleblog.com/2016/10/distrusting-wosign-and-startcom.html">knowingly mis-issued certificates</a> or <a href="https://security.googleblog.com/2017/09/chromes-plan-to-distrust-symantec.html">failed to validate hostname ownership or control reliably</a>; and individuals requesting certificates include phishers creating convincing imposter versions of popular domains and <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1332714">obtaining valid and trusted certificates</a>. Every party in this ecosystem is not completely without blame in contributing to a diminished sense of trust.</p><p>Of these many problems (most of which have already been addressed or are in the process of being resolved), perhaps the most unsettling is the willful mis-issuance of certificates by trusted CAs. Knowingly issuing certificates to parties who haven't demonstrated ownership, or issuance outside the parameters defined by the <a href="https://cabforum.org/about-us/">CA/Browser Forum</a> (a voluntary and democratic governing body for publicly-trusted certificates) by CAs who have certificates present in trust stores severely undermines the value of that trust store, all certificates issued by that CA, and the publicly-trusted PKI ecosystem as a whole.</p>
    <div>
      <h4>Solving One Problem...</h4>
      <a href="#solving-one-problem">
        
      </a>
    </div>
    <p>To help prevent future mis-issuance by publicly trusted CAs, a new DNS resource record was proposed by those CAs to help reduce the risk of certificate mis-issuance: The Certification Authority Authorization (CAA) Resource Record.</p><p>The general idea is that the owner of any given domain (e.g., example.com) would add CAA records at their authoritative DNS provider, specifying one or more CAs who are authorized to issue certificates for their domain.</p><p><a href="https://tools.ietf.org/html/rfc6844">RFC6844</a> currently specifies three property tags for CAA records: <code>issue</code>, <code>issuewild</code>, and <code>iodef</code>.</p><ul><li><p>The <code>issue</code> property tag specifies CAs who are authorized to issue certificates for a domain. For example, the record <code>example.com. CAA 0 issue "certification-authority.net"</code> allows the "Certification Authority" CA to issue certificates for example.com.</p></li><li><p>The <code>issuewild</code> property tag specifies CAs that are only allowed to issue certificates that specify a wildcard domain. E.g., the record <code>example.com. CAA 0 issuewild "certification-authority.net"</code> only allows the "Certification Authority" CA to issue certificates containing wildcard domains, such as <code>*.example.com</code>.</p></li><li><p>The <code>iodef</code> property tag specifies a means of reporting certificate issue requests or cases of certificate issuance for the corresponding domain that violate the security policy of the issuer or the domain name holder. E.g., the record <code>example.com. CAA 0 iodef "mailto:example@example.com"</code> instructs the issuing CA to send violation reports via email to the address provided at the attempted time of issuance.</p></li></ul><p>CAA records with the <code>issue</code> and <code>issuewild</code> tags are additive; if more than one are returned as the response for a <a href="https://www.cloudflare.com/learning/dns/what-is-dns/">DNS query</a> for a given hostname, the CAs specified in both records are both considered authorized.</p><p>If the authoritative DNS provider does not yet support CAA records or none are present in the zone file, the issuing CA is still authorized to issue when no records are present, largely preserving the issuance behavior before CAA records were an adopted standard.</p><p>As of 8 September 2017, all publicly-trusted CAs are now required to check CAA at issuance time for all certificates issued, thereby enabling certificate requestors (domain owners) to dictate which CAs can issue certificates for their domain.</p>
    <div>
      <h4>... with More Problems.</h4>
      <a href="#with-more-problems">
        
      </a>
    </div>
    <p>RFC6844 specifies a very curious CAA record processing algorithm:</p>
            <pre><code>The search for a CAA record climbs the DNS name tree from the
   specified label up to but not including the DNS root '.'.

   Given a request for a specific domain X, or a request for a wildcard
   domain *.X, the relevant record set R(X) is determined as follows:

   Let CAA(X) be the record set returned in response to performing a CAA
   record query on the label X, P(X) be the DNS label immediately above
   X in the DNS hierarchy, and A(X) be the target of a CNAME or DNAME
   alias record specified at the label X.

   o  If CAA(X) is not empty, R(X) = CAA(X), otherwise

   o  If A(X) is not null, and R(A(X)) is not empty, then R(X) =
      R(A(X)), otherwise

   o  If X is not a top-level domain, then R(X) = R(P(X)), otherwise

   o  R(X) is empty.</code></pre>
            <p>While the above algorithm is not easily understood at first, the example immediately following it is much easier to comprehend:</p>
            <pre><code>For example, if a certificate is requested for X.Y.Z the issuer will
   search for the relevant CAA record set in the following order:

      X.Y.Z

      Alias (X.Y.Z)

      Y.Z

      Alias (Y.Z)

      Z

      Alias (Z)

      Return Empty</code></pre>
            <p>In plain English, this means that if the owner of example.com requests a certificate for <code>test.blog.example.com</code>, the issuing CA must</p><ol><li><p>Query for a CAA record at <code>test.blog.example.com.</code>. If a CAA record exists for this hostname, the issuing CA stops checking for CAA records and issues accordingly. If no CAA record exists for this hostname and this hostname exists as an A or AAAA record, the CA then moves up the DNS tree to the next highest label.</p></li><li><p>Query for a CAA record at <code>blog.example.com.</code>. Just like the first check, if no CAA record exists for this hostname and this hostname exists as an A or AAAA record, the CA then continues traversing the DNS tree.</p></li><li><p>Query for a CAA record at <code>example.com.</code></p></li><li><p>Query for a CAA record at <code>com.</code></p></li></ol><p>At the end of the last step, the issuing CA has climbed the entire DNS tree (excluding the root) checking for CAA records. This functionality allows a domain owner to create CAA records at the root of their domain and have those records apply to any and all subdomains.</p><p>However, the CAA record processing algorithm has an additional check if the hostname exists as a CNAME (or DNAME) record. In this case, the issuing CA must also check the <b>target</b> of the CNAME record. Revisiting the example above for <code>test.blog.example.com.</code> where this hostname exists as a CNAME record, the issuing CA must</p><ol><li><p>Query for a CAA record at <code>test.blog.example.com.</code>. Since <code>test.blog.example.com.</code> exists as the CNAME <code>test.blog.example.com. CNAME test.blog-provider.net.</code>, the issuing CA must next check the target for the presence of a CAA record before climbing the DNS tree.</p></li><li><p>Query for a CAA record at <code>test.blog-provider.net.</code></p></li></ol><p>The issuing CA in this example is only at step two in the CAA processing algorithm and it has already come across two separate issues.</p><p>First, the issuing CA has checked the hostname requested on the certificate (<code>test.blog.example.com.</code>) and since that hostname exists as a CNAME record, it has also checked the target of that record (<code>test.blog-provider.net.</code>). However, if <code>test.blog-provider.net.</code> itself is also a CNAME record, the the CAA record processing algorithm states that the issuing CA must check the target of that CNAME as well.</p><p>In this case it is fairly simple to create a CNAME loop (or very long CNAME chain) either via an accidental misconfiguration or with malicious intent to prevent the issuing CA from completing the CAA check.</p><p>Second, <code>example.com</code> and <code>blog-provider.net</code> might not be owned and operated by the same entity or even exist in the same network. The RFC authors appear to be operating under the assumption that CNAME records are still used as they were in <a href="https://tools.ietf.org/html/rfc1034#3.6.2">November 1987</a>:</p><blockquote><p>A CNAME RR identifies its owner name as an alias, and specifies the corresponding canonical name in the RDATA section of the RR.</p></blockquote><p>This behavior may have been true thirty years ago, but consider the number and prevalence of SaaS providers in 2017; who truly is authoritative for the content addressed by a DNS record, the content creator (and likely <a href="https://www.cloudflare.com/learning/dns/glossary/what-is-a-domain-name/">domain name</a> owner who is using a CNAME) or the SaaS provider to whom the content creator subscribes?</p><p>Many if not all major service or application providers include clauses in their respective terms of service with regards to content added by the user to their account for the service. Intellectual property must be user-generated, properly licensed, or otherwise lawfully obtained. As content uploaded by users is difficult to control, liability limitations, indemnification, and service termination are all commonly used when the intellectual property added to the service is owned by another party, is unlawful, or is outside the definition of acceptable use. From a content perspective within the scope of a service provider's terms of service, it’s difficult to consider the service provider canonical for the content hosted there.</p><p>Using a real world example, there are currently 401,716 CNAME records in the zone files for domains on Cloudflare whose target is <code>ghs.google.com</code>. <a href="https://support.google.com/blogger/answer/58317?hl=en">This hostname</a> is given to subscribers of Google's Blogger service to use as the target of a CNAME so that a Blogger subscriber may use their own domain name in front of Google's service. With one CAA record, Google could dictate that nearly half a million blogs with a vanity domain name can only have one CA or no CAs issue certificates unless each of those hostnames created their own CAA records to allow issuance.</p><p>Even without following CNAMEs to their targets, the DNS climbing algorithm is not unproblematic. Operators of <a href="https://en.wikipedia.org/wiki/Top-level_domain">top-level domains</a> may decide that only certain issuing CAs are trustworthy or certain CAs are advantageous for business and create CAA records only allowing those CAs to issue. We already see this in action today with the pseudo-top level domain <a href="https://nl.eu.org/">nl.eu.org</a> which has the CAA record <code>nl.eu.org. CAA 0 issue "letsencrypt.org"</code>, which only allows issuance through Let's Encrypt without CAA records being present at the subdomains of <code>nl.eu.org</code>.</p><p>The authors of RFC6844 were also unwilling to secure their record and its use from any potential on-path attacks—</p><blockquote><p>Use of DNSSEC to authenticate CAA RRs is strongly RECOMMENDED but not required.</p></blockquote><p>Without DNSSEC, DNS responses are returned to the requestor in plain-text. Anyone in a privileged network position (a recursive DNS provider or ISP) could alter the response to a CAA query to allow or deny issuance as desired. As only about <a href="http://scoreboard.verisignlabs.com/">820,000</a> <code>.com</code> domain names out of the more than <a href="http://research.domaintools.com/statistics/tld-counts/">130 million</a> registered <code>.com</code> domain names are secured with DNSSEC, perhaps the low adoption rates influenced the decision to not make DNSSEC with CAA mandatory.</p><p>Moving beyond the RFC, the CA/Browser Forum's <a href="https://cabforum.org/wp-content/uploads/CA-Browser-Forum-BR-1.5.0.pdf">Baseline Requirements</a> (BR) attempt to clarify aspects regarding the behavior a CA should take when checking for CAA.</p><blockquote><p>CAs are permitted to treat a record lookup failure as permission to issue if:</p></blockquote><ul><li><p>the failure is outside the CA's infrastructure;</p></li><li><p>the lookup has been retried at least once; and</p></li><li><p>the domain's zone does not have a DNSSEC validation chain to the ICANN root</p></li></ul><p>Effectively, this means that if the CAA response is either a <code>SERVFAIL</code>, <code>REFUSED</code>, or the query times out, regardless of whether or not a CAA record exists, the CA is permitted to issue if this query fails more than once while attempting to issue a certificate. However, multiple CAs have told us that DNS lookup failures will prevent issuance regardless of the above conditions in the BR. In this case, something as benign as a transient network error could result in a denial of issuance or worse, any recursor that doesn’t understand and a query for CAA record will prevent issuance. We actually saw this with Comcast’s resolvers and reported the bug to their DNS provider.</p><p>There’s an additional security gap in that neither the RFC nor the BR indicate where the issuing CA should query for CAA records. It is acceptable within the current standards to query any DNS recursor for these records as well as the authoritative DNS provider for a domain. For example, an issuing CA could query <a href="https://www.cloudflare.com/cloudflare-vs-google-dns/">Google’s Public DNS</a> or a DNS recursor provided by their ISP for these responses. This enables compromised DNS recursors or one run by a rogue operator to alter these responses, either denying issuance or allowing issuance by a CA not approved by the domain owner. The RFC and BR should be amended so that an issuing CA must always query these records at the authoritative provider to close this gap.</p>
    <div>
      <h4>CAA and Cloudflare</h4>
      <a href="#caa-and-cloudflare">
        
      </a>
    </div>
    <p>As of today, CAA records are no longer in beta and all customers are able to add CAA records for their zones. This can be done in the DNS tab of the Cloudflare dashboard or via our <a href="https://api.cloudflare.com/#dns-records-for-a-zone-create-dns-record">API</a>.</p><p>When creating CAA records in the dashboard, an additional modal appears to help clarify the different CAA tag options and format the record correctly as an incorrectly formatted record would result in every CA not being able to issue a certificate.</p><p>Cloudflare is in a unique position to be able to complete SSL validation for a domain and have certificates issued on the domain owner's behalf. This is how Cloudflare is able to automatically provision and have our <a href="/introducing-universal-ssl/">Universal SSL</a> certificates issued for every domain active on Cloudflare for free.</p><p>Cloudflare partners with multiple CAs to issue certificates for our managed SSL products: Universal SSL, <a href="/dedicated-ssl-certificates/">Dedicated Certificates</a>, and <a href="/introducing-ssl-for-saas/">SSL for SaaS</a>. Since CAA record checking is now mandatory for publicly-trusted CAs, Cloudflare automatically adds the requisite CAA records to the zone when a user adds one or more CAA records in the Cloudflare dashboard for their domain in order to allow our partner CAs to continue to be able to issue certificates for each of our SSL products.</p><p>Some site owners may want to manage their own SSL certificates in order to be compliant with their own standard operating procedures or policies. Alternately, domain owners may only want to trust specific CAs that are not the CAs Cloudflare currently partners with to issue Universal SSL certificates. In the latter case, users now have the ability to disable Universal SSL.</p><p>When Universal SSL is disabled, the CAA records added to allow our partner CAs to issue certificates are deleted and all Universal SSL certificates available for the zone are removed from our edge. Dedicated certificates, custom certificates, as well as <a href="https://www.cloudflare.com/application-services/products/ssl-for-saas-providers/">SSL for SaaS certificates</a> are all individually managed by each customer and can be added or removed as needed.</p>
    <div>
      <h4>A Bright and Hopefully Not-Too-Distant Future</h4>
      <a href="#a-bright-and-hopefully-not-too-distant-future">
        
      </a>
    </div>
    <p>CAA as it exists today does very little to <a href="https://www.cloudflare.com/application-services/products/securitycenter/">reduce the attack surface</a> around certificate issuance while making it more difficult for well-intended parties to participate. That said, CAA is a young standard recently adopted by the web PKI community with many involved individuals as well as active parties working toward addressing some of the gaps present in the current RFC and committed to making the overall CAA experience better for both the certificate requesters and CAs.</p><p>To start, an <a href="https://www.rfc-editor.org/errata/eid5065">errata report</a> exists to clarify the CAA record processing algorithm and to reduce the degree in which the targets of CNAME records should be checked. Similarly, the DNS tree-climbing behavior of the CAA record processing algorithm is still <a href="https://mailarchive.ietf.org/arch/search/?email_list=spasm&amp;gbt=1&amp;index=QkL2PKWUadWpXBZULetCbk-9ViU">up for debate</a>. There are also <a href="https://mailarchive.ietf.org/arch/search/?email_list=spasm&amp;gbt=1&amp;index=ewf8iAv2cqS1_5ZmvfuK57goLYI">active discussions</a> around implementation issues, such as the recognition that some authoritative DNS resolvers incorrectly sign empty responses to CAA queries when DNSSEC is enabled for a zone and how to handle these cases in a way that would still allow CAs to issue. <a href="https://www.ietf.org/id/draft-hoffman-andrews-caa-simplification-02.txt">Proposals exist</a> suggesting new tags or property fields in CAA records, such as a CA requiring an account number in the property value for issue tags, or only allowing specific validation types (e.g., DV, OV, or EV). The Electronic Frontier Foundation (EFF) has expressed interest in hardening CAs against non-cryptographic attacks, particularly with a focus on the domain validation process for obtaining certificates. While not directly pertaining to CAA, any ideas or proposed hardening solutions might increase reliance on CAA or completely obviate the need for it altogether.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/35HzvskNIkHkztXA9Eq8fp/79076092e3540a211612ff53bc723d5b/standards.png" />
            
            </figure><p> <a href="https://creativecommons.org/licenses/by-nc/2.5/">CC BY-NC 2.5</a> by <a href="https://xkcd.com/about/">xkcd.com</a></p><p>As with all internet standards, none are perfect and all are far from permanent—CAA included. Being in the position to implement new standards at scale, seeing what effect adoption of those standards has, and working with the Internet community to address any issues or gaps is a privilege and allows us to live up to our mission of building a better Internet.</p><p>We're thrilled to be involved in efforts to make CAA (and any other standard) better for anyone and everyone.</p> ]]></content:encoded>
            <category><![CDATA[Product News]]></category>
            <category><![CDATA[SSL]]></category>
            <category><![CDATA[DNS]]></category>
            <category><![CDATA[Security]]></category>
            <category><![CDATA[TLS 1.3]]></category>
            <category><![CDATA[TLS]]></category>
            <category><![CDATA[Reliability]]></category>
            <category><![CDATA[Universal SSL]]></category>
            <category><![CDATA[Certificate Authority]]></category>
            <guid isPermaLink="false">3mWSshxk3v9PwoHKztcjAp</guid>
            <dc:creator>Max Nystrom</dc:creator>
        </item>
    </channel>
</rss>