
<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, 11 Apr 2026 08:48:06 GMT</lastBuildDate>
        <item>
            <title><![CDATA[Coalescing Connections to Improve Network Privacy and Performance]]></title>
            <link>https://blog.cloudflare.com/connection-coalescing-experiments/</link>
            <pubDate>Wed, 13 Oct 2021 12:59:25 GMT</pubDate>
            <description><![CDATA[ Real world experiments for evaluating connection coalescing effects. ]]></description>
            <content:encoded><![CDATA[ <p></p><p>Web pages typically have <a href="https://discuss.httparchive.org/t/whats-the-distribution-of-requests-per-page/21/10?u=patmeenan">a large number</a> of embedded subresources (e.g., JavaScript, CSS, image files, ads, beacons) that are fetched by a browser on page loads. Requests for these subresources can prompt browsers to perform further DNS lookups, TCP connections, and TLS handshakes, which can have a significant impact on how long it takes for the user to see the content and interact with the page. Further, each additional request exposes metadata (such as plaintext DNS queries, or unencrypted SNI in TLS handshake) which can have potential privacy implications for the user. With these factors in mind, we carried out a measurement study to understand how we can leverage <a href="https://daniel.haxx.se/blog/2016/08/18/http2-connection-coalescing/">Connection Coalescing</a> (aka <a href="https://datatracker.ietf.org/doc/html/rfc7540#section-9.1.1">Connection Reuse</a>) to address such concerns, and study its feasibility.</p>
    <div>
      <h3>Background</h3>
      <a href="#background">
        
      </a>
    </div>
    <p>The <a href="/http-3-from-root-to-tip/">web has come a long way</a> and initially consisted of very simple protocols. One of them was HTTP/1.0, which required browsers to make a separate connection for every subresource on the page. This design was quickly recognized as having significant performance bottlenecks and was extended with HTTP pipelining and persistent connections in <a href="https://datatracker.ietf.org/doc/html/rfc2616">HTTP/1.1 revision</a>, which allowed HTTP requests to reuse the same TCP connection. But, yet again, this was no silver bullet: while multiple requests could share the same connection, they still had to be serialized one after the other, so a client and server could only execute a single request/response exchange at any given time for each connection. As time passed, websites became more complex in structure and dynamic in nature, and HTTP/1.1 was identified as a major bottleneck. The only way to gain concurrency at the network layer was to use multiple TCP connections to the same origin in parallel, but this meant losing most benefits of persistent connections and ended up overloading the origin servers which were unable to meet the concurrency demand.</p><p>To address these performance limitations, the SPDY protocol was introduced over a decade later. SPDY supported stream multiplexing, where requests to and responses from the server used a single interleaved TCP connection, and allowed browsers to prioritize requests for critical subresources first — that were blocking page rendering. A modified variant of SPDY was standardized by the IETF as HTTP/2 in 2012 and published as <a href="https://datatracker.ietf.org/doc/html/rfc7540">RFC 7540</a> in 2015.</p><p>HTTP/2 and onwards retained this new standard for connection reuse. More specifically, all subresources on the same domain were able to reuse the same TCP/TLS (or UDP/QUIC) connection without any <a href="https://en.wikipedia.org/wiki/Head-of-line_blocking">head-of-line blocking</a> (at least on the application layer). This resulted in a single connection for all the subresources — reducing extraneous requests on page loads — potentially speeding up some websites and applications.</p><p>Interestingly, the protocol has a lesser-known feature to also enable subresources at <b><i>different</i></b><i> </i><b><i>hostnames</i></b> to be fetched over the <b><i>same</i></b> <b><i>connection</i></b>. We studied the real-world feasibility and benefits of this technique as an effort to improve users' experience for websites across our network.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/3tmFcDGsMhGlSKQ3XxEzHs/a10aa68acabb9004a4a25bf82ba9ddc9/image16-1.png" />
            
            </figure><p>Connection Coalescing allows reusing a TLS connection across different domains</p>
    <div>
      <h3>Connection Coalescing</h3>
      <a href="#connection-coalescing">
        
      </a>
    </div>
    <p>The <i>technique</i> is often referred to as <a href="https://daniel.haxx.se/blog/2016/08/18/http2-connection-coalescing/">Connection Coalescing</a> and, to put it simply, is a way to access resources from <i>different hostnames that are accessible from the same web server</i>.</p><p>There are several reasons for why a single server could handle requests for different hosts, ranging from low-cost virtual hosting to the usage of <a href="https://www.cloudflare.com/learning/cdn/what-is-a-cdn/">CDNs</a> and cloud providers (including Cloudflare, that acts as a reverse proxy for approximately <a href="https://www.cloudflare.com/learning/what-is-cloudflare/">25 million Internet properties</a>). Before going into the technical conditions required to enable connection coalescing, we should take a look at some benefits such a strategy can provide.</p><ul><li><p><b>Privacy</b>. When resources at different hostnames are loaded via separate TLS connections, those connections expose metadata to ISPs and other observers via the Server Name Indicator (SNI) field about the destinations that are being contacted (i.e., in the absence of <a href="/esni/">encrypted SNI</a>). This set of exposed SNI’s can allow an on-path adversary to fingerprint traffic and possibly determine user interactions on the webpage. On the other hand, coalesced requests for more than one hostname on a single connection exposes only <b>one</b> destination, and helps avoid such threats.</p></li><li><p><b>Performance</b>. Additional TLS handshakes and TCP connections can incur significant <a href="/how-expensive-is-crypto-anyway/">costs in terms of cpu, memory and other resources</a>. Thus, coalescing requests to use the same connection can optimize resource utilization.</p></li><li><p><b>Resource Prioritization.</b> Multiplexing requests on a single connection means that applications have better visibility and more direct control over how related <a href="/better-http-2-prioritization-for-a-faster-web/">resources are prioritized and scheduled</a>. In the absence of coalescing, the network properties (for example, route congestion) can interfere with the intended order of delivery for resources. This reliability gained through connection coalescing opens up new optimization opportunities to improve web page load times, among other things.</p></li></ul><p>However, along with all these potential benefits, connection coalescing also has some associated risk factors that need to be considered in practice. First, TCP incorporates “fair” congestion control mechanisms — if there are ten connections on the same route, each gets approximately 1/10th of the total bandwidth. So with a route congested and bandwidth restricted, a client relying on <i>multiple connections</i> might be better off (for example, if they have five of the ten connections, their total share of bandwidth would be half). Second, browsers will use different parallelization routines for scheduling requests on multiple connections versus the same connection — it is not immediately clear whether the former or latter would perform better. Third, multiple connections exhibit an inherent form of load balancing for TLS-termination processes. That’s because multiple requests on the same connection must be answered by the same TLS-termination process that holds the session keys (often on the same physical server). So, it is important to study connection coalescing carefully before rolling it out widely.</p><p>With this context in mind, we studied the feasibility of connection coalescing on real-world traffic. More specifically, the two questions we wanted to answer were(a) can we empirically demonstrate and quantify the theoretical benefits of connection coalescing?, and (b) could coalescing cause unintended side effects, such as performance degradation, due to the risks highlighted above?</p><p>In order to answer these questions, we first made the observation that a large number of Cloudflare customers request subresources from <a href="/an-update-on-cdnjs/">cdnjs</a> — which is also powered by Cloudflare. For context, <a href="https://cdnjs.cloudflare.com/">cdnjs</a> has public JavaScript and CSS libraries (like <a href="https://jquery.com/">jQuery</a>), and is used by <a href="https://w3techs.com/technologies/details/cd-cdnjs"><i>more than 12%</i></a> <i>of all websites on the Internet</i>. One popular way these websites include resources from cdnjs is by using <code>&lt;script src="https://cdnjs.cloudflare.com/..." &gt;&lt;/script&gt;</code> HTML tags. But there are other ways as well, such as the usage of <a href="https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest">XMLHttpRequest</a> or <a href="https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API">Fetch</a> APIs. Regardless of the way these resources are included, browsers will need to fetch them for completely loading a website.</p><p>We then identified a list of approximately four thousand websites using Cloudflare (on the <a href="https://www.cloudflare.com/plans/free/">Free plan</a>) that likely used cdnjs. We divided this list of sites into evenly-sized and randomly-picked <i>control</i> and <i>experiment</i> groups. Our plan was to enable coalescing only for the <i>experiment</i> group, so that subresource requests generated from their web pages for cdnjs could reuse existing connections. In this way, we were able to compare results obtained on the <i>experiment</i> group, with the ones for the <i>control</i> group, and attribute any differences observed to connection coalescing.</p><p>In order to signal browsers that the requests can be coalesced, we served cdnjs and the sites from the same IP address in a few regions around the world. This meant the same DNS responses for all the zones that were part of the study — eventually load balanced by our Anycast network. These sites also had TLS certificates that included cdnjs.</p><p>The above two conditions (same IP and compatible certificate) are required to achieve coalescing as per the <a href="https://datatracker.ietf.org/doc/html/rfc7540#section-9.1.1">HTTP/2 spec</a>. However, the <a href="https://datatracker.ietf.org/doc/html/draft-ietf-quic-http-29#section-3.4">QUIC spec</a> allows coalescing even if only the second condition is met. Major web browsers are <a href="https://mailarchive.ietf.org/arch/msg/quic/0nqKySdzmXK6CwZ9dKfD5GsQgqE/">yet to adopt the QUIC coalescing mechanism</a>, and currently use only the HTTP/2 coalescing logic for both protocols.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6qIQMnxndHLQGdhdmswsxg/da3ba47675985dd6ada032432a9de12e/image14-1.png" />
            
            </figure><p>Requests to Experiment Group Zones and cdnjs being coalesced on the same TLS connection</p>
    <div>
      <h3>Results</h3>
      <a href="#results">
        
      </a>
    </div>
    <p>We started noticing evidence of real-world coalescing from the day our experiment was launched. The following graph shows that approximately 50% of requests to cdnjs from our experiment group sites are coalesced (i.e., their TLS SNI does not equal cdnjs) as compared to 0% of requests from the control group sites.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/A3Z2xGpVTKtXr05t6Vzkd/4f259113d184d2d3b71786e65f805bb3/image2-21.png" />
            
            </figure><p>Coalesced Requests to cdnjs from Control and Experimental Group Zones</p><p>In addition, we conducted active measurements using our private <a href="https://webpagetest.org/">WebPageTest</a> instances at the landing pages of <i>experiment</i> and <i>control</i> sites — using the two well-supported browsers: Google Chrome and Firefox. From our results, Chrome created about 78% fewer TLS connections to cdnjs for our <i>experiment</i> group sites, as compared to the <i>control</i> group. But surprisingly, Firefox created just roughly 22% fewer connections. As TLS handshakes are computationally expensive because they involve cryptographic signatures and key exchange algorithms, fewer handshakes meant less CPU cycles spent by both the client and the server.</p><p>Upon further analysis, we were able to make two observations from the data:</p><ul><li><p>A fraction of sites that never coalesced connections with either browser appeared to load subresources with <a href="https://www.google.com/search?q=CORS&amp;rlz=1C5AVSZ_enUS817US817&amp;oq=CORS&amp;aqs=chrome..69i57j0i433i512j46i199i433i465i512j46i433i512j0i131i433i512j0i433i512j0i512j0i131i433i457j46i433i512j0i433i512.151j0j7&amp;sourceid=chrome&amp;ie=UTF-8">CORS</a> enabled (i.e., <code>&lt;script src="https://cdnjs.cloudflare.com/..." integrity="sha512-894Y..." **crossorigin="anonymous"**&gt;</code>). This is the default way cdnjs recommends inclusion of subresources, as CORS is needed for <a href="https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity">integrity checks</a> that provide substantial mitigations against script-manipulation attacks. We do not recommend removing this attribute. Our testing also revealed that using <a href="https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest">XMLHttpRequest</a> or <a href="https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API">Fetch</a> APIs to load subresources disabled coalescing as well. It is unclear why browsers choose to not coalesce such connections, and we are in contact with the vendors to find out.</p></li><li><p>Although both Firefox and Chrome coalesced requests for cdnjs on existing connections, the reason for the discrepancy in the number of TLS connections to cdnjs (approximately 78% vs roughly 22%) is because Firefox appears to open new connections even if it does not end up using them.</p></li></ul><p>After evaluating the potential benefits of coalescing, we wanted to understand if coalescing caused any unintended side effects. Hence, the final measurement we conducted was to check whether our experiments were detrimental to a website’s performance. We tracked <a href="/start-measuring-web-vitals-with-browser-insights/">Page Load Times (PLT) and Largest Contentful Paint (LCP)</a> across a variety of stimulated network conditions using both Chrome and Firefox and found the results for experiment vs control group to <i>not</i> be statistically significant.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/3mqWfurrAFY6NrvUrO067u/1c55d30632a9bfff09d3592508d7f8e2/image3-19.png" />
            
            </figure><p>Page load times for control and experiment group sites. Each site was loaded once, and the “<i>fullyLoaded</i>” metric from WebPageTest is reported</p>
    <div>
      <h3>Conclusion</h3>
      <a href="#conclusion">
        
      </a>
    </div>
    <p>We consider our experimentation successful in determining the feasibility of connection coalescing and highlighting its potential benefits in terms of privacy and performance. More specifically, we observed the privacy benefits of coalescing in more than 50% of requests to cdnjs from real-world traffic. In addition, our active testing demonstrated that browsers create fewer TLS connections with coalescing enabled. Interestingly, our results also revealed that the benefits might not always occur (i.e., CORS-enabled requests, Firefox creating additional TLS connections despite coalescing). Finally, we did not find any evidence that coalescing can cause harm to real-world users’ experience on the Internet.</p><p>Some future directions we would like to explore include:</p><ul><li><p>More aggressive connection reuse with multiple hostnames, while identifying conditions most suitable for coalescing.</p></li><li><p>Understanding how different connection reuse methods compare, e.g., IP-based coalescing vs. use of <a href="https://datatracker.ietf.org/doc/html/rfc8336">Origin Frames</a>, and what effects do they have on user experience over the Internet.</p></li><li><p>Evaluating coalescing support among different browser vendors, and encouraging adoption of HTTP/3 QUIC based coalescing.</p></li><li><p>Reaping the full benefits of connection coalescing by experimenting with custom priority schemes for requests within the same connection.</p></li></ul><p>Please send questions and feedback to <a>ask-research@cloudflare.com</a>. We’re excited to continue this line of work in our effort to help build a better Internet! For those interested in joining our team please visit our <a href="https://www.cloudflare.com/careers/jobs/?department=Technology%20Research&amp;location=default">Careers Page</a>.</p> ]]></content:encoded>
            <category><![CDATA[Research]]></category>
            <category><![CDATA[Privacy]]></category>
            <category><![CDATA[Performance]]></category>
            <category><![CDATA[Browser Insights]]></category>
            <category><![CDATA[Better Internet]]></category>
            <category><![CDATA[CDNJS]]></category>
            <guid isPermaLink="false">3oUA8RgBt2s0bO1exBJegm</guid>
            <dc:creator>Talha Paracha</dc:creator>
            <dc:creator>Suleman Ahmad</dc:creator>
        </item>
        <item>
            <title><![CDATA[Introducing SSL/TLS Recommender]]></title>
            <link>https://blog.cloudflare.com/ssl-tls-recommender/</link>
            <pubDate>Tue, 12 Oct 2021 13:01:00 GMT</pubDate>
            <description><![CDATA[ Introducing customized recommendations to improve the security of your website. ]]></description>
            <content:encoded><![CDATA[ <p></p><p>Seven years ago, Cloudflare made HTTPS availability for any Internet property easy and free with <a href="/introducing-universal-ssl/">Universal SSL</a>. At the time, few websites — other than those that processed sensitive data like passwords and credit card information — were using HTTPS because of how difficult it was to set up.</p><p>However, as we all started using the Internet for more and more private purposes (communication with loved ones, financial transactions, shopping, healthcare, etc.) the need for encryption became apparent. Tools like <a href="https://en.wikipedia.org/wiki/Firesheep">Firesheep</a> demonstrated how easily attackers could snoop on people using public Wi-Fi networks at coffee shops and airports. The <a href="https://blog.cryptographyengineering.com/2019/09/24/looking-back-at-the-snowden-revelations/">Snowden revelations</a> showed the ease with which governments could listen in on unencrypted communications at scale. We have seen attempts by browser vendors to increase HTTPS adoption such as the <a href="https://blog.chromium.org/2021/07/increasing-https-adoption.html">recent announcement by Chromium</a> for loading websites on HTTPS by default. Encryption has become a vital part of the modern Internet, not just to keep your information safe, but to keep you safe.</p><p>When it was launched, Universal SSL <a href="/introducing-universal-ssl/">doubled</a> the number of sites on the Internet using HTTPS. We are building on that with <a href="https://developers.cloudflare.com/ssl/origin-configuration/ssl-tls-recommender">SSL/TLS Recommender</a>, a tool that guides you to stronger configurations for the backend connection from Cloudflare to origin servers. Recommender has been available in the SSL/TLS tab of the Cloudflare dashboard since August 2020 for self-serve customers. Over 500,000 zones are currently signed up. <b>As of today, it is available for all customers!</b></p>
    <div>
      <h2>How Cloudflare connects to origin servers</h2>
      <a href="#how-cloudflare-connects-to-origin-servers">
        
      </a>
    </div>
    <p>Cloudflare operates as a reverse proxy between clients (“visitors”) and customers’ web servers (“origins”), so that Cloudflare can protect origin sites from attacks and improve site performance. This happens, in part, because visitor requests to websites proxied by Cloudflare are processed by an “edge” server located in a data center close to the client. The edge server either responds directly back to the visitor, if the requested content is cached, or creates a new request to the origin server to retrieve the content.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/oClT8gZN3TtQjhYiJr464/642f9cba63b4f5489ed8d60274238e3c/image6-12.png" />
            
            </figure><p>The backend connection to the origin can be made with an unencrypted HTTP connection or with an HTTPS connection where requests and responses are encrypted using the <a href="https://www.cloudflare.com/learning/ssl/transport-layer-security-tls/">TLS</a> protocol (historically known as <a href="https://www.cloudflare.com/learning/ssl/what-is-ssl/">SSL</a>). HTTPS is the secured form of HTTP and should be used <a href="https://www.cloudflare.com/learning/ssl/why-is-http-not-secure/">whenever possible</a> to avoid leaking information or allowing content tampering by third-party entities. The origin server can further authenticate itself by presenting a valid <a href="https://www.cloudflare.com/application-services/products/ssl/">TLS certificate</a> to prevent active <a href="/monsters-in-the-middleboxes/">monster-in-the-middle</a> attacks. Such a certificate can be obtained from a certificate authority such as <a href="https://letsencrypt.org/">Let’s Encrypt</a> or <a href="https://developers.cloudflare.com/ssl/origin-configuration/origin-ca">Cloudflare’s Origin CA</a>. Origins can also set up <a href="https://developers.cloudflare.com/ssl/origin-configuration/authenticated-origin-pull">authenticated origin pull</a>, which ensures that any HTTPS requests outside of Cloudflare will not receive a response from your origin.</p><p><a href="/tunnel-for-everyone/">Cloudflare Tunnel</a> provides an even more secure option for the connection between Cloudflare and origins. With Tunnel, users run a lightweight daemon on their origin servers that proactively establishes secure and private tunnels to the nearest Cloudflare data centers. With this configuration, users can completely lock down their origin servers to only receive requests routed through Cloudflare. While we encourage customers to set up tunnels if feasible, it's important to encourage origins with more traditional configurations to adopt the strongest possible security posture.</p>
    <div>
      <h3>Detecting HTTPS support</h3>
      <a href="#detecting-https-support">
        
      </a>
    </div>
    <p>You might wonder, why doesn’t Cloudflare always connect to origin servers with a secure TLS connection? To start, some origin servers have no TLS support at all (for example, certain <a href="https://community.letsencrypt.org/t/web-hosting-who-support-lets-encrypt/6920">shared hosting providers</a> and even <a href="https://kurti.sh/pubs/IMC_2020___Long_Tail_of_the_Internet.pdf">government sites</a> have been slow adopters) and rely on Cloudflare to ensure that the client request is at least encrypted over the Internet from the browser to Cloudflare’s edge.</p><p>Then why don’t we simply probe the origin to determine if TLS is supported? It turns out that many sites only <i>partially</i> support HTTPS, making the problem non-trivial. A single customer site can be served from multiple separate origin servers with differing levels of TLS support. For instance, some sites support HTTPS on their landing page but serve certain resources only over unencrypted HTTP. Further, site content can differ when accessed over HTTP versus HTTPS (for example, <a href="http://example.com">http://example.com</a> and <a href="https://example.com">https://example.com</a> can return different results).</p><p>Such content differences can arise due to misconfiguration on the origin server, accidental mistakes by developers when migrating their servers to HTTPS, or can even be intentional depending on the use case.</p><p>A <a href="https://www.cs.umd.edu/~dml/papers/https_tma20.pdf">study</a> by researchers at Northeastern University, the Max Planck Institute for Informatics, and the University of Maryland highlights reasons for some of these inconsistencies. They found that 1.5% of surveyed sites had at least one page that was unavailable over HTTPS — despite the protocol being supported on other pages — and 3.7% of sites served different content over HTTP versus HTTPS for at least one page. Thus, always using the most secure TLS setting detected on a particular resource could result in unforeseen side effects and usability issues for the entire site.</p><p>We wanted to tackle all such issues and maximize the number of TLS connections to origin servers, but without compromising a website’s functionality and performance.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/J0sdbGlU6cKVkaWJaR6nC/d98d243ee7d890676ba86a41a85d4d74/Screenshot-2021-10-11-at-16.17.39.png" />
            
            </figure><p>Content differences on sites when loaded over HTTPS vs HTTP; images taken from <a href="https://www.cs.umd.edu/~dml/papers/https_tma20.pdf">https://www.cs.umd.edu/~dml/papers/https_tma20.pdf</a> with author permission</p>
    <div>
      <h3>Configuring the SSL/TLS encryption mode</h3>
      <a href="#configuring-the-ssl-tls-encryption-mode">
        
      </a>
    </div>
    <p>Cloudflare relies on customers to indicate the level of TLS support at their origins via the zone’s <a href="https://developers.cloudflare.com/ssl/origin-configuration/ssl-modes">SSL/TLS encryption mode</a>. The following SSL/TLS encryption modes can be configured from the Cloudflare dashboard:</p><ul><li><p><b>Off</b> indicates that client requests reaching Cloudflare as well as Cloudflare’s requests to the origin server should only use unencrypted HTTP. This option is never recommended, but is still in use by a handful of customers for legacy reasons or testing.</p></li><li><p><b>Flexible</b> allows clients to connect to Cloudflare’s edge via HTTPS, but requests to the origin are over HTTP only. This is the most common option for origins that do not support TLS. However, we encourage customers to upgrade their origins to support TLS whenever possible and only use <b>Flexible</b> as a <b>last resort</b>.</p></li><li><p><b>Full</b> enables encryption for requests to the origin when clients connect via HTTPS, but Cloudflare <i>does not attempt to validate the certificate</i>. This is useful for origins that have a self-signed or otherwise invalid certificate at the origin, but leaves open the possibility for an active attacker to impersonate the origin server with a fake certificate. Client HTTP requests result in HTTP requests to the origin.</p></li><li><p><b>Full (strict)</b> indicates that Cloudflare should validate the origin certificate to fully secure the connection. The origin certificate can either be issued by a public CA or by <a href="https://developers.cloudflare.com/ssl/origin-configuration/origin-ca">Cloudflare Origin CA</a>. HTTP requests from clients result in HTTP requests to the origin, exactly the same as in <b>Full</b> mode. We <b>strongly</b> recommend <b>Full (strict)</b> over weaker options if supported by the origin.</p></li><li><p><b>Strict (SSL-Only Origin Pull)</b> causes all traffic to the origin to go over HTTPS, even if the client request was HTTP. This differs from <b>Full (strict)</b> in that HTTP client requests will result in an <i>HTTPS</i> request to the origin, not HTTP. Most customers do not need to use this option, and it is available only to Enterprise customers. The preferred way to ensure that no HTTP requests reach your origin is to enable <a href="/how-to-make-your-site-https-only/">Always Use HTTPS</a> in conjunction with <b>Full</b> or <b>Full (strict)</b> to redirect visitor HTTP requests to the HTTPS version of the content.</p></li></ul>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6aX0Vn2QoaVooEamreEEha/0d8e29a895c9409b2ba7a3fd7bfb950f/image3-17.png" />
            
            </figure><p>SSL/TLS encryption modes determine how Cloudflare connects to origins</p><p>The SSL/TLS encryption mode is a zone-wide setting, meaning that Cloudflare applies the same policy to all subdomains and resources. If required, you can configure this setting more granularly via <a href="https://support.cloudflare.com/hc/en-us/articles/218411427-Understanding-and-Configuring-Cloudflare-Page-Rules-Page-Rules-Tutorial-">Page Rules</a>. Misconfiguring this setting can make site resources unavailable. For instance, suppose your website loads certain assets from an HTTP-only subdomain. If you set your zone to <b>Full</b> or <b>Full (strict)</b>, you might make these assets unavailable for visitors that request the content over HTTPS, since the HTTP-only subdomain lacks HTTPS support.</p>
    <div>
      <h3>Importance of secure origin connections</h3>
      <a href="#importance-of-secure-origin-connections">
        
      </a>
    </div>
    <p>When an end-user visits a site proxied by Cloudflare, there are two connections to consider: the front-end connection between the visitor and Cloudflare and the back-end connection between Cloudflare and the customer origin server. The front-end connection typically presents the largest attack surface (for example, think of the classic example of an attacker snooping on a coffee shop’s Wi-Fi network), but securing the back-end connection is equally important. While all SSL/TLS encryption modes (except <b>Off</b>) secure the front-end connection, less secure modes leave open the possibility of malicious activity on the backend.</p><p>Consider a zone set to <b>Flexible</b> where the origin is connected to the Internet via an untrustworthy ISP. In this case, spyware deployed by the customer’s ISP in an on-path middlebox could inspect the plaintext traffic from Cloudflare to the origin server, potentially resulting in privacy violations or leaks of confidential information. Upgrading the zone to <b>Full</b> or a stronger mode to encrypt traffic to the ISP would help prevent this basic form of snooping.</p><p>Similarly, consider a zone set to <b>Full</b> where the origin server is hosted in a shared hosting provider facility. An attacker colocated in the same facility could generate a fake certificate for the origin (since the certificate isn’t validated for <b>Full</b>) and deploy an attack technique such as <a href="https://en.wikipedia.org/wiki/ARP_spoofing">ARP spoofing</a> to direct traffic intended for the origin server to an attacker-owned machine instead. The attacker could then leverage this setup to inspect and filter traffic intended for the origin, resulting in site breakage or content unavailability. The attacker could even inject malicious JavaScript into the response served to the visitor to carry out other nefarious goals. Deploying a valid Cloudflare-trusted certificate on the origin and configuring the zone to use <b>Full (strict)</b> would prevent Cloudflare from trusting the attacker’s fake certificate in this scenario, preventing the <a href="https://www.cloudflare.com/learning/dns/what-is-domain-hijacking/">hijack</a>.</p><p>Since a secure backend only improves your <a href="https://www.cloudflare.com/learning/security/how-to-secure-a-website/">website security</a>, we strongly encourage setting your zone to the highest possible SSL/TLS encryption mode whenever possible.</p>
    <div>
      <h3>Balancing functionality and security</h3>
      <a href="#balancing-functionality-and-security">
        
      </a>
    </div>
    <p>When Universal SSL was launched, Cloudflare’s goal was to get as many sites away from the status quo of HTTP as possible. To accomplish this, Cloudflare provisioned TLS certificates for all customer domains to secure the connection between the browser and the edge. Customer sites that did not already have TLS support were defaulted to <b>Flexible,</b> to preserve existing site functionality. Although <b>Flexible</b> is <b>not recommended</b> for most zones, we continue to support this option as some Cloudflare customers still rely on it for origins that do not yet support TLS. Disabling this option would make these sites unavailable. Currently, the default option for newly onboarded zones is <b>Full</b> if we detect a TLS certificate on the origin zone, and <b>Flexible</b> otherwise.</p><p>Further, the SSL/TLS encryption mode configured at the time of zone sign-up can become suboptimal as a site evolves. For example, a zone might switch to a hosting provider that supports origin certificate installation. An origin server that is able to serve all content over TLS should at least be on <b>Full</b>. An origin server that has a valid TLS certificate installed should use <b>Full (strict)</b> to ensure that communication between Cloudflare and the origin server is not susceptible to monster-in-the-middle attacks.</p><p>The Research team combined lessons from academia and our engineering efforts to make encryption easy, while ensuring the highest level of security possible for our customers. Because of that goal, we’re proud to introduce SSL/TLS Recommender.</p>
    <div>
      <h2>SSL/TLS Recommender</h2>
      <a href="#ssl-tls-recommender">
        
      </a>
    </div>
    <p>Cloudflare’s mission is to help build a better Internet, and that includes ensuring that requests from visitors to our customers’ sites are as secure as possible. To that end, we began by asking ourselves the following question: how can we detect when a customer is able to use a more secure SSL/TLS encryption mode without impacting site functionality?</p><p>To answer this question, we built the <a href="https://developers.cloudflare.com/ssl/origin-configuration/ssl-tls-recommender">SSL/TLS Recommender</a>. Customers can enable Recommender for a zone via the SSL/TLS tab of the Cloudflare dashboard. Using a zone’s currently configured SSL/TLS option as the baseline for expected site functionality, the Recommender performs a series of checks to determine if an upgrade is possible. If so, we email the zone owner with the recommendation. If a zone is currently misconfigured — for example, an HTTP-only origin configured on <b>Full</b> — Recommender will not recommend a downgrade.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/3nc5iSzjUtxNTAjNF0g8Kz/619643b0edcc9019e001a551206efcc5/image9-8.png" />
            
            </figure><p>The checks that Recommender runs are determined by the site’s currently configured SSL/TLS option.</p><p>The simplest check is to determine if a customer can upgrade from <b>Full</b> to <b>Full (strict)</b>. In this case, all site resources are already served over HTTPS, so the check comprises a few simple tests of the validity of the TLS certificate for the domain and all subdomains (which can be on separate origin servers).</p><p>The check to determine if a customer can upgrade from <b>Off</b> or <b>Flexible</b> to <b>Full</b> is more complex. A site can be upgraded if all resources on the site are available over HTTPS and the content <i>matches</i> when served over HTTP versus HTTPS. Recommender carries out this check as follows:</p><ul><li><p>Crawl customer sites to collect links. For large sites where it is impractical to scan every link, Recommender tests only a subset of links (up to some threshold), leading to a trade-off between performance and potential false positives. Similarly, for sites where the crawl turns up an insufficient number of links, we augment our results with a sample of links from recent visitors requests to the zone to provide a high-confidence recommendation. The crawler uses the user agent <i>Cloudflare-SSLDetector</i> and has been added to Cloudflare’s list of <a href="https://developers.cloudflare.com/firewall/known-issues-and-faq#bots-currently-detected">known good bots</a>. Similar to <a href="https://developers.cloudflare.com/cache/about/always-online">other Cloudflare crawlers</a>, Recommender ignores robots.txt (except for rules explicitly targeting the crawler’s user agent) to avoid negatively impacting the accuracy of the recommendation.</p></li><li><p>Download the content of each link over both HTTP and HTTPS. Recommender makes only idempotent GET requests when scanning origin servers to avoid modifying server resource state.</p></li><li><p>Run a content similarity algorithm to determine if the content matches. The algorithm is adapted from a research paper called "<a href="https://www.cs.umd.edu/~dml/papers/https_tma20.pdf">A Deeper Look at Web Content Availability and Consistency over HTTP/S</a>" (TMA Conference 2020) and is designed to provide an accurate similarity score even for sites with dynamic content.</p></li></ul><p>Recommender is conservative with recommendations, erring on the side of maintaining current site functionality rather than risking breakage and usability issues. If a zone is non-functional, the zone owner blocks all types of bots, or if misconfigured SSL-specific Page Rules are applied to the zone, then Recommender will not be able to complete its scans and provide a recommendation. Therefore, it is not intended to resolve issues with website or domain functionality, but rather maximize your zone’s security when possible.</p><p>Please send questions and feedback to <a>ask-research@cloudflare.com</a>. We’re excited to continue this line of work to improve the security of customer origins!</p>
    <div>
      <h2>Mentions</h2>
      <a href="#mentions">
        
      </a>
    </div>
    <p>While this work is led by the Research team, we have been extremely privileged to get support from all across the company!</p><p>Special thanks to the incredible team of interns that contributed to SSL/TLS Recommender. Suleman Ahmad (now full-time), Talha Paracha, and Ananya Ghose built the current iteration of the project and Matthew Bernhard helped to lay the groundwork in a previous iteration of the project.</p> ]]></content:encoded>
            <category><![CDATA[Research]]></category>
            <category><![CDATA[Security]]></category>
            <category><![CDATA[SSL]]></category>
            <category><![CDATA[TLS]]></category>
            <category><![CDATA[Product News]]></category>
            <guid isPermaLink="false">6WBTTN7lG2fbQfdx6Z4eq8</guid>
            <dc:creator>Suleman Ahmad</dc:creator>
            <dc:creator>Talha Paracha</dc:creator>
            <dc:creator>Luke Valenta</dc:creator>
        </item>
    </channel>
</rss>