<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Let&#39;s Encrypt</title>
    <link>https://letsencrypt.org/</link>
    <description>Let&#39;s Encrypt is a free, automated, and open Certificate Authority brought to you by the nonprofit &lt;a href=&#34;https://www.abetterinternet.org/&#34;&gt;Internet Security Research Group (ISRG)&lt;/a&gt;. Read all about our nonprofit work this year in our &lt;a href=&#34;https://www.abetterinternet.org/annual-reports/&#34;&gt;2025 Annual Report&lt;/a&gt;.
</description>
    <language>en-US</language>
    <lastBuildDate>Tue, 17 Mar 2026 00:00:00 +0000</lastBuildDate>
    <generator>Hugo v0.148.2</generator>
    <atom:link href="https://letsencrypt.org/feed.xml" rel="self" type="application/rss+xml" />
      <item>
        <title>Simplifying Certificate Renewals for Millions of Domains with ACME Renewal Information (ARI)</title>
        <link>https://letsencrypt.org/2026/03/17/acme-renewal-information-ari.html</link>
        <pubDate>Tue, 17 Mar 2026 00:00:00 +0000</pubDate>
        <description><![CDATA[<blockquote>
<p>Nick Silverman is a Senior Infrastructure Engineer on the Edge Infrastructure team at Shopify, where he maintains the systems that provision, renew, and publish SSL certificates for millions of merchants&rsquo; custom domains. He is also a contributor to the Ruby acme-client gem.</p></blockquote>
<h3 id="the-challenge">The challenge</h3>
<p>Shopify&rsquo;s automated certificate management system relied on a static renewal threshold: 30 days before the end of the 90-day lifetime. To spread the load of provisioning and renewing certificates, we implemented a random 0&ndash;72 hour delay for each. While this helps evenly distribute certificate management over time, it did not take into account the Certificate Authority&rsquo;s (CA) load. It was also incapable of reacting to a dynamic renewal window based on information provided by the CA.</p>
<p>However, this approach needed greater resilience to solve what is, in the end, a distributed coordination problem. The weaknesses are:</p>
<ul>
<li>
<p><strong>No rapid revocation response:</strong> The static logic is not aware of revocations at all.</p>
</li>
<li>
<p><strong>Brittleness to lifetime changes:</strong> The static 30-day threshold is not resilient to changes in certificate lifetime, such as <a href="/2025/12/02/from-90-to-45">Let&rsquo;s Encrypt&rsquo;s announced plan to move to 45-day certificates.</a></p>
</li>
<li>
<p><strong>Imperfect load distribution:</strong> Despite the random jitter, massive renewal bursts could still occur.</p>
</li>
</ul>
<p>Shopify needed to develop a global coordination system to balance the load and handle regular and urgent renewals. Thankfully, Let&rsquo;s Encrypt has led the charge on a solution for this and other very important aspects of the certificate lifecycle.</p>
<h3 id="the-journey">The journey</h3>
<p>Let&rsquo;s Encrypt and the Internet Engineering Task Force (IETF) published the <a href="/2025/09/16/ari-rfc">ACME Renewal Information (ARI)</a> standard which makes an endpoint available that provides a recommended window of time for the renewal to occur. The endpoint returns a payload that looks something like this:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">GET /renewal-info/ACME_KEY_IDENTIFIER
</span></span><span class="line"><span class="cl"><span class="o">{</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;suggestedWindow&#34;</span>: <span class="o">{</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;start&#34;</span>: <span class="s2">&#34;2026-02-03T04:00:00Z&#34;</span>,
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;end&#34;</span>: <span class="s2">&#34;2026-02-04T04:00:00Z&#34;</span>
</span></span><span class="line"><span class="cl">  <span class="o">}</span>
</span></span><span class="line"><span class="cl"><span class="o">}</span>
</span></span></code></pre></div><p>Shopify&rsquo;s certificate management system uses the <a href="https://github.com/unixcharles/acme-client">acme-client</a> Ruby gem originally authored by another Shopify employee. A growing number of ACME clients, including <a href="https://certbot.eff.org/">certbot</a>, have enabled support for ARI, but the Ruby gem did not yet support this feature. Rather than building a custom solution, we decided to enable support for the ARI extension directly in the client.</p>
<p>Let&rsquo;s Encrypt&rsquo;s <a href="/2024/04/25/guide-to-integrating-ari-into-existing-acme-clients">guide to integrating ARI</a> provided the necessary roadmap, and the implementation was completed with <a href="https://github.com/unixcharles/acme-client/pull/257">one PR</a>. This contribution means that not only Shopify, but also the wider Ruby community, can benefit from the ARI extension.</p>
<h3 id="deployment-and-ari-at-scale">Deployment and ARI at scale</h3>
<p>Once we shipped the gem support, integrating ARI into our certificate management system was straightforward. Instead of checking a static 30-day threshold, we now query the ARI endpoint and use the suggested renewal window as the gate for initiating renewals. Those dates are stored alongside the certificate upon its initial provisioning.</p>
<p>The updated Ruby gem provides a method for fetching renewal information:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ruby" data-lang="ruby"><span class="line"><span class="cl"><span class="n">renewal_info</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="n">renewal_info</span><span class="p">(</span><span class="ss">certificate</span><span class="p">:</span> <span class="n">existing_certificate_pem</span><span class="p">)</span>
</span></span></code></pre></div><p>This method generates an ARI certificate identifier that can be used when making the API call. The client also includes a helper method, <code>suggested_renewal_time</code>, which chooses a random time between the returned start and end dates. The certificate identifier can be passed to the <code>new_order</code> method via the <code>replaces</code> key, which can grant a higher priority or bypass rate limits for renewals occurring during the window, depending on the CA&rsquo;s policies.</p>
<p>Critically, Shopify also regularly polls the ARI endpoint for updated renewal timestamps. This allows our systems to rely on those timestamps as the primary renewal timing logic and removes the need for inflexible hard-coded expiry thresholds. This becomes the mechanism that LetsEncrypt uses to dynamically change the renewal time due to a revocation event.</p>
<h3 id="results-and-rewards">Results and rewards</h3>
<p><img src="/images/blog/2026.03.17.acme-renewal-information-ari-image-1.png" alt=""></p>
<p>Since enabling the use of the ARI extension, our certificate management system has become significantly more robust. Shopify now delegates the responsibility of determining renewal timing to Let&rsquo;s Encrypt. The ARI extension has proven to be an impactful infrastructure improvement and the benefits gained are immediate. These benefits, alongside fewer manual interventions, are the operational success story:</p>
<ul>
<li>
<p><strong>Future-proofing:</strong> We gained resilience against any future certificate lifetime changes and mass revocation events without needing code updates&mdash;ensuring our renewal logic is flexible.</p>
</li>
<li>
<p><strong>Optimized load:</strong> We directly benefit from the CA&rsquo;s coordinated load balancing provided by the suggested renewal window, eliminating local randomness issues and the need for complex global coordination.</p>
</li>
<li>
<p><strong>Revocation readiness:</strong> ARI allows systems to quickly detect and respond to revocation events when an urgent renewal is necessary, well before certificates get close to their due dates.</p>
</li>
<li>
<p><strong>Simple implementation:</strong> The extension is mature (<a href="https://datatracker.ietf.org/doc/rfc9773/">RFC 9773</a>) and the implementation is straightforward, providing simplified renewal logic and CA-optimized timing.</p>
</li>
<li>
<p><strong>Good citizenship:</strong> Anyone using ARI helps the CA optimize its infrastructure, and contributes to better aggregate behavior across the entire ecosystem.</p>
</li>
</ul>
<p>If you&rsquo;re still relying on static renewal thresholds, give ARI a look&mdash;Shopify wholeheartedly encourages all ACME users and client developers to adopt the ARI extension.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2026/03/17/acme-renewal-information-ari.html</guid>
      </item><item>
        <title>Six-Day and IP Address Certificates Available in Certbot</title>
        <link>https://letsencrypt.org/2026/03/11/shorter-certs-certbot.html</link>
        <pubDate>Wed, 11 Mar 2026 00:00:00 +0000</pubDate>
        <description><![CDATA[<blockquote>
<p>This was also posted on <a href="https://www.eff.org/deeplinks/2026/03/certbot-and-lets-encrypt-now-support-ip-address-certificates">EFF&rsquo;s blog</a>.</p></blockquote>
<p>As we announced earlier this year, Let&rsquo;s Encrypt now <a href="/2026/01/15/6day-and-ip-general-availability">issues IP address and six-day certificates</a> to the general public. The Certbot team at the <a href="https://www.eff.org/">Electronic Frontier Foundation</a> has been working on two improvements to support these features: the <code>--preferred-profile</code> flag released last year in Certbot 4.0, and the <code>--ip-address</code> flag, new in Certbot 5.3. With these improvements together, you can now use <a href="https://certbot.eff.org/">Certbot</a> to get those IP address certificates!</p>
<p>If you want to try getting an IP address certificate using Certbot, install version 5.4 or higher (for <code>webroot</code> support with IP addresses), and run this command:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo certbot certonly --staging <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>  --preferred-profile shortlived <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>  --webroot <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>  --webroot-path &lt;filesystem path to webserver root&gt; <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>  --ip-address &lt;your ip address&gt;
</span></span></code></pre></div><p>Two things of note:</p>
<ul>
<li>
<p>This will request a non-trusted certificate from the Let&rsquo;s Encrypt staging server. Once you&rsquo;ve got things working the way you want, run without the <code>--staging</code> flag to get a publicly trusted certificate.</p>
</li>
<li>
<p>This requests a certificate with Let&rsquo;s Encrypt&rsquo;s &ldquo;shortlived&rdquo; profile, which will be good for 6 days. This is a Let&rsquo;s Encrypt requirement for IP address certificates.</p>
</li>
</ul>
<p>As of right now, Certbot only supports getting IP address certificates, not yet installing them in your web server. There&rsquo;s work to come on that front. In the meantime, edit your webserver configuration to load the newly issued certificate from <code>/etc/letsencrypt/live/&lt;ip address&gt;/fullchain.pem</code> and <code>/etc/letsencrypt/live/&lt;ip address&gt;/privkey.pem</code>.</p>
<p>The command line above uses Certbot&rsquo;s &ldquo;webroot&rdquo; mode, which places a challenge response file in a location where your already-running webserver can serve it. This is nice since you don&rsquo;t have to temporarily take down your server.</p>
<p>There are two other plugins that support IP address certificates today: <code>--manual</code> and <code>--standalone</code>. The <code>manual</code> plugin is like <code>webroot</code>, except Certbot pauses while you place the challenge response file manually (or <a href="https://eff-certbot.readthedocs.io/en/stable/using.html#hooks">runs a user-provided hook</a> to place the file). The <code>standalone</code> plugin runs a simple web server that serves a challenge response. It has the advantage of being very easy to configure, but has the disadvantage that any running webserver on port 80 has to be temporarily taken down so Certbot can listen on that port. The <code>nginx</code> and <code>apache</code> plugins don&rsquo;t yet support IP addresses.</p>
<p>You should also be sure that Certbot is set up for automatic renewal. Most installation methods for Certbot set up automatic renewal for you. However, since the webserver-specific installers don&rsquo;t yet support IP address certificates, you&rsquo;ll have to <a href="https://eff-certbot.readthedocs.io/en/stable/using.html#renewing-certificates">set a <code>--deploy-hook</code></a> that tells your webserver to load the most up-to-date certificates from disk. You can provide this <code>--deploy-hook</code> through the <code>certbot reconfigure</code> command using the rest of the flags above.</p>
<p>We hope you enjoy using IP address certificates with Let&rsquo;s Encrypt and Certbot, and as always if you get stuck you can ask for help in our <a href="https://community.letsencrypt.org/">Community Forum</a>.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2026/03/11/shorter-certs-certbot.html</guid>
      </item><item>
        <title>Shorter Certificate Lifetimes and Rate Limits</title>
        <link>https://letsencrypt.org/2026/02/24/rate-limits-45-day-certs.html</link>
        <pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>As <a href="/2025/12/02/from-90-to-45">previously announced</a>, over the next two years we will be switching the default certificate lifetime from 90 days to 64 days, and then 45 days. This will ultimately double the number of certificate renewal requests each day: today we expect renewal around day 60 (of a 90-day certificate), while in the future we expect renewal around day 30 (of a 45-day certificate). If you use an ACME client that <a href="/2024/04/25/guide-to-integrating-ari-into-existing-acme-clients">supports ARI</a>, this will happen automatically.</p>
<p>The good news for subscribers is that you don&rsquo;t need any changes to your rate limits, whether you are <a href="/docs/rate-limits/">using our default limits</a> or have requested an override. Our rate limits affect issuance for new domain names (or groups of domain names), but <a href="/docs/rate-limits/#limit-exemptions-for-renewals">renewals are exempt</a>. So, for instance, if you are managing a set of 15,000 certificates that you continually renew, and create 250 new certificates (with new domain names) each day, you will be well within our limits both before and after the transition. The 250 new certificates daily will still be well under our <a href="/docs/rate-limits/#new-orders-per-account">New Orders per Account limit</a> of 300 per day. And the 15,000 existing certificates will continue to be unaffected by rate limits, whether your ACME client is renewing them every sixty days or every thirty.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2026/02/24/rate-limits-45-day-certs.html</guid>
      </item><item>
        <title>DNS-PERSIST-01: A New Model for DNS-based Challenge Validation</title>
        <link>https://letsencrypt.org/2026/02/18/dns-persist-01.html</link>
        <pubDate>Wed, 18 Feb 2026 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>When you request a certificate from Let&rsquo;s Encrypt, our servers validate that you control the hostnames in that certificate using <a href="https://letsencrypt.org/docs/challenge-types/">ACME challenges</a>. For subscribers who need wildcard certificates or who prefer not to expose infrastructure to the public Internet, the DNS-01 challenge type has long been the only choice. DNS-01 works well. It is widely supported and battle-tested, but it comes with operational costs: DNS propagation delays, recurring DNS updates at renewal time, and automation that often requires distributing DNS credentials throughout your infrastructure.</p>
<p>We are implementing support for a new ACME challenge type, DNS-PERSIST-01, based on a new <a href="https://datatracker.ietf.org/doc/html/draft-ietf-acme-dns-persist-00">IETF draft specification</a>. As the name implies, it uses DNS as the validation mechanism, but replaces repeated demonstrations of control with a persistent authorization record bound to a specific ACME account and CA. The draft describes this method as being &ldquo;particularly suited for environments where traditional challenge methods are impractical, such as IoT deployments, multi-tenant platforms, and scenarios requiring batch certificate operations&rdquo;.</p>
<h2 id="dns-01-proves-control-repeatedly">DNS-01 Proves Control Repeatedly</h2>
<p>With DNS-01, validation relies on a one-time token generated by us. Your ACME client publishes a TXT record containing that token at <code>_acme-challenge.&lt;YOUR_DOMAIN&gt;</code>, and we query DNS to confirm that it matches the expected value. Because each authorization requires a new token, DNS updates become part of the issuance workflow. The benefit is that each successful validation provides fresh proof that you currently control DNS for the name being issued.</p>
<p>In practice, this often means DNS API credentials live somewhere in your issuance pipeline, validation attempts involve waiting for DNS propagation, and DNS changes happen frequently — sometimes many times per day in large deployments. Many subscribers accept these tradeoffs, but others would prefer to keep DNS updates and sensitive credentials out of their issuance path.</p>
<h2 id="dns-persist-01-authorizes-persistently">DNS-PERSIST-01 Authorizes Persistently</h2>
<p>DNS-PERSIST-01 approaches validation differently. Instead of publishing a new challenge record for each issuance, you publish a standing authorization in the form of a TXT record that identifies both the CA and the specific ACME account you authorize to issue for this domain.</p>
<p>For the hostname example.com, the record would live at <code>_validation-persist.example.com</code>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-dns" data-lang="dns"><span class="line"><span class="cl"><span class="py">_validation-persist.example.com. </span><span class="k">IN</span><span class="w"> </span><span class="k">TXT</span><span class="w"> </span><span class="p">(</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="err">&#34;</span><span class="nc">letsencrypt.org</span><span class="c">;&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="err">&#34;</span><span class="w"> </span><span class="err">accounturi=https://</span><span class="nc">acme-v02.api.letsencrypt.org</span><span class="err">/acme/acct/</span><span class="sc">1234567890</span><span class="err">&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">)</span><span class="w">
</span></span></span></code></pre></div><p>Once this record exists, it can be reused for new issuance and all subsequent renewals. Operationally, this removes DNS changes from the critical path.</p>
<h2 id="security-and-operational-tradeoffs">Security and Operational Tradeoffs</h2>
<p>With DNS-01, the sensitive asset is DNS write access. In many deployments, DNS API credentials are distributed throughout issuance and renewal pipelines, increasing the number of places an attacker might compromise them. DNS-PERSIST-01 instead binds authorization directly to an ACME account, allowing DNS write access to remain more tightly controlled after initial setup. The tradeoff is that, because the authorization record persists over time, protecting the ACME account key becomes the central concern.</p>
<h2 id="controlling-scope-and-lifetime">Controlling Scope and Lifetime</h2>
<p>DNS-PERSIST-01 also introduces explicit scope controls. Without additional parameters, authorization applies only to the validated Fully Qualified Domain Name (FQDN) and remains valid indefinitely.</p>
<h3 id="wildcard-certificates">Wildcard Certificates</h3>
<p>Adding policy=wildcard broadens the authorization scope to include the validated FQDN, wildcard certificates such as <code>*.example.com</code>, and subdomains whose suffix matches the validated FQDN:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-dns" data-lang="dns"><span class="line"><span class="cl"><span class="py">_validation-persist.example.com. </span><span class="k">IN</span><span class="w"> </span><span class="k">TXT</span><span class="w"> </span><span class="p">(</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="err">&#34;</span><span class="nc">letsencrypt.org</span><span class="c">;&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="err">&#34;</span><span class="w"> </span><span class="err">accounturi=https://</span><span class="nc">acme-v02.api.letsencrypt.org</span><span class="err">/acme/acct/</span><span class="sc">1234567890</span><span class="c">;&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="err">&#34;</span><span class="w"> </span><span class="err">policy=wildcard&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">)</span><span class="w">
</span></span></span></code></pre></div><h3 id="optional-expiration">Optional Expiration</h3>
<p>Subscribers who aren&rsquo;t comfortable with authorization persisting indefinitely can include an optional <code>persistUntil</code> timestamp. This limits how long the record may be used for new validations, but also means it must be updated or replaced before it expires. Anyone using this feature should ensure they have adequate reminders or monitoring in place so that authorization does not expire unexpectedly. The timestamp is expressed as UTC seconds since 1970-01-01:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-dns" data-lang="dns"><span class="line"><span class="cl"><span class="py">_validation-persist.example.com. </span><span class="k">IN</span><span class="w"> </span><span class="k">TXT</span><span class="w"> </span><span class="p">(</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="err">&#34;</span><span class="nc">letsencrypt.org</span><span class="c">;&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="err">&#34;</span><span class="w"> </span><span class="err">accounturi=https://</span><span class="nc">acme-v02.api.letsencrypt.org</span><span class="err">/acme/acct/</span><span class="sc">1234567890</span><span class="c">;&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="err">&#34;</span><span class="w"> </span><span class="err">persistUntil=</span><span class="sc">1767225600</span><span class="err">&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">)</span><span class="w">
</span></span></span></code></pre></div><h3 id="authorizing-multiple-cas">Authorizing Multiple CAs</h3>
<p>Multiple CAs can be simultaneously authorized by publishing multiple TXT records at <code>_validation-persist.&lt;YOUR_DOMAIN&gt;</code>, each containing the issuer-domain-name of the CA you intend to authorize. During validation, each CA queries the same DNS label and evaluates only the records that match its own issuer-domain-name.</p>
<h2 id="rollout-timeline">Rollout Timeline</h2>
<p>The CA/Browser Forum ballot <a href="https://cabforum.org/2025/10/09/ballot-sc-088v3-dns-txt-record-with-persistent-value-dcv-method">SC-088v3</a>, defining &ldquo;3.2.2.4.22 DNS TXT Record with Persistent Value&rdquo;, passed unanimously in October 2025, and the IETF ACME working group adopted the draft that same month. While the document remains an active IETF draft, the core mechanisms described here are not expected to change substantially.</p>
<p>Support for the draft specification is available now in <a href="https://github.com/letsencrypt/pebble">Pebble</a>, a miniature version of <a href="https://github.com/letsencrypt/boulder">Boulder</a>, our production CA software. Work is also in progress on a <a href="https://go-acme.github.io/lego/usage/cli/">lego-cli</a> client implementation to make it easier for subscribers to experiment with and adopt. Staging rollout is planned for late Q1 2026, with a production rollout targeted for some time in Q2 2026.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2026/02/18/dns-persist-01.html</guid>
      </item><item>
        <title>On the Importance of &#34;Hello&#34; and &#34;Thanks&#34;</title>
        <link>https://letsencrypt.org/2026/02/05/fosdem2026.html</link>
        <pubDate>Thu, 05 Feb 2026 00:00:00 +0000</pubDate>
        <description><![CDATA[<figure class="card border-0 pic-quote-right">
<img src="/images/blog/FOSDEM26-team.jpg" class="mx-auto img-fluid" alt="The ISRG team at FOSDEM 2026">
</figure>
<p>In a recent conversation with a Let&rsquo;s Encrypt subscriber, we asked them to guess how many people work at ISRG, the nonprofit behind Let&rsquo;s Encrypt (and Prossimo and Divvi Up). Their guess was about 100; they&rsquo;d overestimated by 72.5 people. We&rsquo;re a pretty small team, and we get a lot done, but most of that work is entirely remote, distributed, and automated. </p>
<p>That is a big part of what makes FOSDEM special. For the last few years, we&rsquo;ve had a stand at this annual conference in Belgium, where a few folks from our team have the opportunity to speak directly with thousands of conference-goers. We continue to learn so much from these conversations! </p>
<p>That&rsquo;s where the &ldquo;Hello&rdquo; part of this blog post comes in. At this year&rsquo;s FOSDEM, we met so many Let&rsquo;s Encrypt subscribers, and each of them has a unique relationship to Let&rsquo;s Encrypt. We were pleasantly surprised by how many people told us they were using <a href="https://letsencrypt.org/2026/01/15/6day-and-ip-general-availability">IP-address certificates</a>, a new option we just made generally available in December. We had a lot of conversations about our plans to <a href="https://letsencrypt.org/2025/12/02/from-90-to-45">shorten certificate lifetimes</a>. There were a few folks who asked about S/MIME (<a href="https://community.letsencrypt.org/t/s-mime-certificates/153/24">still no plans to do that</a>). We invited people to continue to stay in touch by signing up for our <a href="https://www.abetterinternet.org/newsletter/">newsletter</a>. </p>
<p>The most meaningful part of FOSDEM is being able to say &ldquo;thank you&rdquo;. Our goal in starting Let&rsquo;s Encrypt was to improve security and privacy for people using the Internet, but that could not be achieved without the now millions of folks who decided to get a certificate. Our impact is predicated on this symbiotic exchange. While we were only able to directly express our gratitude to a few thousand people at FOSDEM, it was a reminder of how important the community is.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2026/02/05/fosdem2026.html</guid>
      </item><item>
        <title>6-day and IP Address Certificates are Generally Available</title>
        <link>https://letsencrypt.org/2026/01/15/6day-and-ip-general-availability.html</link>
        <pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate>
        <description><![CDATA[<blockquote>
<p><strong>Update: March 11, 2026</strong></p>
<p>If you use Certbot, see <a href="/2026/03/11/shorter-certs-certbot">Six-Day and IP Address Certificates Available in Certbot</a> for details on requesting these certificates.</p></blockquote>
<p>Short-lived and IP address certificates are now generally available from Let&rsquo;s Encrypt. These certificates are valid for 160 hours, just over six days. In order to get a short-lived certificate subscribers simply need to select the &lsquo;shortlived&rsquo; <a href="https://letsencrypt.org/docs/profiles/">certificate profile</a> in their ACME client.</p>
<p>Short-lived certificates improve security by requiring more frequent validation and reducing reliance on unreliable revocation mechanisms. If a certificate&rsquo;s private key is exposed or compromised, revocation has historically been the way to mitigate damage prior to the certificate&rsquo;s expiration. Unfortunately, revocation is an unreliable system so many relying parties continue to be vulnerable until the certificate expires, a period as long as 90 days. With short-lived certificates that vulnerability window is greatly reduced.</p>
<p>Short-lived certificates are opt-in and we have no plan to make them the default at this time. Subscribers that have fully automated their renewal process should be able to switch to short-lived certificates easily if they wish, but we understand that not everyone is in that position and generally comfortable with this significantly shorter lifetime. We hope that over time everyone moves to automated solutions and we can demonstrate that short-lived certificates work well.</p>
<p>Our default certificate lifetimes will be going from 90 days down to 45 days over the next few years, <a href="https://letsencrypt.org/2025/12/02/from-90-to-45">as previously announced</a>.</p>
<p>IP address certificates allow server operators to authenticate TLS connections to IP addresses rather than domain names. Let&rsquo;s Encrypt supports both IPv4 and IPv6. IP address certificates must be short-lived certificates, a decision we made because IP addresses are more transient than domain names, so validating more frequently is important. You can learn more about our IP address certificates and the use cases for them from our <a href="https://letsencrypt.org/2025/07/01/issuing-our-first-ip-address-certificate">post announcing our first IP Certificate</a>.</p>
<p>We&rsquo;d like to thank the Open Technology Fund and Sovereign Tech Agency, along with our <a href="https://www.abetterinternet.org/sponsors/">Sponsors</a> and Donors, for supporting the development of this work.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2026/01/15/6day-and-ip-general-availability.html</guid>
      </item><item>
        <title>A Note from our Executive Director</title>
        <link>https://letsencrypt.org/2025/12/29/eoy-letter-2025.html</link>
        <pubDate>Mon, 29 Dec 2025 00:00:00 +0000</pubDate>
        <description><![CDATA[<div class="card border-0 pic-quote-right">
    <img alt="Josh Aas" class="mx-auto img-fluid" src="/images/blog/Josh-Aas-Headshot.jpg" />
</div>
<p>This letter was originally published in our <a href="https://www.abetterinternet.org/documents/2025-ISRG-Annual-Report.pdf">2025 Annual Report</a>.</p>
<p>This year was the 10th anniversary of Let&rsquo;s Encrypt. We&rsquo;ve come a long way! Today we&rsquo;re serving more than 700 million websites, issuing ten million certificates on some days. Most importantly, when we started 39% of page loads on the Internet were encrypted. Today, in many parts of the world, over 95% of all page loads are encrypted. We can&rsquo;t claim all the credit for that, but we&rsquo;re proud of the leading role we played. Being able to help ISRG and Let&rsquo;s Encrypt get to where we are today has been the opportunity of a lifetime for me.</p>
<p>There&rsquo;s more I could talk about from the past ten years, but this 10th year was about as good as any before it so I want to focus on our most recent work. I&rsquo;ll get the headline for 2025 out right away: over the past year we went from serving 492 million websites to 762 million. That&rsquo;s a 50% increase in a single year, equivalent to the growth we saw over our first six years of existence combined. Our staff did an amazing job accommodating the additional traffic.</p>
<p>I&rsquo;m also particularly proud of the things we did to improve privacy this year, across all of our projects.</p>
<p>At the start of 2025 we were serving over four billion Online Certificate Status Protocol (OCSP) requests per day. That&rsquo;s 180 million per hour, or 50,000 per second. OCSP has been an important mechanism for providing certificate revocation information for a long time, but the way it works is bad for privacy. It requires browsers to check with certificate authorities for every website they visit, which is basically providing your browsing history to third parties. Let&rsquo;s Encrypt never held onto that data; it got dropped immediately. However, there is no way to know if that was standard practice across the industry, and even well-intentioned CAs could make a mistake or be compelled to save that data. It was a system ripe for abuse, so we decided to become the first major CA to turn off our OCSP service. We couldn&rsquo;t be sure what the full impact would be, but this was a way in which the Internet needed to get better. In August of 2025 we turned off our OCSP service. There was no major fallout and we haven&rsquo;t looked back.</p>
<p>Another big privacy-focused change we made to Let&rsquo;s Encrypt in 2025 was no longer storing subscriber email addresses in our CA database, associated with issuance data. In June of this year we stopped adding the optional email addresses that subscribers send to our database, and we deleted the millions of email addresses that had accumulated over the years. Making this change was not an easy thing to decide to do—it limits our ability to contact subscribers and we had to turn off our expiration reminder email service—but we feel the ecosystem has grown enough over the past ten years that the privacy implications of holding onto the email addresses outweighed the utility.</p>
<p>Privacy was at the forefront for the folks at ISRG researching human digital identity as well. They have been hard at work on an implementation of the Anonymous Credentials from ECDSA scheme, also known as <a href="https://datatracker.ietf.org/doc/draft-google-cfrg-libzk/">Longfellow</a>. This is a cryptographic library that can be used in digital identity management, including things like digital wallets, in order to improve privacy when sharing credentials. Digital identity systems should have strong privacy and compatibility requirements, but such requirements pose challenges that existing digital credential technologies are going to struggle to meet. New schemes such as Longfellow aim to address these challenges, bringing privacy improvements to systems that need to work with existing cryptographic hardware. This is exciting stuff, but not easy to build (so much math!)—watching our talented engineers make progress has been thrilling.</p>
<p>The last example of great privacy work I want to highlight from 2025 is our Prossimo project&rsquo;s work towards encrypted recursive-to-authoritative DNS. Prossimo is focused on bringing memory safety to critical software infrastructure, but sometimes that dovetails nicely with other initiatives. DNS queries are fundamental to the operation of the Internet. Without getting into the details here too much, there are basically two types of DNS queries: stub-to-recursive and recursive-to-authoritative. A lot of work has gone into encrypting stub queries over the past decade, mostly through DNS over HTTPS (DoH) initiatives. Authoritative queries, however, remain almost entirely unencrypted. This is a particular problem for Certificate Authorities like Let&rsquo;s Encrypt. During 2025, our Prossimo project started work on changing that, investing heavily in encrypted authoritative resolution by implementing <a href="https://datatracker.ietf.org/doc/rfc9539/">RFC 9539</a> Unilateral Opportunistic Deployment of Encrypted Recursive‑to‑Authoritative DNS and other related improvements in Hickory DNS. Once this is ready, early in 2026, Hickory DNS will be a high performance and memory safe option that DNS operators can use to start making and receiving encrypted authoritative DNS queries. It can also be used for integration testing with other DNS implementations.</p>
<p>It&rsquo;s wonderful, and a real responsibility, to be able to have this kind of positive impact on the lives of everyone using the Internet. Charitable contributions from people like you and organizations around the world make what we do possible. We are particularly grateful to Jeff Atwood, Betsy Burton, and Stina Ehrensvärd for their special gifts this year. Since 2015, tens of thousands of people have donated. They&rsquo;ve made a case for corporate sponsorship, given through their DAFs, or set up recurring donations. If you&rsquo;re one of those people, thank you. If you&rsquo;re considering becoming a supporter, I hope this annual report will make the case that we&rsquo;re making every dollar count.</p>
<p>Every year we aim to make the dollars entrusted to us go as far as possible, and next year will be no exception.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2025/12/29/eoy-letter-2025.html</guid>
      </item><item>
        <title>10 Years of Let&#39;s Encrypt Certificates</title>
        <link>https://letsencrypt.org/2025/12/09/10-years.html</link>
        <pubDate>Tue, 09 Dec 2025 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>On September 14, 2015, <a href="https://crt.sh/?id=9314793">our first publicly-trusted certificate</a> went live. We were proud that we had issued a certificate that a significant majority of clients could accept, and had done it using <a href="https://github.com/letsencrypt/boulder">automated software</a>. Of course, in retrospect this was just the first of billions of certificates. Today, Let&rsquo;s Encrypt is the largest certificate authority in the world in terms of certificates issued, the ACME protocol we helped create and standardize is integrated throughout the server ecosystem, and we&rsquo;ve become a household name among system administrators. We&rsquo;re closing in on protecting one billion web sites.</p>
<p><a href="https://letsencrypt.org/stats/"><img src="/images/blog/blog-2025-12-09-chart1.jpg" alt=""></a></p>
<p>In 2023, we marked the <a href="https://www.abetterinternet.org/tenth-anniversary/">tenth anniversary of the creation of our nonprofit</a>, Internet Security Research Group, which continues to host Let&rsquo;s Encrypt and other public benefit infrastructure projects. Now, in honor of the tenth anniversary of Let&rsquo;s Encrypt&rsquo;s public certificate issuance and the start of the general availability of our services, we&rsquo;re looking back at a few milestones and factors that contributed to our success.</p>
<h2 id="growth">Growth</h2>
<p>A conspicuous part of Let&rsquo;s Encrypt&rsquo;s history is how thoroughly our vision of scalability through automation has succeeded.</p>
<p>In March 2016, we issued our one millionth certificate. Just two years later, in September 2018, we were issuing a million certificates every day. In 2020 we reached a billion total certificates issued and as of late 2025 we&rsquo;re frequently issuing ten million certificates per day. We&rsquo;re now on track to reach a billion active sites, probably sometime in the coming year. (The &ldquo;certificates issued&rdquo; and &ldquo;certificates active&rdquo; metrics are quite different because our certificates regularly expire and get replaced.)</p>
<p>The steady growth of our issuance volume shows the strength of our architecture, the validity of our vision, and the great efforts of our engineering team to scale up our own infrastructure. It also reminds us of the confidence that the Internet community is placing in us, making the use of a Let&rsquo;s Encrypt certificate a normal and, dare we say, boring choice. But I often point out that our ever-growing issuance volumes are only an indirect measure of value. What ultimately matters is improving the security of people&rsquo;s use of the web, which, as far as Let&rsquo;s Encrypt&rsquo;s contribution goes, is not measured by issuance volumes so much as by the prevalence of HTTPS encryption. For that reason, we&rsquo;ve always emphasized the graph of the percentage of encrypted connections that web users make (here represented by statistics from Firefox).</p>
<p><a href="https://letsencrypt.org/stats/"><img src="/images/blog/blog-2025-12-09-chart2.jpg" alt=""></a></p>
<p>(These graphs are snapshots as of the date of this post; a dynamically updated version is found <a href="https://letsencrypt.org/stats/#percent-pageloads">on our stats page</a>.) Our biggest goal was to make a concrete, measurable security impact on the web by getting HTTPS connection prevalence to increase—and it&rsquo;s worked. It took five years or so to get the global percentage from below 30% to around 80%, where it&rsquo;s remained ever since. In the U.S. it has been close to 95% for a while now.</p>
<p>A good amount of the remaining unencrypted traffic probably comes from internal or private organizational sites (intranets), but other than that we don&rsquo;t know much about it; this would be a great topic for Internet security researchers to look into.</p>
<p>We believe our present growth in certificate issuance volume is essentially coming from growth in the web as a whole. In other words, if we protect 20% more sites over some time period, it&rsquo;s because the web itself grew by 20%.</p>
<h2 id="a-few-milestones">A few milestones</h2>
<p>We&rsquo;ve <a href="https://letsencrypt.org/blog/">blogged about most of Let&rsquo;s Encrypt&rsquo;s most significant milestones</a> as they&rsquo;ve happened, and I invite everyone in our community to look over those blog posts to see how far we&rsquo;ve come. We&rsquo;ve also <a href="https://www.abetterinternet.org/annual-reports/">published annual reports for the past seven years</a>, which offer elegant and concise summaries of our work.</p>
<p>As I personally think back on the past decade, just a few of the many events that come to mind include:</p>
<ul>
<li>
<p><a href="https://letsencrypt.org/2014/11/18/announcing-lets-encrypt">Telling the world about the project</a> in November 2014</p>
</li>
<li>
<p><a href="https://letsencrypt.org/2015/09/14/our-first-cert">Our first certificate issuance</a> in September 2015</p>
</li>
<li>
<p><a href="https://letsencrypt.org/2016/03/08/our-millionth-cert">Our one millionth certificate</a> in March 2016, then <a href="https://letsencrypt.org/2017/06/28/hundred-million-certs">our 100 millionth certificate</a> in June 2017, and then <a href="https://letsencrypt.org/2020/02/27/one-billion-certs">our billionth certificate</a> in 2020</p>
</li>
<li>
<p>Along the way, first issuing one million certificates in a single day (in September 2018), significantly contributed to by the SquareSpace and <a href="https://letsencrypt.org/2021/09/14/speed-at-scale-shopify">Shopify</a> Let&rsquo;s Encrypt integrations</p>
</li>
<li>
<p>Just at the end of September 2025, we issued more than ten million certificates in a day for the first time.</p>
</li>
</ul>
<p>We&rsquo;ve also periodically rolled out new features such as <a href="https://letsencrypt.org/2016/10/21/introducing-idn-support">internationalized domain name support</a> (2016), <a href="https://letsencrypt.org/2017/07/06/wildcard-certificates-coming-jan-2018">wildcard support</a> (2018), and <a href="https://letsencrypt.org/2025/02/20/first-short-lived-cert-issued">short-lived</a> and <a href="https://letsencrypt.org/2025/07/01/issuing-our-first-ip-address-certificate">IP address</a> (2025) certificates. We&rsquo;re always working on <a href="https://letsencrypt.org/upcoming-features/">more new features</a> for the future.</p>
<p>There are many technical milestones like <a href="https://letsencrypt.org/2021/01/21/next-gen-database-servers">our database server upgrades</a> in 2021, where we found we needed a serious server infrastructure boost because of the tremendous volumes of data we were dealing with. Similarly, our original infrastructure was using Gigabit Ethernet internally, and, with the growth of our issuance volume and logging, we found that our Gigabit Ethernet network eventually became too slow to synchronize database instances! (Today we&rsquo;re using 25-gig Ethernet.) More recently, we&rsquo;ve <a href="https://letsencrypt.org/2025/06/11/reflections-on-a-year-of-sunlight">experimented with architectural upgrades</a> to our ever-growing Certificate Transparency logs, and <a href="https://letsencrypt.org/2025/08/14/rfc-6962-logs-eol">decided to go ahead with deploying those upgrades</a>—to help us not just keep up with, but get ahead of, our continuing growth.</p>
<p>These kinds of growing pains and successful responses to them are nice to remember because they point to the inexorable increase in demands on our infrastructure as we&rsquo;ve become a more and more essential part of the Internet. I&rsquo;m proud of our technical teams which have handled those increased demands capably and professionally.</p>
<p>I also recall the ongoing work involved in <a href="https://letsencrypt.org/2018/08/06/trusted-by-all-major-root-programs">making sure our certificates would be as widely accepted as possible</a>, which has meant managing the original cross-signature from IdenTrust, and <a href="https://letsencrypt.org/2020/11/06/own-two-feet">subsequently creating and propagating our own root CA certificates</a>. This process has required PKI engineering, key ceremonies, root program interactions, documentation, and community support associated with certificate migrations. Most users never have reason to look behind the scenes at <a href="https://letsencrypt.org/certificates/">our chains of trust</a>, but our engineers update it as root and intermediate certificates have been replaced. We&rsquo;ve engaged at the <a href="https://cabforum.org/">CA/B Forum</a>, <a href="https://www.ietf.org/">IETF</a>, and in other venues with the browser root programs to help shape the web PKI as a technical leader.</p>
<p><a href="https://letsencrypt.org/2020/12/28/executive-director-letter">As I wrote in 2020</a>, our ideal of complete automation of the web PKI aims at a world where most site owners wouldn&rsquo;t even need to think about certificates at all. We continue to get closer and closer to that world, which creates a risk that people will take us and our services for granted, as the details of certificate renewal occupy less of site operators&rsquo; mental energy. As I said at the time,</p>
<p>When your strategy as a nonprofit is to get out of the way, to offer services that people don&rsquo;t need to think about, you&rsquo;re running a real risk that you&rsquo;ll eventually be taken for granted. There is a tension between wanting your work to be invisible and the need for recognition of its value. If people aren&rsquo;t aware of how valuable our services are then we may not get the support we need to continue providing them.</p>
<p>I&rsquo;m also grateful to our communications and fundraising staff who help make clear what we&rsquo;re doing every day and how we&rsquo;re making the Internet safer.</p>
<h2 id="recognition-of-let-s-encrypt">Recognition of Let&rsquo;s Encrypt</h2>
<p>Our community continually recognizes our work in tangible ways by using our certificates—now by the tens of millions per day—and by <a href="https://www.abetterinternet.org/sponsor/">sponsoring us</a>.</p>
<p>We were honored to be recognized with awards including the <a href="https://rwc.iacr.org/LevchinPrize/winners.html#certs">2022 Levchin Prize for Real-World Cryptography</a> and the <a href="https://www.abetterinternet.org/documents/2019-ISRG-Annual-Report-Desktop.pdf">2019 O&rsquo;Reilly Open Source Award</a>. In October of this year some of the individuals who got Let&rsquo;s Encrypt started were honored to receive the <a href="https://secdev.ieee.org/2025/awardees/">IEEE Cybersecurity Award for Practice</a>.</p>
<p>We documented the history, design, and goals of the project in <a href="https://dl.acm.org/doi/abs/10.1145/3319535.3363192">an academic paper at the ACM CCS &lsquo;19 conference</a>, which has subsequently been cited hundreds of times in academic research.</p>
<h2 id="our-initial-sponsors">Our initial sponsors</h2>
<p>Ten years later, I&rsquo;m still deeply grateful to the five initial sponsors that got Let&rsquo;s Encrypt off the ground - Mozilla, EFF, Cisco, Akamai, and IdenTrust. When they committed significant resources to the project, it was just an ambitious idea. They saw the potential and believed in our team, and because of that we were able to build the service we operate today.</p>
<h2 id="identrust-a-critical-technical-partner">IdenTrust: A critical technical partner</h2>
<p>I&rsquo;d like to particularly recognize <a href="https://www.identrust.com/">IdenTrust</a>, a PKI company that worked as a partner from the outset and enabled us to issue publicly-trusted certificates via a cross-signature from one of their roots. We would simply not have been able to launch our publicly-trusted certificate service without them. Back when I first told them that we were starting a new nonprofit certificate authority that would give away millions of certificates for free, there wasn&rsquo;t any precedent for this arrangement, and there wasn&rsquo;t necessarily much reason for IdenTrust to pay attention to our proposal. But the company really understood what we were trying to do and was willing to engage from the beginning. Ultimately, IdenTrust&rsquo;s support made our original issuance model a reality.</p>
<h2 id="conclusion">Conclusion</h2>
<p>I&rsquo;m proud of what we have achieved with our staff, partners, and donors over the past ten years. I hope to be even more proud of the next ten years, as we use our strong footing to continue to pursue our mission to protect Internet users by lowering monetary, technological, and informational barriers to a more secure and privacy-respecting Internet.</p>
<p>Let&rsquo;s Encrypt is a project of the nonprofit Internet Security Research Group, a 501(c)(3) nonprofit. You can help us make the next ten years great as well by <a href="http://letsencrypt.org/donate">donating</a> or becoming a <a href="https://www.abetterinternet.org/sponsor/">sponsor</a>.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2025/12/09/10-years.html</guid>
      </item><item>
        <title>Decreasing Certificate Lifetimes to 45 Days</title>
        <link>https://letsencrypt.org/2025/12/02/from-90-to-45.html</link>
        <pubDate>Tue, 02 Dec 2025 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Let’s Encrypt will be reducing the validity period of the certificates we issue. We currently issue certificates valid for 90 days, which will be cut in half to 45 days by 2028.</p>
<p>This change is being made along with the rest of the industry, as required by the <a href="https://cabforum.org/working-groups/server/baseline-requirements/requirements/">CA/Browser Forum Baseline Requirements</a>, which set the technical requirements that we must follow. All publicly-trusted Certificate Authorities like Let’s Encrypt will be making similar changes. Reducing how long certificates are valid for helps improve the security of the internet, by limiting the scope of compromise, and making certificate revocation technologies more efficient.</p>
<p>We are also reducing the authorization reuse period, which is the length of time after validating domain control that we allow certificates to be issued for that domain. It is currently 30 days, which will be reduced to 7 hours by 2028.</p>
<h2 id="timeline-of-changes">Timeline of Changes</h2>
<p>To minimize disruption, Let’s Encrypt will roll this change out in multiple stages. We will use ACME Profiles to allow you control over when these changes take effect. They are configured in your ACME client. For more information, see our <a href="https://letsencrypt.org/2025/01/09/acme-profiles">blog post announcing them</a>.</p>
<p>Changes will be deployed to our staging environment approximately one month before the production dates below.</p>
<ul>
<li><strong>May 13, 2026:</strong> Let’s Encrypt will switch our <a href="https://letsencrypt.org/docs/profiles/#tlsserver">tlsserver</a> ACME profile to issue 45-day certificates. This profile is opt-in and can be used by early adopters and for testing.</li>
<li><strong>February 10, 2027:</strong> Let’s Encrypt will switch our default <a href="https://letsencrypt.org/docs/profiles/#classic">classic</a> ACME profile to issuing 64-day certificates with a 10-day authorization reuse period. This will affect all users who have not opted into the <a href="https://letsencrypt.org/docs/profiles/#tlsserver">tlsserver</a> or <a href="https://letsencrypt.org/docs/profiles/#shortlived">shortlived</a> (6-day) profiles.</li>
<li><strong>February 16, 2028:</strong> We will further update the <a href="https://letsencrypt.org/docs/profiles/#classic">classic</a> profile to issue 45-day certificates with a 7 hour authorization reuse period.</li>
</ul>
<p>These dates are when the change takes effect for new certificates, so Let’s Encrypt users will see the reduced certificate validity period at their next renewal after these dates.</p>
<h2 id="action-required">Action Required</h2>
<p>Most users of Let’s Encrypt who automatically issue certificates will not have to make any changes. However, you should verify that your automation is compatible with certificates that have shorter validity periods.</p>
<p>To ensure your ACME client renews on time, we recommend using <a href="https://letsencrypt.org/2023/03/23/improving-resliiency-and-reliability-with-ari">ACME Renewal Information (ARI)</a>. ARI is a feature we’ve introduced to help clients know when they need to renew their certificates. Consult your ACME client’s documentation on how to enable ARI, as it differs from client to client. If you are a client developer, check out this <a href="https://letsencrypt.org/2024/04/25/guide-to-integrating-ari-into-existing-acme-clients">integration guide</a>.</p>
<p>If your client doesn’t support ARI yet, ensure it runs on a schedule that is compatible with 45-day certificates. For example, renewing at a hardcoded interval of 60 days will no longer be sufficient. Acceptable behavior includes renewing certificates at approximately two thirds of the way through the current certificate’s lifetime.</p>
<p>Manually renewing certificates is not recommended, as it will need to be done more frequently with shorter certificate lifetimes.</p>
<p>We also recommend that you make sure your systems have sufficient monitoring in place to alert appropriately if certificates aren’t renewed when expected. There are many available options, some of which are documented on our <a href="https://letsencrypt.org/docs/monitoring-options/">Monitoring Service Options</a> page.</p>
<h2 id="making-automation-easier-with-a-new-dns-challenge-type">Making Automation Easier with a new DNS Challenge Type</h2>
<p>For many of our users, the hardest part of automatically issuing certificates is proving domain control. Reducing certificate lifetimes and the authorization reuse period will make users need to demonstrate control more often.</p>
<p>All validation methods today require that the ACME client have live access to your infrastructure, either to serve the correct HTTP-01 token, perform the right TLS-ALPN-01 handshake, or update the right DNS-01 TXT record. For a long time, people have wanted a way to run an ACME client without granting it access to these sensitive systems.</p>
<p>These challenges are why we are working with our partners at the CA/Browser Forum and IETF to standardize a new validation method called <a href="https://www.ietf.org/archive/id/draft-ietf-acme-dns-persist-00.html">DNS-PERSIST-01</a>. The key advantage of this new method is that the DNS TXT entry used to demonstrate control does not have to change every renewal.</p>
<p>This means you can set up the DNS entry once and begin automatically renewing certificates without needing a way to automatically update DNS. This should allow even more people to automate their certificate renewals. It will also reduce reliance on authorization reuse, since the DNS records can stay unchanged without any further ACME client involvement.</p>
<p>We expect DNS-PERSIST-01 to be available in 2026, and will have more to announce soon.</p>
<h2 id="keep-up-to-date">Keep Up to Date</h2>
<p>Additional updates, reminders, and other changes will be shared on our <a href="https://letsencrypt.org/opt-in/">technical updates mailing list</a>. Subscribe to keep up-to-date with these and all other upcoming changes. If you have any questions, please ask on our <a href="https://community.letsencrypt.org/">community forum</a>. If you want to read more about the work happening at Let’s Encrypt and our other projects, check out our <a href="https://www.abetterinternet.org/annual-reports/">Annual Report</a>, which was published today.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2025/12/02/from-90-to-45.html</guid>
      </item><item>
        <title>New &#34;Generation Y&#34; Hierarchy of Root and Intermediate Certificates</title>
        <link>https://letsencrypt.org/2025/11/24/gen-y-hierarchy.html</link>
        <pubDate>Mon, 24 Nov 2025 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>In a ceremony held in September, Let’s Encrypt generated two new Root Certification Authorities (CAs) and six new Intermediate CAs, which we’re collectively calling the “Generation Y” hierarchy. Now we’re moving to begin issuing certificates from this new hierarchy, and to submit it to various root programs for inclusion in their trust stores.</p>
<figure>
<p><img src="/images/blog/2025-11-24-gen-y-hierarchy.png" alt="Diagram of the new Generation Y Root and Intermediate CAs"></p>
</figure>
<p>The <a href="/certificates/#root-cas">two new roots</a> look very similar to our existing roots. The new <a href="https://letsencrypt.org/certs/gen-y/root-yr.txt">ISRG Root YR</a> has an RSA 4096 key and is valid for twenty years, just like <a href="https://letsencrypt.org/certs/isrgrootx1.txt">ISRG Root X1</a>. Similarly, the new <a href="https://letsencrypt.org/certs/gen-y/root-ye.txt">ISRG Root YE</a> has an ECDSA P-384 key, just like <a href="https://letsencrypt.org/certs/isrg-root-x2.txt">ISRG Root X2</a>. We’ve made a few adjustments (for example, replacing “Internet Security Research Group” with “ISRG” to save a few bytes), but nothing major. Each of these new roots is intended to eventually replace its corresponding predecessor, and to that end we have cross-signed the new roots from the old ones.</p>
<p>The <a href="/certificates/#subordinate-intermediate-cas">six new intermediates</a> consist of three intermediates each issued from each of the two new roots. ISRG Root YE has issued the <a href="https://letsencrypt.org/certs/gen-y/int-ye1.txt">YE1</a>, <a href="https://letsencrypt.org/certs/gen-y/int-ye2.txt">YE2</a>, and <a href="https://letsencrypt.org/certs/gen-y/int-ye3.txt">YE3</a> intermediates, while ISRG Root YR has issued the <a href="https://letsencrypt.org/certs/gen-y/int-yr1.txt">YR1</a>, <a href="https://letsencrypt.org/certs/gen-y/int-yr2.txt">YR2</a>, and <a href="https://letsencrypt.org/certs/gen-y/int-yr3.txt">YR3</a> intermediates. These have two key differences from our current crop of issuing intermediates. First, their names: we’re now numbering intermediates under each root sequentially, rather than using the same numbering sequence across all intermediates. This makes it slightly easier to keep track of which intermediates are currently in use, and prepares for a possible post-quantum future where we have additional key types.</p>
<p>Second and more importantly: these intermediates do not contain the “TLS Web Client Authentication” Extended Key Usage. This means that these intermediates cannot issue end-entity certificates containing that EKU. As we’ve <a href="/2025/05/14/ending-tls-client-authentication">already announced</a>, we will be phasing out issuance of tlsClientAuth certificates in 2026 due to a root program requirement. Until that time, we will only be using the new hierarchy to issue certificates under the “<a href="https://letsencrypt.org/docs/profiles/#tlsserver">tlsserver</a>” and “<a href="https://letsencrypt.org/docs/profiles/#shortlived">shortlived</a>” profiles, which already omit that EKU. After the tlsClientAuth deprecation is complete, we will shift to using the new intermediates for all issuance.</p>
<p>If you’re requesting the tlsserver or shortlived profile, you can expect to see issuance from (the <a href="/docs/staging-environment/">Staging equivalent</a> of) the new hierarchy as of today. We expect to make the same change in our Production environment next month. As before, each issuance will choose which intermediate to use at random, to <a href="https://letsencrypt.org/2024/03/19/new-intermediate-certificates#rotating-issuance">discourage intermediate key pinning</a>.</p>
<p>We’ll be submitting the new roots for inclusion in the Apple, Chrome, Microsoft, Mozilla, and other root programs shortly thereafter. We look forward to updating you again when the new hierarchy is officially included in those trust stores!</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2025/11/24/gen-y-hierarchy.html</guid>
      </item><item>
        <title>Ten Years of Community Support</title>
        <link>https://letsencrypt.org/2025/10/07/ten-yrs-community-forum.html</link>
        <pubDate>Tue, 07 Oct 2025 00:00:00 +0000</pubDate>
        <description><![CDATA[<div class="pull-quote-right">
  <blockquote class="blockquote">
    <span class="quote"></span>
    <div class="quote-text">
      <p class="quote-text-value">Seth Schoen was an early contributor to Let's Encrypt through his work at the Electronic Frontier Foundation. He's also one of the longest standing participants in the Let's Encrypt community support forum, so we asked him to offer his thoughts on the role and impact of the forum as a resource for our users. Thank you for your many years of expertise and participation, Seth!</p>
      <footer class="blockquote-footer"><span class="blockquote-mdash">&mdash;</span> <cite title="Source Title">Josh Aas</cite>, Head of Let's Encrypt</footer>
    </div>
  </blockquote>
</div>
<p>Along with the tenth anniversary of Let&rsquo;s Encrypt&rsquo;s first certificate, we&rsquo;re also celebrating ten years of the <a href="https://community.letsencrypt.org/">Let&rsquo;s Encrypt Community Forum</a>, which has played a vital role in the Let&rsquo;s Encrypt community.</p>
<p>It&rsquo;s been the <a href="https://community.letsencrypt.org/c/help/13">first stop for end users with technical questions</a>. It&rsquo;s been the main way that <a href="https://community.letsencrypt.org/c/client-dev/14">client developers got help with ACME</a> and debugged compatibility issues. It&rsquo;s been the place where Let&rsquo;s Encrypt staff <a href="https://community.letsencrypt.org/c/api-announcements/18">made technical announcements</a> and got immediate feedback from affected parties.</p>
<p>It&rsquo;s happened in many different languages (including official French, Spanish, and Portuguese categories, use of numerous volunteers&rsquo; native languages, as well as many successful conversations via machine translation). For example, people have gotten help in Dutch, Russian, German, and Chinese.</p>
<p>Thousands of volunteers have provided help and successfully helped tens of thousands of users get their certificates. Occasionally, they&rsquo;ve also reported bugs in client software, documentation, or even the Let&rsquo;s Encrypt service itself. Many times a responsible developer was there to interact directly with the bug reporter.</p>
<p>Here are the monthly pageviews from the creation of the Community Forum until the present day:</p>
<figure>
<p><img src="/images/blog/2025.10.02.Ten-yrs-community-forum-image-1.png" alt="Monthly pageviews chart showing growth from 2015 to 2025"></p>
<figcaption>Other reports from the forum software show that much of the most recent pageview growth is due to robots, probably from AI training. But that may ultimately be helpful to users too, as AI systems learn about Let's Encrypt from the forum posts and become more able to answer users' questions correctly.</figcaption>
</figure>
<h3 id="seeing-the-results-of-one-s-efforts">Seeing the results of one&rsquo;s efforts</h3>
<p>The most common kind of interaction on the forum is one in which a Let&rsquo;s Encrypt end user shows up with some kind of problem, usually an inability to get or renew a certificate. In most cases, if the user is willing to answer some questions, the community is ultimately able to resolve the problem.</p>
<p>I&rsquo;ve often compared the satisfaction of helping users on the Let&rsquo;s Encrypt forum to what I felt while installing bike lights at a local cycling organization&rsquo;s bike light giveaway event. In both cases, one could engage for a few minutes with someone, maybe deal with some unanticipated oddities (extra-thick handlebars? an unusual seat post or cargo rack? a strange DNS setup? an unusual Apache configuration?). Usually, this would lead to a concrete practical improvement in safety afterward (the blinking red tail light freshly installed on someone&rsquo;s bike, or the lovely https:// prefix or padlock icon newly visible in the browser bar when browsing to a visitor&rsquo;s website). It&rsquo;s common in the Internet security world not to be able to see or appreciate how what we do helps people, so &ldquo;we just helped make connections to your specific web site more secure&rdquo; is especially satisfying.</p>
<p>Tangible safety upgrades!</p>
<figure>
<p><img src="/images/blog/2025.10.02.Ten-yrs-community-forum-image-2.png" alt="Bicycle with red rear safety light attached to seat post"></p>
<figcaption>Photo by Richard Masoner / Cyclelicious, CC-BY-SA 2.0. Not a bike light I personally installed.</figcaption>
</figure>
<figure>
<p><img src="/images/blog/2025.10.02.Ten-yrs-community-forum-image-3.png" alt="HTTPS padlock icon shown in browser address bar for Wikimedia website"></p>
<figcaption>I think Wikimedia Foundation figured out their Let's Encrypt certificates without support from the forum. But we're there if they ever need us!</figcaption>
</figure>
<h3 id="a-channel-between-let-s-encrypt-staff-and-the-community">A channel between Let&rsquo;s Encrypt staff and the community</h3>
<p>Let&rsquo;s Encrypt describes itself as &ldquo;free, automated, and open&rdquo;; part of that openness consists of its use of open standards (ACME) and open source CA software (Boulder). Part of it is also about how much of the CA&rsquo;s thinking happens in public! One example (of dozens) is that the <a href="https://community.letsencrypt.org/t/new-y-root-and-intermediate-hierarchy/241065">September 2025 Let&rsquo;s Encrypt root ceremony</a> was <a href="https://community.letsencrypt.org/t/preview-of-our-upcoming-root-ceremony/239494">discussed ahead of time on the forum</a>, starting back in July, with the plans and details all open for discussion and review. Let&rsquo;s Encrypt staff have even asked the community for feedback on how production and testing certificates ought to be named!</p>
<p>In other cases, like when there was <a href="https://community.letsencrypt.org/t/questions-regarding-announcing-six-day-and-ip-address-certificate-options-in-2025/232043">new functionality announced</a>, or <a href="https://community.letsencrypt.org/t/questions-regarding-shortening-the-lets-encrypt-chain-of-trust/201581">substantive technical changes affecting certificate issuance</a>, or <a href="https://community.letsencrypt.org/t/feedback-needed-for-our-new-account-pausing-feature-and-self-service-unpause-portal/222804">proposed rate limit changes</a>, or <a href="https://community.letsencrypt.org/t/revoking-certain-certificates-on-march-4/114864">problems requiring mass revocation</a>, or <a href="https://community.letsencrypt.org/t/help-thread-for-dst-root-ca-x3-expiration-september-2021/149190">expiring root certificates</a>, Let&rsquo;s Encrypt staff were available talking about all the details and directly answering end users&rsquo; questions. Again, there are lots of other examples, where changes large or small got announced, proposed, or discussed on the forum, with Let&rsquo;s Encrypt&rsquo;s own experts engaging with the community.</p>
<h3 id="final-thoughts-and-thanks">Final thoughts and thanks</h3>
<p>The forum runs on <a href="https://www.discourse.org/">Discourse</a>, which has continued to be an effective choice of forum software for the community. Discourse has nice technical and user interface features, but it&rsquo;s also pleasantly unobtrusive. The Discourse company has also generously been donating pro bono hosting for the forum for many years, and, of course, it uses a Let&rsquo;s Encrypt certificate.</p>
<p>The volunteers on the Let&rsquo;s Encrypt forum have made a huge contribution to Let&rsquo;s Encrypt&rsquo;s success. It&rsquo;s easy to imagine that many users might have given up on Let&rsquo;s Encrypt in frustration were it not for the efforts of dedicated volunteers to draw out the necessary details, notice the relevant issues, and patiently explain concepts that were confusing people. There are also volunteer moderators who&rsquo;ve worked hard to keep the forum on track, stop spam, and defuse distracting conflicts. Thanks to all of you.</p>
<p>Several software projects have been informed by discussions and issues on the forum, as developers there found opportunities to help large numbers of users. I would particularly highlight Alex Zorin&rsquo;s <a href="https://letsdebug.net/">Let&rsquo;s Debug</a> and Jonathan Griffin&rsquo;s <a href="https://certsage.com/">CertSage</a> as examples in this category. Let&rsquo;s Debug runs a series of practical live tests on a specified site to help users figure out why certificate issuance is failing, giving useful explanations of many of the most common failure reasons. CertSage is a client meant for users who have hosting plans without native support for Let&rsquo;s Encrypt, and without administrative access&mdash;but where they can run PHP scripts. These projects grew out of Alex&rsquo;s and Jonathan&rsquo;s experiences helping users on the forum and seeing the kinds of issues that came up repeatedly there. Joona Hoikkala&rsquo;s helpful <a href="https://github.com/joohoi/acme-dns">acme-dns</a>, which helps subscribers complete the ACME DNS challenge with a dedicated service instead of using an existing DNS server, also helped respond to a common issue that brought many people to the forum.</p>
<p>I would also like to thank Jacob Hoffman-Andrews for his early efforts to set a positive and welcoming tone on the forum. Jacob and other forum administrators always reminded the community to be patient and welcoming to each visitor, emphasizing that the forum was many users&rsquo; first interaction with Let&rsquo;s Encrypt, and that users ought to be welcomed regardless of their expertise or background (and regardless of whether their questions had been asked before by others).</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2025/10/07/ten-yrs-community-forum.html</guid>
      </item><item>
        <title>ACME Renewal Information (ARI) Published as RFC 9773</title>
        <link>https://letsencrypt.org/2025/09/16/ari-rfc.html</link>
        <pubDate>Tue, 16 Sep 2025 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Let&rsquo;s Encrypt has been proud to work with the <a href="https://www.ietf.org/">IETF</a> to maintain ACME as an open standard since we first developed the technology a decade ago. We&rsquo;re happy to announce that IETF has published our latest addition to the ACME protocol, <a href="https://www.rfc-editor.org/rfc/rfc9773.html">ACME Renewal Information (ARI)</a>, as RFC 9773. ARI helps keep the renewal process reliable during unexpected events affecting certificate validity.</p>
<p>Since the ACME protocol was first published as <a href="https://www.rfc-editor.org/rfc/rfc8555">RFC 8555</a>, the IETF <a href="https://datatracker.ietf.org/wg/acme/about/">ACME working group</a> has remained active, defining various extensions to the original ACME protocol, initiated either by Let&rsquo;s Encrypt or by colleagues from other organizations. For example, ACME WG documents have specified how to validate kinds of identifiers other than domain names, making it possible to use ACME to <a href="https://letsencrypt.org/2025/07/01/issuing-our-first-ip-address-certificate/">issue certificates for IP addresses</a>, or even in PKIs other than the web PKI.</p>
<p>The publication of RFC 9773 is the culmination of a process that began in September 2021 with the first ARI draft. Along the way, numerous colleagues from Let&rsquo;s Encrypt and elsewhere (thanked individually at the end of this post) contributed to the ARI specification and helped improve it.</p>
<h2 id="why-implement-ari">Why implement ARI?</h2>
<p>This is a good opportunity to remind our community about ARI and how implementing it can help users. If you&rsquo;re an ACME client user, you may want to check the documentation for your client to see if it has implemented ARI yet. New functionality like this is a great reason to make sure you&rsquo;re using up-to-date ACME client software. If you&rsquo;re a client developer, questions about ARI implementation are welcome in the Community Forum&rsquo;s <a href="https://community.letsencrypt.org/c/client-dev/14">Client Dev category</a>.</p>
<p>Sometimes certificate authorities, including Let&rsquo;s Encrypt, may perform mass revocations of an entire group or category of certificates. This most often happens when someone discovers that a certificate authority has made a mistake in how it validates or issues certificates, or has made a misstatement in how it describes its policies and procedures. In this case, the CA is required to revoke the affected certificates. This may happen through absolutely no fault of the subscribers. For example, in January 2022, <a href="https://community.letsencrypt.org/t/2022-01-25-issue-with-tls-alpn-01-validation-method/170450">we had to revoke approximately two million certificates</a> due to a technical error in our validation processes.</p>
<p>When we have to revoke certificates, we want to make sure that the websites using those certificates don&rsquo;t experience issues. That means those websites need to re-request issuance and install new certificates. Since CAs are sometimes required to revoke certificates on a 24 hour timeline or a 5 day timeline (depending on the nature of the incident), a process that relies on manual intervention from system administrators won&rsquo;t reach most websites in time.</p>
<p>ARI allows a certificate authority to advise a client to perform an early renewal of a certificate that the client would have anticipated did not need to be renewed yet, broadly because the CA knows that an early renewal is helpful, or necessary, in particular circumstances. In the mass revocation scenario, this allows ARI-aware clients to avoid outages due to certificate invalidity, because they can replace their certificates even before the revocation occurs.</p>
<p>Of course, we and other certificate authorities work diligently to prevent mass revocation events. We&rsquo;re encouraging ARI implementation as a form of emergency preparedness that can significantly mitigate the impact of this kind of problem, if and when it happens.</p>
<p>ARI also provides features to reduce the impact of load spikes where too many clients request certificates in a short period of time. Let&rsquo;s Encrypt doesn&rsquo;t need to use ARI for this today, because other improvements in popular clients&rsquo; renewal practices have already sufficiently smoothed out our load spikes. Even so, this will be a valuable ability for all ACME CAs to have available in the long term to better manage emergencies and disruptions.</p>
<p>On the server side, we added support for the ARI draft specification to our Boulder CA software in late 2021, so the Let&rsquo;s Encrypt CA has supported ARI for some time. If you are implementing ARI in your own client, the <a href="https://github.com/letsencrypt/pebble">Pebble ACME test-bed</a> also supports ARI so you can test against that implementation.</p>
<h2 id="thanks">Thanks</h2>
<p>Thanks to all of the people who contributed to this process at the ACME WG and elsewhere, including:  Roland Shoemaker and Jacob Hoffman-Andrews for coming up with the initial idea of ARI and for helping me learn the IETF process; Samantha Frank, Matt Holt, Ilari Liusvaara, and Wouter Tinus for contributing client implementations; Freddy Zhang for contributing an independent server implementation; and Rob Stradling, Andrew Ayer, and J.C. Jones for providing meaningful feedback and suggestions that significantly improved this specification.</p>
<p>Finally, our congratulations also to Q Misell for the recent publication of <a href="https://www.rfc-editor.org/rfc/rfc9799.html">RFC 9799</a>, another ACME WG document that went through the standards process alongside ARI.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2025/09/16/ari-rfc.html</guid>
      </item><item>
        <title>Native ACME Support Comes to NGINX</title>
        <link>https://letsencrypt.org/2025/09/11/native-acme-for-nginx.html</link>
        <pubDate>Thu, 11 Sep 2025 00:00:00 +0000</pubDate>
        <description><![CDATA[<div class="pull-quote-right">
  <blockquote class="blockquote">
    <span class="quote"></span>
    <div class="quote-text">
      <p class="quote-text-value">NGINX and Let's Encrypt share a common vision of an open and secure web. Now, with built-in support for ACME, the world's most popular web server, reverse proxy and ingress controller for Kubernetes can simplify certificate management for everyone. From the home lab to scaled-out, mission-critical enterprise deployments.</p>
      <footer class="blockquote-footer"><span class="blockquote-mdash">&mdash;</span> <cite title="Source Title">Liam Crilly</cite>, Sr Dir, Product Management, F5 NGINX</footer>
    </div>
  </blockquote>
</div>
<p>Our ideal has always been that server software could get and renew Let&rsquo;s Encrypt certificates automatically, with minimal human intervention.</p>
<p>Over time, more and more web servers and hosting environments have become capable of that, often via native ACME and Let&rsquo;s Encrypt integrations that allow users to manage certificates without third-party tools. On August 12, the popular open source web server NGINX <a href="https://blog.nginx.org/blog/native-support-for-acme-protocol">announced support</a> for ACME with their official <a href="https://nginx.org/en/docs/http/ngx_http_acme_module.html">ngx_http_acme module</a> (implemented with memory safe Rust code!).</p>
<p>NGINX is one of the most widely used pieces of software for operating a web server or proxy. In directly supporting ACME, NGINX joins other web servers like <a href="https://traefik.io/traefik">Traefik</a>, <a href="https://caddyserver.com/">Caddy</a> and <a href="https://httpd.apache.org/docs/2.4/mod/mod_md.html">Apache httpd</a> that can directly take advantage of certificates from Let&rsquo;s Encrypt and other ACME Certificate Authorities. NGINX&rsquo;s new support for ACME, together with other servers, means a significant majority of sites can now have native ACME support. Many other software environments, hosting plans, and devices also offer built-in official support for ACME.</p>
<p>Users have a wide range of choices to achieve integrations for their particular hosting environments. Native support in web servers is an option <a href="https://letsencrypt.org/docs/client-options/">alongside third-party clients</a> that can integrate with many of those same web servers. Native support typically provides more seamless integration, and it&rsquo;s less work for operators since they don&rsquo;t have to manage a separate ACME client. Having more tools that take care of certificates automatically helps us achieve our goal of <a href="https://letsencrypt.org/stats/">encrypting more and more of the web</a>, while reducing the amount of time and energy site operators have to spend.</p>
<p>Other project developers interested in integrating ACME more directly can <a href="https://letsencrypt.org/docs/#client-developer-information">read about the ACME protocol</a>, find existing <a href="https://letsencrypt.org/docs/client-options/#libraries">ACME library implementations</a> and other reusable software components, and join the <a href="https://community.letsencrypt.org/c/client-dev/14">Client Dev conversation on our Community Forum</a>.</p>
<p>We&rsquo;d like to thank NGINX and their parent company, F5, for their sponsorship of Let&rsquo;s Encrypt. This financial support helps us provide a trusted and reliable service to nearly 700 million websites.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2025/09/11/native-acme-for-nginx.html</guid>
      </item><item>
        <title>End of Life Plan for RFC 6962 Certificate Transparency Logs</title>
        <link>https://letsencrypt.org/2025/08/14/rfc-6962-logs-eol.html</link>
        <pubDate>Thu, 14 Aug 2025 00:00:00 +0000</pubDate>
        <description><![CDATA[<blockquote>
<p><strong>Update, August 18, 2025</strong></p>
<p>We have updated the read-only and shutdown dates to ensure that our new Static CT API logs are fully trusted by browsers before switching Oak to read-only in order to avoid any disruption.</p></blockquote>
<p>Let’s Encrypt operates two types of Certificate Transparency (“CT”) logs—some implement the original <a href="https://datatracker.ietf.org/doc/html/rfc6962">RFC 6962 API</a>, and some that implement the newer <a href="https://github.com/C2SP/C2SP/blob/main/static-ct-api.md">Static CT API</a>. Today we are announcing that on <strong>November 30, 2025</strong>, we will make our RFC 6962 logs read-only. Past that date, we will write only to our Static CT logs. On <strong>February 28, 2026</strong>, we will entirely shut down our RFC 6962 logs.</p>
<p>End users (consumers or relying parties) of Web PKI certificates do not need to take any action. The work that needs to be done to make this transition will be handled by Let’s Encrypt and the browsers.</p>
<p>RFC 6962 is from June of 2013 and describes the original version of CT. It was a revolutionary upgrade for transparency in the Web PKI, ultimately allowing anyone to monitor issuance from all certificate authorities. Over time, though, growth in certificate issuance volume has revealed that the original CT design doesn’t scale well enough. Let’s Encrypt currently issues more publicly trusted certificates in a single day than existed in total during 2013.</p>
<h2 id="what-are-the-issues-with-rfc-6962-logs">What are the issues with RFC 6962 logs?</h2>
<h3 id="cost">Cost</h3>
<p>The first issue with RFC 6962 logs is the high cost of running them, particularly at Web scale, which has significantly limited the number of entities willing to operate them. Annual cloud costs for our logs are approaching seven figures.</p>
<p>The biggest contributor to this is that the data is stored in a relational database. We’ve scaled that up by splitting each year’s worth of data into a “shard” with its own database, and then later shrinking the shards to cover six months instead of a full year.</p>
<p>The approach of splitting into more and more databases is not something we want to continue doing forever, as the operational burden and costs increase. The current storage size of a CT log shard is between 7 and 10 terabytes. That’s big enough to be concerning for a single database: we previously had a test log fail when we ran into a 16 TiB limit in MySQL.</p>
<p>Scaling read capacity up requires large database instances with fast disks and lots of RAM, which are not cheap. We’ve had numerous instances of CT logs becoming overloaded by clients attempting to read all the data in the log, overloading the database in the process. When rate limits are imposed to prevent overloading, clients are forced to slowly crawl the API, diminishing CT’s efficiency as a fast mechanism for detecting mis-issued certificates. Ideally, clients should be able to obtain copies of the whole log in a relatively short time, but the traditional API has made that impractical.</p>
<h3 id="availability">Availability</h3>
<p>The second issue with RFC 6962 logs is the potential for problems and non-compliance when the period called a Maximum Merge Delay (“MMD”) is exceeded.</p>
<p>One of the goals of CT was to have limited latency for submission to the logs. The Merge Delay design feature was added to guarantee that property. When receiving a new certificate submission, a CT log can return a Signed Certificate Timestamp (SCT) immediately, with a promise to include it in the log within the log’s MMD, conventionally 24 hours. While this seems like a good tradeoff to avoid the alternative of slowing down certificate issuance, there have been multiple incidents in which important logs have exceeded their maximum merge delay, breaking that promise.</p>
<p>If the log does not integrate the certificate within the MMD window, the log is out of compliance and can be distrusted. If a log is distrusted, it’s disruptive for the operators and those who depend on it, and there are fewer logs for the ecosystem to rely on.</p>
<h2 id="how-does-the-new-type-of-log-resolve-these-issues">How does the new type of log resolve these issues?</h2>
<p>In 2023 Filippo Valsorda suggested a new API for CT logs that avoids both of these issues—the Static CT API. The Static CT API for submitting certificates to logs is the same as RFC 6962, but the API for retrieving certificate information is quite different and the MMD is eliminated. The result is logs that are much more cost effective to operate and have better availability. We previously discussed our experiences testing out the new design in &ldquo;<a href="https://letsencrypt.org/2025/06/11/reflections-on-a-year-of-sunlight/">Reflections on a Year of Sunlight</a>.&rdquo;</p>
<h3 id="serving-tiles">Serving Tiles</h3>
<p>Certificate Transparency logs are a binary tree, with every node containing a hash of its two children. The “leaf” level contains the actual entries of the log: the certificates, appended to the right side of the tree. The top of the tree is digitally signed. This forms a cryptographically verifiable structure called a Merkle Tree, which can be used to check if a certificate is in the tree, and that the tree is append-only.</p>
<p>Static CT tiles are files containing 256 elements each, either hashes at a certain tree “height” or certificates (or pre-certificates) at the leaf level. Russ Cox has a great <a href="https://research.swtch.com/tlog#tiling_a_log">explanation of how tiles work</a> on his blog, or you can read the <a href="https://github.com/C2SP/C2SP/blob/main/static-ct-api.md#merkle-tree">relevant section of the Static CT specification</a>.</p>
<p>Unlike the dynamic endpoints in the RFC 6962 API, serving a tree as tiles doesn’t require any dynamic computation or request processing, so we can eliminate the need for API servers. Because the tiles are static, they’re efficiently cached, in contrast with CT APIs like get-proof-by-hash, which have a different response for every certificate, so there’s no shared cache. The leaf tiles can also be stored compressed, saving even more storage!</p>
<p>The idea of exposing the log as a series of static tiles is motivated by our desire to scale out the read path horizontally and relatively inexpensively. We can directly expose tiles in cloud object storage like S3, use a caching CDN, or use a webserver and a filesystem.</p>
<p>Object or file storage is readily available, can scale up easily, and costs significantly less than databases from cloud providers. It seemed like the obvious path forward. In fact, we already have an S3-backed cache in front of our existing CT logs, which means we are currently storing our data twice.</p>
<h3 id="no-more-merge-delay">No More Merge Delay</h3>
<p>Static CT takes a different approach to adding certificates to the log while maintaining the same external submission API as RFC 6962. Static CT logs hold submissions while it batches and integrates certificates in the log, eliminating the merge delay. While this leads to a small latency increase, we think it’s worthwhile to avoid one of the more common CT log failure cases.</p>
<p>It also lets us embed the final leaf index in an extension of our SCTs, bringing CT a step closer to direct client verification of Merkle tree proofs. The extension also makes it possible for clients to fetch the proof of log inclusion from the new static tile-based APIs, without requiring server-side lookup tables or databases.</p>
<h2 id="going-forward">Going Forward</h2>
<p>Let’s Encrypt has submitted new Static CT API logs for inclusion in certificate transparency programs. We expect these logs to be included and trusted prior to the read-only date for our RFC 6962 logs, and we will begin submitting our certificates to them as soon as possible.</p>
<p>We may stop submitting our own certificates to our RFC 6962 logs prior to the read-only date, but other CAs will be able to write certificates to our RFC 6962 logs until the read-only date.</p>
<h2 id="conclusion">Conclusion</h2>
<p>The Static CT API has proven to be operationally better and more scalable than the RFC 6962 design in almost every way. With the substantial increase in certificate volume over time, we need that improved efficiency to make running CT logs cost-effective. As a result, we’re switching fully to the new log architecture in order to make the best use of our resources. The Static CT API logs we operate will provide exactly the same security and transparency benefits as our old RFC 6962 log did.</p>
<p>As we explained above, this requires no changes at all for end users. It may require configuration changes on the part of certificate authorities that have been submitting certs to our old log (they can start submitting to one or both of our new logs instead). It also requires software updates for ecosystem participants who monitor logs; they’ll need to ensure that they have client software that’s compatible with the new API. Overall, this change should help ensure that our CT logging continues to be able to grow with the Web PKI.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2025/08/14/rfc-6962-logs-eol.html</guid>
      </item><item>
        <title>OCSP Service Has Reached End of Life</title>
        <link>https://letsencrypt.org/2025/08/06/ocsp-service-has-reached-end-of-life.html</link>
        <pubDate>Wed, 06 Aug 2025 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Today we turned off our Online Certificate Status Protocol (OCSP) service, as <a href="https://letsencrypt.org/2024/12/05/ending-ocsp/">announced</a> in December of last year. We stopped including OCSP URLs in our certificates more than 90 days ago, so all Let&rsquo;s Encrypt certificates that contained OCSP URLs have now expired. Going forward, we will publish revocation information exclusively via Certificate Revocation Lists (CRLs).</p>
<p>We ended support for OCSP primarily because it represents a considerable risk to privacy on the Internet. When someone visits a website using a browser or other software that checks for certificate revocation via OCSP, the Certificate Authority (CA) operating the OCSP responder immediately becomes aware of which website is being visited from that visitor&rsquo;s particular IP address. Even when a CA intentionally does not retain this information, as is the case with Let&rsquo;s Encrypt, it could accidentally be retained or CAs could be legally compelled to collect it. CRLs do not have this issue.</p>
<p>We are also taking this step because keeping our CA infrastructure as simple as possible is critical for the continuity of compliance, reliability, and efficiency at Let&rsquo;s Encrypt. For every year that we have existed, operating OCSP services has taken up considerable resources that can soon be better spent on other aspects of our operations. <a href="https://letsencrypt.org/2022/09/07/new-life-for-crls/">Now that we support CRLs</a>, our OCSP service has become unnecessary.</p>
<p>At the height of our OCSP service&rsquo;s traffic earlier this year, we handled approximately 340 billion OCSP requests per month. That&rsquo;s more than 140,000 requests per second handled by our CDN, with 15,000 requests per second handled by our origin. We&rsquo;d like to thank <a href="https://www.akamai.com/">Akamai</a> for generously donating CDN services for OCSP to Let&rsquo;s Encrypt for the past ten years.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2025/08/06/ocsp-service-has-reached-end-of-life.html</guid>
      </item><item>
        <title>We&#39;ve Issued Our First IP Address Certificate</title>
        <link>https://letsencrypt.org/2025/07/01/issuing-our-first-ip-address-certificate.html</link>
        <pubDate>Tue, 01 Jul 2025 00:00:00 +0000</pubDate>
        <description><![CDATA[<blockquote>
<p><strong>Update: January 15, 2026</strong></p>
<p>Six-day and IP address certificates are now generally available. See <a href="/2026/01/15/6day-and-ip-general-availability">6-day and IP Address Certificates are Generally Available</a> for details.</p></blockquote>
<p>Since Let&rsquo;s Encrypt started issuing certificates in 2015, people have repeatedly requested the ability to get certificates for IP addresses, an option that only a few certificate authorities have offered. Until now, they&rsquo;ve had to look elsewhere, because we haven&rsquo;t provided that feature.</p>
<p>Today, we&rsquo;ve issued our <a href="https://crt.sh/?id=19376952215">first certificate for an IP address</a>, as we <a href="https://letsencrypt.org/2025/01/16/6-day-and-ip-certs/">announced we would</a> in January. As with other new certificate features on our engineering roadmap, we&rsquo;ll now start gradually rolling out this option to more and more of our subscribers.</p>
<h3 id="some-background-on-ip-address-certs">Some Background on IP Address Certs</h3>
<p>IP addresses are the underlying numerical addresses used on the Internet. Every device on the Internet has one (though, in modern practice, it might be shared with other devices, like when an entire home network shares a single public IP address). The Internet infrastructure uses them to route communications to their proper destination. IP addresses come in two forms, IPv4 and IPv6, and generally look like 54.215.62.21 (IPv4) or 2600:1f1c:446:4900::65 (IPv6).</p>
<p>Most Internet users rarely see or refer to IP addresses directly. Instead, they almost always use domain names like letsencrypt.org to refer to Internet services. The <a href="https://en.wikipedia.org/wiki/Domain_Name_System">domain name system (DNS)</a> is a part of the Internet infrastructure that&rsquo;s responsible for allowing software to find the IP addresses associated with a particular domain name. For instance, your web browser can use DNS to find out that the service <a href="https://letsencrypt.org/">https://letsencrypt.org/</a> (Let&rsquo;s Encrypt&rsquo;s own website) is provided from the IP addresses 54.215.62.21 and 2600:1f1c:446:4900::65, among several others. This probably happened behind the scenes before you started reading this article! Your web browser needed to know our IP address in order to actually connect to our site and fetch this article.</p>
<p>Because we overwhelmingly tend to think and talk about Internet services in terms of domain names, those are the identifiers that are normally listed in certificates like those that Let&rsquo;s Encrypt provides to our subscribers. Since you know us as &ldquo;letsencrypt.org&rdquo; and not as, say, &ldquo;54.215.62.21,&rdquo; it makes the most sense for our domain name to be on our certificate. After all, that&rsquo;s what you&rsquo;ll want your web browser to check against. This also gives Internet services more flexibility to be hosted in multiple locations, or to change where they&rsquo;re hosted, without necessarily needing separate certificates for each server.</p>
<p>In principle, there&rsquo;s no reason that a certificate couldn&rsquo;t be issued for an IP address rather than a domain name, and in fact the technical and policy standards for certificates have always allowed this, with a handful of certificate authorities offering this service on a small scale. In Let&rsquo;s Encrypt&rsquo;s case, we&rsquo;ve preferred to wait until some other pieces, like short-lived certs, were in place before we made this option available for our subscribers.</p>
<h3 id="why-ip-address-certs-are-less-common">Why IP Address Certs Are Less Common</h3>
<p>First and foremost, it&rsquo;s because Internet users usually know services by domain names, not by IP addresses, and because IP addresses can easily change &ldquo;behind the scenes&rdquo; with no prior notice. For instance, a popular site could switch from one cloud hosting company to a different one, and update its DNS records to point at the new host. Most users wouldn&rsquo;t ever notice the change at all, even though the site&rsquo;s underlying IP addresses would be completely different.</p>
<p>Second, because IP addresses can change so easily, the sense of &ldquo;ownership&rdquo; one might have for them&mdash;or that a certificate authority might be able to attest to&mdash;tends to be weaker than for a domain name. If you&rsquo;re hosting something in your house on a residential broadband connection, your Internet service provider most likely doesn&rsquo;t guarantee that your IP address will stay the same over time. (That is, most home Internet users have a &ldquo;dynamic IP address&rdquo; from their ISPs, rather than a &ldquo;static IP address.&rdquo;) In that case, you have to contend with the possibility that that address may change often, possibly without warning, and that your old address may be assigned to somebody else.</p>
<p>Third, most Internet service operators don&rsquo;t expect that end users will ever intentionally connect to their sites directly by IP address. In some cases, when an IP address is shared by different websites or different devices, connecting by IP address alone wouldn&rsquo;t even work properly. In that case, there&rsquo;s not much benefit to obtaining a certificate for the IP address!</p>
<h3 id="how-let-s-encrypt-subscribers-may-use-ip-address-certs">How Let&rsquo;s Encrypt Subscribers May Use IP Address Certs</h3>
<p>Most current subscribers should be fine with their existing domain name certs and won&rsquo;t need IP address certs. Subscribers who have a use for an IP address cert are typically already aware of that. A few use cases that we&rsquo;re aware of include:</p>
<ul>
<li>
<p>A default page for hosting providers, in case someone pastes a server&rsquo;s IP address into a browser instead of an individual site name (right now, this normally produces an error in the browser).</p>
</li>
<li>
<p>A way to access your website if you don&rsquo;t have a domain name at all (at some cost in reliability and convenience compared to getting a domain name).</p>
</li>
<li>
<p>Securing <a href="https://en.wikipedia.org/wiki/DNS_over_HTTPS">DNS over HTTPS</a> (DoH) or other infrastructure services. Having a certificate makes it much easier for DoH servers to prove their identities to clients. That could make it more feasible for DoH users or clients to enforce a requirement for a valid publicly-trusted certificate when connecting to DoH servers.</p>
</li>
<li>
<p>Securing remote access to some home devices (like network-attached storage servers and Internet-of-things devices) even without a domain name.</p>
</li>
<li>
<p>Securing ephemeral connections within cloud hosting infrastructure, like connections between one back-end cloud server and another, or ephemeral connections to administer new or short-lived back-end servers via HTTPS&mdash;as long as those servers have at least one public IP address available.</p>
</li>
</ul>
<h3 id="how-to-get-an-ip-address-cert">How To Get an IP Address Cert</h3>
<p>IP address certificates are available right now in <a href="https://letsencrypt.org/docs/staging-environment/">Staging</a>. They should be generally available in Prod later in 2025, at the same time that short-lived certificates become generally available. Prior to general availability we may allow list issuance for a limited number of partners who can provide us with feedback.</p>
<p>Many Let&rsquo;s Encrypt client applications should already be able to request certificates for IP addresses, although there can be minor technical changes required to support this in some client software.</p>
<p>As a matter of policy, Let&rsquo;s Encrypt certificates that cover IP addresses must be short-lived certs, valid for only about six days. As such, your ACME client must support the <a href="https://datatracker.ietf.org/doc/draft-aaron-acme-profiles/">draft ACME Profiles specification</a>, and you must configure it to request <a href="https://letsencrypt.org/docs/profiles/#shortlived">the <code>shortlived</code> profile</a>. And, probably not surprisingly, you can&rsquo;t use the DNS <a href="https://letsencrypt.org/docs/challenge-types/">challenge method</a> to prove your control over an IP address; only the http-01 and tls-alpn-01 methods can be used.</p>
<p>If your client software requests an IP address cert with details that aren&rsquo;t compatible with these policies, the order will be rejected by the ACME server. In this case, your client application may need to be updated or reconfigured. Feel free to ask for help on the <a href="https://community.letsencrypt.org/">Let&rsquo;s Encrypt community forum</a> if you encounter any problems, either as a client application developer or as an end user.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2025/07/01/issuing-our-first-ip-address-certificate.html</guid>
      </item><item>
        <title>Expiration Notification Service Has Ended</title>
        <link>https://letsencrypt.org/2025/06/26/expiration-notification-service-has-ended.html</link>
        <pubDate>Thu, 26 Jun 2025 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Since its inception, Let’s Encrypt has been sending expiration notification emails to subscribers that have provided an email address to us via the ACME API. This service ended on June 4, 2025. The decision to end the service is the result of the following factors:</p>
<ol>
<li>Over the past 10 years more and more of our subscribers have been able to put reliable automation into place for certificate renewal.</li>
<li>Providing expiration notification emails means that we have to retain millions of email addresses connected to issuance records. As an organization that values privacy, removing this requirement is important to us.</li>
<li>Providing expiration notifications costs Let&rsquo;s Encrypt tens of thousands of dollars per year, money that we believe can be better spent on other aspects of our infrastructure.</li>
<li>Providing expiration notifications adds complexity to our infrastructure, which takes time and attention to manage and increases the likelihood of mistakes being made. Over the long term, particularly as we add support for new service components, we need to manage overall complexity by phasing out system components that can no longer be justified.</li>
</ol>
<p>For those who would like to continue receiving expiration notifications, we recommend using a third party service such as <a href="https://redsift.com/pulse-platform/certificates-lite">Red Sift Certificates Lite</a> (formerly Hardenize). Red Sift&rsquo;s monitoring service providing expiration emails is free of charge for up to 250 certificates. More monitoring options can be found <a href="/docs/monitoring-options/">here</a>.</p>
<p>We have deleted the email addresses provided to Let’s Encrypt via the ACME API that were stored in our CA database in association with issuance data. This doesn&rsquo;t affect addresses signed up to mailing lists and other systems. They are managed in a separate ISRG system unassociated with issuance data.</p>
<p>Going forward, if an email address is provided to Let’s Encrypt via the ACME API, Let’s Encrypt will not store the address but will instead forward it to the general ISRG mailing list system unassociated with any account data. If the email address has not been seen before, that system may send an onboarding email with information about how to subscribe to various sources of updates.</p>
<p>If you’d like to stay informed about technical updates and other news about Let’s Encrypt and our parent nonprofit, <a href="https://abetterinternet.org">ISRG</a>, based on the preferences you choose, you can sign up for our email lists below:</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2025/06/26/expiration-notification-service-has-ended.html</guid>
      </item><item>
        <title>Reflections on a Year of Sunlight</title>
        <link>https://letsencrypt.org/2025/06/11/reflections-on-a-year-of-sunlight.html</link>
        <pubDate>Wed, 11 Jun 2025 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>The Certificate Transparency ecosystem has been improving transparency for the web PKI since 2013. It helps make clear exactly what certificates each certificate authority has issued and makes sure errors or compromises of certificate authorities are detectable.</p>
<p>Let&rsquo;s Encrypt participates in CT both as a certificate issuer and <a href="https://letsencrypt.org/2019/05/15/introducing-oak-ct-log/">as a log operator</a>. For the past year, <a href="https://letsencrypt.org/2024/03/14/introducing-sunlight/">we&rsquo;ve also been running an experiment</a> to help validate a next-generation design for Certificate Transparency logs. That experiment is now nearing a successful conclusion. We&rsquo;ve demonstrated that the new architecture (called the &ldquo;<a href="https://github.com/C2SP/C2SP/blob/main/static-ct-api.md">Static CT API</a>&rdquo;) works well, providing greater efficiency and making it easier to run huge and reliable CT log services with comparatively modest resources. The Static CT API also makes it easier to download and share data from CT logs.</p>
<p>The <a href="https://sunlight.dev/">Sunlight log implementation</a>, alongside other Static CT API log implementations, is now on a path to production use. Browsers are now officially accepting Static CT API logs into their log programs as a means to help guarantee that the contents of CA-issued certificates are all publicly disclosed and publicly accessible (see <a href="https://groups.google.com/a/chromium.org/g/ct-policy/c/YJh40MRU950">Safari&rsquo;s</a> and <a href="https://groups.google.com/a/chromium.org/g/ct-policy/c/HBFZHG0TCsY/m/HAaVRK6MAAAJ">Chrome&rsquo;s</a> recent announcements), although the browsers also require the continued use of a traditional <a href="https://datatracker.ietf.org/doc/html/rfc6962">RFC 6962</a> log alongside the new type.</p>
<p>All of this is good news for everyone who runs, submits certificates to, or monitors a CT log: as the new architecture gets adopted, we can expect to see more organizations running more logs, at lower cost, and with greater overall capacity to keep up with the large volume of publicly-trusted certificates.</p>
<h2 id="certificate-transparency">Certificate Transparency</h2>
<p><a href="https://certificate.transparency.dev/">Certificate Transparency</a> (CT) was introduced in 2013 in response to concerns about how Internet users could detect misbehavior and compromise of certificate authorities. Prior to CT, it was possible for a CA to issue an inaccurate or malicious certificate that could be used to attack a relatively small number of users, and that might never come to wider attention. A team led by Google responded to this by creating a transparency log mechanism, where certificate authorities (like Let&rsquo;s Encrypt) must disclose all of the certificates that we issue by submitting them to public log services. Web browsers now generally reject certificates unless the certificates include cryptographic proof (&ldquo;Signed Certificate Timestamps&rdquo;, or SCTs) demonstrating that they were submitted to and accepted by such logs.</p>
<p>The CT logs themselves use a cryptographic append-only ledger to prove that they haven&rsquo;t deleted or modified their records. There are currently over a dozen CT log services, most of them also run by certificate authorities, including <a href="https://letsencrypt.org/docs/ct-logs/">Let&rsquo;s Encrypt&rsquo;s own Oak log</a>.</p>
<h2 id="the-static-ct-api">The Static CT API</h2>
<p>The original 2013 CT log design has been used with relatively few technical changes since it was first introduced, but several other transparency logging systems have been created in other areas, such as <a href="https://go.dev/ref/mod#checksum-database">sumdb</a> for Golang, which helps ensure that the contents of Golang package updates are publicly recorded. While they were originally inspired by CT, more-recently invented transparency logs have improved on its design.</p>
<p>The current major evolution of CT was led by <a href="https://filippo.io/">Filippo Valsorda</a>, a cryptographer with an interest in transparency log mechanisms, with help from others in the CT ecosystem. Portions of the new design are directly based on sumdb. In addition to designing the new architecture, Valsorda also wrote the implementation that we&rsquo;ve been using, called <a href="https://sunlight.dev/">Sunlight</a>, with support from Let&rsquo;s Encrypt. We&rsquo;re excited to see that there are now at least three other compatible implementations: Google&rsquo;s <a href="https://github.com/transparency-dev/trillian-tessera">trillian-tessera</a>, Cloudflare&rsquo;s <a href="https://blog.cloudflare.com/azul-certificate-transparency-log/">Azul</a>, and an independent project called <a href="https://blog.transparency.dev/i-built-a-new-certificate-transparency-log-in-2024-heres-what-i-learned">Itko</a>.</p>
<p>The biggest change for the Static CT API is that logs are now represented, and downloaded by verifiers, as simple collections of flat files (called &ldquo;tiles,&rdquo; so some implementers have also been referring to these as &ldquo;tiled logs&rdquo; or &ldquo;tlogs&rdquo;). Anyone who wants to download log data can do so just by downloading these files. This is great for log operators because these simple file downloads can be distributed in various ways, including caching by a CDN, which was less practical and efficient for the classic CT API.</p>
<p>The new design is also simpler and more efficient from the log operator&rsquo;s perspective, making it cheaper to run logs. As we said last year, this may enable us and other operators to increase reliability and availability by running several separate logs, likely with lower overall resource requirements than a single traditional log.</p>
<h2 id="our-sunlight-experiment">Our Sunlight experiment</h2>
<figure class="card border-0 pic-quote-right">
<img src="/images/blog/sunlight_logo_main.png" class="mx-auto img-fluid" alt="Sunlight">
<figcaption class="image-caption">Filippo Valsorda's Sunlight logo (CC BY-ND 4.0), &ldquo;based on a <a href="https://www.tuscolo.org/il-parco/">real place</a> in the vicinity of Rome&rdquo;</figcaption>
</figure>
<p>For the past year, we&rsquo;ve run three Sunlight logs, called Twig, Willow, and Sycamore. We&rsquo;ve been logging all of our own issued certificates, which represent a majority of the total volume of all publicly-trusted certificates, into our Sunlight logs. Sunlight logged these certificates quickly and correctly on relatively modest server hardware. Notably, each log&rsquo;s write side was handled comfortably by just a single server. We also achieved high availability for these log services throughout the course of this experiment. (Because our Sunlight logs are not yet trusted by web browsers, we didn&rsquo;t include the SCT proofs that they returned to us in the actual certificates we gave out to our subscribers; those proofs wouldn&rsquo;t have been of use to our subscribers yet and would just have taken up space.)</p>
<p>A potential failure mode of traditional CT logs is that they could be unacceptably slow in incorporating newly-submitted certificates (known as missing the maximum merge delay), which can result in a log becoming distrusted. This isn&rsquo;t a possibility for our new Sunlight-based logs: they always completely incorporate newly-submitted certificates before returning an SCT to the submitter, so the effective merge delay is zero! Of course, any log can suffer outages for a variety of reasons, but this feature of Sunlight makes it less likely that any outages will be fatal to a log&rsquo;s continued operation.</p>
<p>We&rsquo;ve demonstrated that Sunlight and the Static CT API work in practice, and this demonstration has helped to confirm the browser developers&rsquo; hope that Static CT API logs can become an officially-supported part of CT. As a result, the major browsers that enforce CT have now permitted Static CT API logs to apply for inclusion in browsers as publicly-trusted logs, and we&rsquo;re preparing to apply for this status for our Willow and Sycamore logs with the Chrome and Safari CT log programs.</p>
<p>Let&rsquo;s Encrypt will run at least these two logs, and possibly others over time, for the foreseeable future. Once they&rsquo;re trusted by browsers, we&rsquo;ll encourage other CAs to submit to them as well, and we&rsquo;ll begin including SCTs from these logs in our own certificates (alongside SCTs from traditional CT logs).</p>
<h2 id="how-to-participate">How to participate</h2>
<p>The new Static CT API and the rollout of tile-based logs will bring various changes and opportunities for community members.</p>
<h3 id="new-certificate-transparency-log-operators">New Certificate Transparency log operators</h3>
<p>Companies and non-profit organizations could help support the web PKI by running a CT log and applying for it to be publicly trusted. Implementations like Sunlight will have substantially lower resource requirements than first-generation CT logs, particularly when cached behind a CDN. The biggest resource demands for a log operator will be storage and upstream bandwidth. A publicly-trusted log is also expected to maintain relatively high availability, because CAs need logs to be available in order to continue issuing certificates.</p>
<p>We don&rsquo;t have statistics to share about the exact resource requirements for such a log yet, but after we have practical experience running a fully publicly-trusted Sunlight log, we should be able to make this more concrete. As noted above, the compute side of the log can be handled by a single server. Sunlight author Filippo Valsorda has recently started running a Sunlight log&mdash;also on just a single server&mdash;and offered <a href="https://groups.google.com/a/chromium.org/g/ct-policy/c/KCzYEIIZSxg/m/zD26fYw4AgAJ?pli=1">more detailed cost breakdowns</a> for that log&rsquo;s setup, with an estimated total cost around $10,000 per year. The costs for our production Static CT API logs may be higher than those for Filippo&rsquo;s log, but still far less than the costs for our traditional RFC 6962 logs.</p>
<p>As with trust decisions about CAs, browser developers are the authorities about which CT logs become publicly trusted. Although any person or organization can run a log, browser developers will generally prefer to trust logs whose continued availability they&rsquo;re confident of&mdash;typically those run by stable organizations with experience running some form of public Internet services. Unlike becoming a certificate authority, running a log does not require a formal audit, as the validation of the log&rsquo;s availability and correctness can be performed purely by observation.</p>
<h3 id="certificate-authorities">Certificate authorities</h3>
<p>Once the Willow and Sycamore logs are trusted by browsers, our fellow certificate authorities can choose to start logging certificates to them as part of their issuance processes. (Initially, you should still include at least one SCT from a traditional CT log in each certificate.) The details, including the log API endpoints and keys, are available at <a href="https://letsencrypt.org/docs/ct-logs/">our CT log page</a>. You can start submitting to these logs right away if you prefer; just bear in mind that the SCTs they return aren&rsquo;t useful to subscribers yet, and won&rsquo;t be useful until browsers are updated to trust the new logs.</p>
<h3 id="ct-data-users">CT data users</h3>
<p>You can monitor CT in order to watch for certificate issuances for your own domain names, or as part of monitoring or security products or services, or for Internet security research purposes. Many of our colleagues have been doing this for some time as a part of various tools they maintain. The Static CT API should make this easier, because you&rsquo;ll be able to download and share log tiles as sets of ordinary files.</p>
<p>If you already run such monitoring tools, please note that <em>you&rsquo;ll need to update your data pipeline</em> in order to access Static CT API logs; since the read API is not backwards-compatible, CT API clients will need to be modified to support the new API. Without updated tools, your view of the CT system will become partial!</p>
<p>Also note that getting a complete view of all of CT will still require downloading data from traditional logs, which will probably continue to be true for several years.</p>
<h3 id="software-developers">Software developers</h3>
<p>As logs based on the new API enter production use, it will be important to have tools to interact with and search these logs. We can all benefit from more software that understands how to do this. Since file downloads are such a familiar piece of software functionality, it will probably be easier for developers to develop against the new API compared to the original one.</p>
<p>We&rsquo;ve also continued to see greater integration of transparency logging tools into other kinds of services, such as software updates. There&rsquo;s a growing transparency log ecosystem that&rsquo;s always in need of more tools and integrations. As we mentioned above, transparency logs are increasingly learning from one another, and there are also mechanisms for more direct integration between different kinds of transparency logs (known as &ldquo;witnessing&rdquo;). Software developers can help improve different aspects of Internet security by contributing to this active and growing area.</p>
<h2 id="conclusion">Conclusion</h2>
<p>The Certificate Transparency community and larger transparency logging community have experienced a virtuous cycle of innovation, sharing ideas and implementation code between different systems and demonstrating the feasibility of new mechanisms and functionality. With the advent of tile-based logging in CT, the state of the art has moved forward in a way that helps log operators run our logs much more efficiently without compromising security.</p>
<p>We&rsquo;re proud to have participated in this experiment and the engineering conversation around the evolution of logging architectures. Now that we&rsquo;ve shown how well the new API really works at scale, we look forward to having publicly-trusted Sunlight logs later this year!</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2025/06/11/reflections-on-a-year-of-sunlight.html</guid>
      </item><item>
        <title>How We Reduced the Impact of Zombie Clients</title>
        <link>https://letsencrypt.org/2025/06/04/how-we-reduced-the-impact-of-zombie-clients.html</link>
        <pubDate>Wed, 04 Jun 2025 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Every night, right around midnight (mainly <a href="https://en.wikipedia.org/wiki/Coordinated_Universal_Time">UTC</a>), a horde of zombies wakes up and clamors for &hellip; digital certificates!</p>
<p>The zombies in question are abandoned or misconfigured Internet servers and ACME clients that have been set to request certificates from Let&rsquo;s Encrypt. As our certificates <a href="https://letsencrypt.org/2015/11/09/why-90-days/">last for at most 90 days</a>, these zombie clients&rsquo; software knows that their certificates are out-of-date and need to be replaced. What they don&rsquo;t realize is that their quest for new certificates is doomed! These devices are cursed to seek certificates again and again, never receiving them.</p>
<p>But they do use up a lot of certificate authority resources in the process.</p>
<h3 id="the-zombie-client-problem">The Zombie Client Problem</h3>
<p>Unlike a human being, software doesn&rsquo;t give up in frustration, or try to modify its approach, when it repeatedly fails at the same task. Our emphasis on automation means that the vast majority of Let&rsquo;s Encrypt certificate renewals are performed by automated software. This is great when those renewals succeed, but it also means that forgotten clients and devices can continue requesting renewals unsuccessfully for months, or even years.</p>
<p>How might that happen? Most often, it happens when a device no longer has a domain name pointed to it. The device itself doesn&rsquo;t know that this has changed, so it treats renewal failures as transient even though they are actually permanent. For instance:</p>
<ul>
<li>An organization may have allowed a domain name registration to lapse because it is no longer needed, but its servers are still configured to request certs for it.</li>
<li>Or, a home user stopped using a particular dynamic-DNS domain with a network-attached storage device, but is still using that device at home. The device doesn&rsquo;t realize that the user no longer expects to use the name, so it keeps requesting certs for it.</li>
<li>Or, a web hosting or CDN customer migrated to a different service provider, but never informed the old service provider. The old service provider&rsquo;s servers keep requesting certs unsuccessfully. If the customer was in a free service tier, there might not be invoices or charges reminding the customer to cancel the service.</li>
<li>Or any number of other, subtler changes in a subscriber&rsquo;s infrastructure, such as changing a firewall rule or some webserver configuration.</li>
</ul>
<p>At the scale of Let&rsquo;s Encrypt, which now covers <a href="https://letsencrypt.org/stats/">hundreds of millions of names</a>, scenarios like these have become common, and their impact has become substantial. In 2024, we noticed that about half of all certificate requests to the Let&rsquo;s Encrypt ACME API came from about a million accounts that never successfully complete any validations. Many of these had completed validations and issued certificates sometime in the past, but nowadays every single one of their validation attempts fails, and they show no signs that this will change anytime soon.</p>
<p>Unfortunately, trying to validate those futile requests still uses resources. Our CA software has to generate challenges, reach out and attempt to validate them over the Internet, detect and report failures, and record all of the associated information in our databases and audit logs. And over time, we&rsquo;ve seen more and more recurring failures: accounts that always fail their issuance requests have been growing at around 18% per year.</p>
<p>In January, we mentioned that we had been addressing the zombie client problem <a href="https://letsencrypt.org/2025/01/30/scaling-rate-limits/">through our rate limit system</a>. This post provides more detail on that progress. </p>
<h3 id="our-rate-limit-philosophy">Our Rate Limit Philosophy</h3>
<p>If you&rsquo;ve used Let&rsquo;s Encrypt as a subscriber, you may have run into one of our <a href="https://letsencrypt.org/docs/rate-limits/">rate limits</a> at some point, maybe during your initial setup process. We have eight different kinds of rate limits in place now; as our January post describes, they&rsquo;ve become more algorithmically sophisticated and grown to address a wider range of problems. A key principle for Let&rsquo;s Encrypt is that our rate limiting is not a punishment. We don&rsquo;t think of rate limits as a way of retaliating against a client for misbehavior. Rate limits are simply a tool to maximize the efficient use of our limited resources and prevent people and programs from using up those resources for no constructive purpose.</p>
<p>We&rsquo;ve consistently tried to design our rate limit mechanisms in line with that philosophy. So if a misconfiguration or misunderstanding has caused excessive requests in the past, we&rsquo;re still happy to welcome the user in question back and start issuing them certificates again&mdash;once the problem has been addressed. We want the rate limits to put a brake on wasteful use of our systems, but not to frustrate users who are actively trying to make Let&rsquo;s Encrypt work for them.</p>
<p>In addition, we&rsquo;ve always implemented our rate limits to err on the side of permissiveness. For example, if the Redis instances where rate limits are tracked have an outage or lose data, the system is designed to permit more issuance rather than less issuance as a result.</p>
<p>We wanted to create additional limits that would target zombie clients, but in a correspondingly non-punitive way that would avoid any disruption to valid issuance, and welcome subscribers back quickly if they happened to notice and fix a long-time problem with their setups.</p>
<h3 id="our-zombie-related-rate-limits-and-their-impact">Our Zombie-Related Rate Limits and Their Impact</h3>
<p>In planning a new zombie-specific response, we decided on a &ldquo;pausing&rdquo; approach, which can temporarily limit an account&rsquo;s ability to proceed with certificate requests. The core idea is that, if a particular account consistently fails to complete validation for a particular hostname, we&rsquo;ll pause that account-hostname pair. The pause means that any new order requests from that account for that hostname will be rejected immediately, before we get to the resource-intensive validation phase.</p>
<p>This approach is more finely targeted than pausing an entire account. Pausing account-hostname pairs means that your ability to issue certs for a specific name could be paused due to repeated failures, but you can still get all of your other certs like normal. So a large hosting provider doesn&rsquo;t have to fear that its certificate issuance on behalf of one customer will be affected by renewal failures related to a problem with a different customer&rsquo;s domain name. The account-specificity of the pause, in turn, means that validation failures from one subscriber or device won&rsquo;t prevent a different subscriber or device from attempting to validate the same name, as long as the devices in question don&rsquo;t share a single Let&rsquo;s Encrypt account.</p>
<p>In September 2024, we began applying our zombie rate limits manually by pausing about 21,000 of the most recurrently-failing account-hostname pairs, those which were consistently repeating the same failed requests many times per day, every day. After implementing that first round of pauses, we immediately saw a significant impact on our failed request rates. As we announced at that time, we also began <a href="https://community.letsencrypt.org/t/automatic-pausing-of-zombie-clients/229642">using a formula to automatically pause other zombie client account-hostname pairs from December 2024 onward</a>. The associated new rate limit is called &ldquo;<a href="https://letsencrypt.org/docs/rate-limits/#consecutive-authorization-failures-per-hostname-per-account">Consecutive Authorization Failures per Hostname Per Account</a>&rdquo; (and is independent of the existing &ldquo;Authorization Failures per Hostname Per Account&rdquo; limit, which resets every hour).</p>
<p>This formula relates to the frequency of successive failed issuance requests for the same domain name by the same Let&rsquo;s Encrypt account. It applies only to failures that happen again and again, with no successful issuances at all in between: a single successful validation immediately resets the rate limit all the way to zero. Like all of our rate limits, this is not a punitive measure but is simply intended to reduce the waste of resources. So, we decided to set the thresholds rather high in the expectation that we would catch only the most disruptive zombie clients, and ultimately only those clients that were extremely unlikely to succeed in the future based on their substantial history of failed requests. We don&rsquo;t hurry to block requesters as zombies: according to our current formula, client software following the default established by EFF&rsquo;s <a href="https://certbot.eff.org/">Certbot</a> (two renewal attempts per day) would be paused as a zombie only after about ten years of constant failures. More aggressive failed issuance attempts will get a client paused sooner, but clients will generally have to fail hundreds or thousands of attempts in a row before they are paused.</p>
<p>Most subscribers using mainstream client applications with default configurations will never encounter this rate limit, even if they forget to deactivate renewal attempts for domains that are no longer pointed at their servers. As described below, our current limit is already providing noticeable benefits with minimal disruption, and we&rsquo;re likely to tighten it a bit in the near future, so it will trigger after somewhat fewer consecutive failures.</p>
<h3 id="self-service-unpausing">Self-Service Unpausing</h3>
<p>A key feature in our zombie issuance pausing mechanism is self-service unpausing. Whenever an account-hostname pair is paused, any new certificate requests for that hostname submitted by that account are immediately rejected. But this means that the &ldquo;one successful validation immediately resets the rate limit counter&rdquo; feature can no longer come into effect: once they&rsquo;re paused, they can&rsquo;t even attempt validation anymore.</p>
<p>So every rejection comes with an error message explaining what has happened and a custom link that can be used to immediately unpause that account-hostname pair and remove any other pauses on the same account at the same time. The point of this is that subscribers who notice at some point that issuance is failing and want to intervene to get it working again have a straightforward option to let Let&rsquo;s Encrypt know that they&rsquo;re aware of the recurring failures and are still planning to use a particular account. As soon as subscribers notify us via the self-service link, they&rsquo;ll be able to issue certificates again.</p>
<p>Currently, the user interface for an affected subscriber looks like this:</p>
<img src="/images/blog/blog-2025-06-04--image1.jpg" class="blog-image-constrained my-5" alt="Let's Encrypt unpause interface">
<p>This link would be provided via an ACME error message in response to any request that was blocked due to a paused account-hostname pair.</p>
<p>As it&rsquo;s turned out, the unpause option shown above has only been used by about 3% of affected accounts! This goes to show that most of the zombies we&rsquo;ve paused were, in fact, well and truly forgotten about.</p>
<p>However, the unpause feature is there for whenever it&rsquo;s needed, and there may be cases when it will become more important. A very large integration could trigger the zombie-related rate limits if a newly-introduced software bug causes what looks like a very high volume of zombie requests in a very short time. In that case, once that bug has been noticed and fixed, an integrator may need to unpause its issuance on behalf of lots of customers at once. Our unpause feature permits unpausing 50,000 domain names on a single account at a time, so even the largest integrators can get themselves unpaused expeditiously in this situation.</p>
<h3 id="conclusion">Conclusion</h3>
<p>We&rsquo;ve been very happy with the results of our zombie mitigation measures, and, as far as we can tell, there&rsquo;s been almost no impact for subscribers! Our statistics indicate that we&rsquo;ve managed to reduce the load on our infrastructure while causing no detectable harm or inconvenience to subscribers&rsquo; valid issuance requests.</p>
<p>Since implementing the manual pauses in September and the automated pauses in December, we&rsquo;ve seen:</p>
<ul>
<li>Over 100,000 account-hostname pairs have been paused for excessive failures.</li>
<li>We received zero (!) associated complaints or support requests.</li>
<li>About 3,200 people manually unpaused issuance.</li>
<li>Failed certificate orders fell by about 30% so far, and should continue to fall over time as we fine-tune the rate limit formula and catch more zombie clients.</li>
</ul>
<p>The new rate limit and the self-service unpause system are also ready to deal with circumstances that might produce more zombie clients in the future. For instance, we&rsquo;ve announced that <a href="https://letsencrypt.org/2025/01/22/ending-expiration-emails/">we&rsquo;re going to be discontinuing renewal reminder emails</a> soon. If some subscribers overlook failed renewals in the future, we might see more paused clients that result from unintentional renewal failures. We think taking advantage of the existing self-service unpause feature will be straightforward in that case. But it&rsquo;s much better to notice problems and get them fixed up front, so please remember to <a href="https://letsencrypt.org/docs/monitoring-options/">set up your own monitoring</a> to avoid unnoticed renewal failures in the future.</p>
<p>If you&rsquo;re a subscriber who&rsquo;s had occasion to use the self-service unpause feature, we&rsquo;d love your feedback on the <a href="https://community.letsencrypt.org/">Community Forum</a> about your experience using the feature and the circumstances that surrounded your account&rsquo;s getting paused.</p>
<p>Also, if you&rsquo;re a Let&rsquo;s Encrypt client developer, please remember to make renewal requests at a random time (not precisely at midnight) so that the load on our infrastructure is smoothed out. You can also reduce the impact of zombie renewals by repeating failed requests somewhat less frequently over time (a &ldquo;back-off&rdquo; strategy), especially if the failure reason makes it look like a domain name may no longer be in use at all.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2025/06/04/how-we-reduced-the-impact-of-zombie-clients.html</guid>
      </item><item>
        <title>Sustaining a More Secure Internet: The Power of Recurring Donations</title>
        <link>https://letsencrypt.org/2025/05/21/power-of-recurring-donations.html</link>
        <pubDate>Wed, 21 May 2025 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>At Let&rsquo;s Encrypt we know that building a secure Internet isn&rsquo;t just a technical challenge&mdash;it&rsquo;s a long-term commitment. Over the past decade we&rsquo;ve made enormous strides: from issuing billions of TLS certificates to continually innovating to keep the web safer and more accessible. But none of this would be possible without recurring donations from individuals and organizations around the world.</p>
<p>Recurring donations are more than just financial support; they allow us to plan, innovate, and keep improving with confidence, knowing that month after month, year after year, our supporters are there. This consistent backing empowers us to maintain a secure, privacy-respecting Internet for all.</p>
<p>Our tenth anniversary tagline, <em>Encryption for Everybody</em>, highlights this vision. It&rsquo;s both a technical goal and a fundamental belief that secure communication should be available to everyone, everywhere.</p>
<p>When we asked our recurring donors why they give, their responses affirmed how essential this commitment is. One longtime supporter shared:</p>
<div class="pull-quote">
  <blockquote class="blockquote">
    <span class="quote"></span>
    <div class="quote-text">
      <p class="quote-text-value">Supporting Let's Encrypt aligns with my belief in a privacy-conscious world, where encrypted communication is the default.</p>
    </div>
  </blockquote>
</div>
<p>For some, it&rsquo;s about paying it forward, helping future users benefit as they once did:</p>
<div class="pull-quote">
  <blockquote class="blockquote">
    <span class="quote"></span>
    <div class="quote-text">
      <p class="quote-text-value">For my 18th birthday, I got my last name as a domain. As a young tech enthusiast with little money, Let's Encrypt made it possible for me to get a TLS certificate and learn about technology. Back then, I was a student using it for free. Now that I have a stable income, donating is my way of giving back and helping others have the same opportunities I did.</p>
    </div>
  </blockquote>
</div>
<p>The next decade of Let&rsquo;s Encrypt will likely be about maintaining that commitment to encryption for everybody. It&rsquo;s about ensuring that our work remains reliable, accessible, and&mdash;most importantly&mdash;supported by people who believe in what we do. To everyone who&rsquo;s been part of this journey, thank you. We couldn&rsquo;t do it without you.</p>
<p>During Let&rsquo;s Encrypt&rsquo;s 10th Anniversary Year, we&rsquo;re celebrating our community and reflecting on our journey. We&rsquo;d be thrilled to hear from you. Connect with us on LinkedIn, our community forum, or email us at <a href="mailto:outreach@letsencrypt.org">outreach@letsencrypt.org</a>. Let&rsquo;s keep building a secure Internet together!</p>
<p>Let&rsquo;s Encrypt is a project of the nonprofit Internet Security Research Group, a 501(c)(3) nonprofit. To support our work, visit <a href="https://letsencrypt.org/donate">letsencrypt.org/donate</a>.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2025/05/21/power-of-recurring-donations.html</guid>
      </item><item>
        <title>Ending TLS Client Authentication Certificate Support in 2026</title>
        <link>https://letsencrypt.org/2025/05/14/ending-tls-client-authentication.html</link>
        <pubDate>Wed, 14 May 2025 00:00:00 +0000</pubDate>
        <description><![CDATA[<blockquote>
<p>Update March 16, 2026: Thanks to some timeline changes in the root program requirements, we have been able to push back the removal of the <code>tlsclient</code> profile slightly. If you are already using the <code>tlsclient</code> profile before May 13, 2026, now you will be able to continue to do so through July 8, 2026.</p></blockquote>
<p>Let&rsquo;s Encrypt will no longer include the &ldquo;TLS Client Authentication&rdquo; Extended Key Usage (EKU) in our certificates beginning in 2026. Most users who use Let&rsquo;s Encrypt to secure websites won&rsquo;t be affected and won&rsquo;t need to take any action. However, if you use Let&rsquo;s Encrypt certificates as client certificates to authenticate to a server, this change may impact you.</p>
<p>To minimize disruption, Let&rsquo;s Encrypt will roll this change out in multiple stages, using <a href="https://letsencrypt.org/docs/profiles/">ACME Profiles</a>:</p>
<ul>
<li><strong>Today</strong>: Let&rsquo;s Encrypt already excludes the Client Authentication EKU on our <a href="https://letsencrypt.org/docs/profiles/#tlsserver"><code>tlsserver</code></a> ACME profile. You can verify compatibility by issuing certificates with this profile now.</li>
<li><strong>October 1, 2025</strong>: Let&rsquo;s Encrypt will launch a new <code>tlsclient</code> ACME profile which will retain the TLS Client Authentication EKU. Users who need additional time to migrate can opt-in to this profile.</li>
<li><strong>February 11, 2026</strong>: the default <a href="https://letsencrypt.org/docs/profiles/#classic"><code>classic</code></a> ACME profile will no longer contain the Client Authentication EKU.</li>
<li><strong>July 8, 2026</strong>: the <code>tlsclient</code> ACME profile will no longer be available and no further certificates with the Client Authentication EKU will be issued.</li>
</ul>
<p>Once this is completed, Let&rsquo;s Encrypt will switch to issuing with new intermediate Certificate Authorities which also do not contain the TLS Client Authentication EKU.</p>
<p>For some background information, all certificates include a list of intended uses, known as Extended Key Usages (EKU). Let&rsquo;s Encrypt certificates have included two EKUs: TLS Server Authentication and TLS Client Authentication.</p>
<ul>
<li>TLS Server Authentication is used to authenticate connections to TLS Servers, like websites.</li>
<li>TLS Client Authentication is used by clients to authenticate themselves to a server. This feature is not typically used on the web, and is not required on the certificates used on a website.</li>
</ul>
<p>After this change is complete, only TLS Server Authentication will be available from Let&rsquo;s Encrypt.</p>
<p>This change is prompted by changes to Google Chrome&rsquo;s root program requirements, which impose a June 2026 deadline to split TLS Client and Server Authentication into separate PKIs. Many uses of client authentication are better served by a private certificate authority, and so Let&rsquo;s Encrypt is discontinuing support for TLS Client Authentication ahead of this deadline.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2025/05/14/ending-tls-client-authentication.html</guid>
      </item><item>
        <title>How Pebble Supports ACME Client Developers</title>
        <link>https://letsencrypt.org/2025/04/30/pebbleacmeimplementation.html</link>
        <pubDate>Wed, 30 Apr 2025 00:00:00 +0000</pubDate>
        <description><![CDATA[<h2 id="how-pebble-supports-acme-client-developers">How Pebble Supports ACME Client Developers</h2>
<p>Together with the IETF community, we created the <a href="https://en.wikipedia.org/wiki/Automatic_Certificate_Management_Environment">ACME standard</a> to support completely automated certificate issuance. This open standard is now supported by <a href="https://letsencrypt.org/docs/client-options/">dozens of clients</a>. On the server side, did you know that we have not one but two open-source ACME server implementations?</p>
<p>The big implementation, which we use ourselves in production, is called <a href="https://github.com/letsencrypt/boulder/">Boulder</a>. Boulder handles all of the facets and details needed for a production certificate authority, including policy compliance, database interfaces, challenge verifications, and logging. You can adapt and use Boulder yourself if you need to run a real certificate authority, including an internal, non-publicly-trusted ACME certificate authority within an organization.</p>
<p>The small implementation is called <a href="https://github.com/letsencrypt/pebble/">Pebble</a>. It&rsquo;s meant entirely for testing, <em>not</em> for use as a real certificate authority, and we and ACME client developers use it for various automated and manual testing purposes. For example, <a href="https://certbot.eff.org/">Certbot</a> has used Pebble in its development process for years in order to perform a series of basic but realistic checks of the ability to request and obtain certificates from an ACME server.</p>
<h2 id="pebble-is-easy-to-use-for-acme-client-testing">Pebble is Easy to Use for ACME Client Testing</h2>
<p>For any developer or team creating an ACME client application, Pebble solves a range of problems along the lines of &ldquo;how do I check whether I&rsquo;ve implemented ACME correctly, so that I could actually get certificates from a CA, without necessarily using a real domain name, and without running into CA rate limits during my routine testing?&rdquo; Pebble is quick and easy to set up if you need to test an ACME client&rsquo;s functionality.</p>
<p>It runs in RAM without dependencies or persistence; you won&rsquo;t need to set up a database or a configuration for it. You can get Pebble running with a single golang command in just a few seconds, and immediately start making local ACME requests. That&rsquo;s suitable for inclusion in a client&rsquo;s integration test suite, making much more realistic integration tests possible without needing to worry about real domains, CA rate limits, or network outages.</p>
<p>We see Pebble getting used in the official test suites for ACME clients including <a href="https://github.com/srvrco/getssl/tree/master/test">getssl</a>, <a href="https://github.com/go-acme/lego/tree/master/e2e">Lego</a>, <a href="https://github.com/certbot/certbot/tree/main/certbot-ci/src/certbot_integration_tests">Certbot</a>, <a href="https://github.com/zenhack/simp_le/tree/master/tests">simp_le</a>, and others. In many cases, every change committed to the ACME client&rsquo;s code base is automatically tested against Pebble.</p>
<h2 id="pebble-is-intentionally-different-from-boulder">Pebble is Intentionally Different From Boulder</h2>
<p>Pebble is also deliberately different from Boulder in some places in order to provide clients with an opportunity to interoperate with slightly different ACME implementations. The Pebble code explains that</p>
<div class="pull-quote">
  <blockquote class="blockquote">
    <span class="quote"></span>
    <div class="quote-text">
      <p class="quote-text-value">[I]n places where the ACME specification allows customization/CA choice Pebble aims to make choices different from Boulder. For instance, Pebble changes the path structures for its resources and directory endpoints to differ from Boulder. The goal is to emphasize client specification compatibility and to avoid "over-fitting" on Boulder and the Let's Encrypt production service.</p>
    </div>
  </blockquote>
</div>
<p>For instance, the Let&rsquo;s Encrypt service currently offers its <code>newAccount</code> resource at the path <code>/acme/new-acct</code>, whereas Pebble uses a different name <code>/sign-me-up</code>, so clients will be reminded to check the directory rather than assuming a specific path. Other substantive differences include:</p>
<ul>
<li>Pebble rejects 5% of all requests as having an invalid nonce, even if the nonce was otherwise valid, so clients can test how they respond to this error condition</li>
<li>Pebble only reuses valid authorizations 50% of the time, so clients can check their ability to perform validations when they might not have expected to</li>
<li>Pebble truncates timestamps to a different degree of precision than Boulder</li>
<li>Unlike Boulder, Pebble respects the notBefore and notAfter fields of new-order requests</li>
</ul>
<p>The ability of ACME clients to work with both versions is a good test of their conformance to the ACME specification, rather than making assumptions about the current behavior of the Let&rsquo;s Encrypt service in particular. This helps ensure that clients will work properly with other ACME CAs, and also with future versions of Let&rsquo;s Encrypt&rsquo;s own API.</p>
<h2 id="pebble-is-useful-to-both-let-s-encrypt-and-client-developers-as-acme-evolves">Pebble is Useful to Both Let&rsquo;s Encrypt and Client Developers as ACME Evolves</h2>
<p>We often test out new ACME features by implementing them, at least in a simplified form, in Pebble before Boulder. This lets us and client developers experiment with support for those features even before they get rolled out in our staging service. We can do this quickly because a Pebble feature implementation doesn&rsquo;t have to work with a full-scale CA backend.</p>
<p>We continue to encourage ACME client developers to use a copy of Pebble to test their clients&rsquo; functionality and ACME interoperability. It&rsquo;s convenient and it&rsquo;s likely to increase the correctness and robustness of their client applications.</p>
<h2 id="try-out-pebble-yourself">Try Out Pebble Yourself</h2>
<p>Want to try Pebble with your ACME client right now? On a Unix-like system, you can run</p>
<pre tabindex="0"><code>git clone https://github.com/letsencrypt/pebble/
cd pebble
go run ./cmd/pebble
</code></pre><p>Wait a few seconds; now you have a working ACME CA directory available at <code>https://localhost:14000/dir</code>! Your local ACME Server can immediately receive requests and issue certificates, though not publicly-trusted ones, of course. (If you prefer, we also offer other options for installing Pebble, like a Docker image.)</p>
<p>We welcome code contributions to Pebble. For example, ACME client developers may want to add simple versions of an ACME feature that&rsquo;s not currently tested in Pebble in order to make their test suites more comprehensive. Also, if you notice a possibly unintended divergence between Pebble and Boulder or Pebble and the ACME specification, we&rsquo;d love for you to <a href="https://github.com/letsencrypt/pebble/issues/new">let us know</a>.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2025/04/30/pebbleacmeimplementation.html</guid>
      </item><item>
        <title>Ten Years of Let&#39;s Encrypt: Announcing support from Jeff Atwood</title>
        <link>https://letsencrypt.org/2025/03/18/community-of-funders.html</link>
        <pubDate>Tue, 18 Mar 2025 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>As we touched on in our <a href="https://letsencrypt.org/2025/02/14/encryption-for-everybody/">first blog post</a> highlighting ten years of Let&rsquo;s Encrypt: Just as remarkable to us as the technical innovations behind proliferating TLS at scale is, so too is the sustained generosity we have benefited from throughout our first decade.</p>
<p>With that sense of gratitude top of mind, we are proud to announce a contribution of $1,000,000 from Jeff Atwood. Jeff has been a longtime supporter of our work, beginning many years ago with <a href="https://www.discourse.org/">Discourse</a> providing our community forum pro bono; something Discourse still provides to this day. As best we can tell, our forum has helped hundreds of thousands of people get up and running with Let&rsquo;s Encrypt&mdash;an impact that has helped billions of people use an Internet that&rsquo;s more secure and privacy-respecting thanks to widely adopted TLS.</p>
<p>When we first spoke with Jeff about the road ahead for Let&rsquo;s Encrypt back in 2023, we knew a few things wouldn&rsquo;t change no matter how the Internet changes over the next decade:</p>
<ol>
<li>Free TLS is the only way to ensure it is and remains accessible to as many people as possible.</li>
<li>Let&rsquo;s Encrypt is here to provide a reliable, trusted, and sound service no matter the scale.</li>
<li>Generosity from our global community of supporters will be how we sustain our work.</li>
</ol>
<p>We&rsquo;re proud that Jeff not only agrees, but has chosen to support us in such a meaningful way. In discussing how Jeff might want us to best celebrate his generosity and recognize his commitment to our work, he shared:</p>
<div class="pull-quote">
  <blockquote class="blockquote">
    <span class="quote"></span>
    <div class="quote-text">
      <p class="quote-text-value">Let's Encrypt is a golden example of how creating inalienable good is possible with the right approach and the right values. And while I'm excited about the work Let's Encrypt has done, I am eager to see their work continue to keep up with the growing Web; to sustain encryption for everybody at Internet scale. To do so is going to take more than me&mdash;it's going to take a community of people committed to this work. I am confident Let's Encrypt is a project that deserves all of our support, in ways both large and small.</p>
    </div>
  </blockquote>
</div>
<p>Indeed, this contribution is significant because of its scale, but more importantly because of its signal: a signal that supporting the not-so-glamorous but oh-so-nerdy work of encryption at scale matters to the lives of billions of people every day; a signal that supporting free privacy and security afforded by TLS for all of the Internet&rsquo;s five billion users just makes sense.</p>
<p>Ten years ago we set out to build a better Internet through easy to use TLS. If you or your organization have supported us throughout the years, thank you for joining Jeff in believing in the work of Let&rsquo;s Encrypt. For a deeper dive into the impact of Let&rsquo;s Encrypt and ISRG&rsquo;s other projects, take a look at our <a href="https://www.abetterinternet.org/documents/2024-ISRG-Annual-Report.pdf">most recent annual report</a>.</p>
<p><em>Let&rsquo;s Encrypt is a project of the nonprofit Internet Security Research Group, a 501(c)(3) nonprofit committed to protecting Internet users by lowering monetary, technological, and informational barriers to a more secure and privacy-respecting Internet. For more, visit <a href="https://abetterinternet.org">abetterinternet.org</a>. Press inquiries can be sent to <a href="mailto:press@abetterinternet.org">press@abetterinternet.org</a></em></p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2025/03/18/community-of-funders.html</guid>
      </item><item>
        <title>We Issued Our First Six Day Cert</title>
        <link>https://letsencrypt.org/2025/02/20/first-short-lived-cert-issued.html</link>
        <pubDate>Thu, 20 Feb 2025 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Earlier this year we <a href="https://letsencrypt.org/2025/01/16/6-day-and-ip-certs/">announced</a> our intention to introduce short-lived certificates with lifetimes of six days as an option for our subscribers. Yesterday we issued our first short-lived certificate. You can see the certificate at the bottom of our post, or <a href="https://crt.sh/?sha256=8265479AF7BB04B347260A54DB915FB294EBAACD79CDB43D86D27336B690AD26">here</a> thanks to Certificate Transparency logs. We issued it to ourselves and then immediately revoked it so we can observe the certificate&rsquo;s whole lifecycle. This is the first step towards making short-lived certificates available to all subscribers.</p>
<p>The next step is for us to make short-lived certificates available to a small set of our subscribers so we can make sure our systems scale as expected prior to general availability. We expect this next phase to begin during Q2 of this year.</p>
<p>We expect short-lived certificates to be generally available by the end of this year.</p>
<h2 id="how-to-get-six-day-certificates">How To Get Six-Day Certificates</h2>
<p>Once short-lived certificates are an option for you, you&rsquo;ll need to use an ACME client that supports ACME <a href="https://letsencrypt.org/docs/profiles/">certificate profiles</a> and select the short-lived certificate profile (&ldquo;shortlived&rdquo;). The <code>lego</code> client recently <a href="https://github.com/go-acme/lego/releases/tag/v4.22.0">added</a> this functionality.</p>
<p>In the meantime, the best way to prepare to take advantage of short-lived certificates is to make sure your ACME client is reliably renewing certificates in an automated fashion. If that&rsquo;s working well then there should be no costs to switching to short-lived certificates.</p>
<p>You&rsquo;ll also want to be sure your ACME client is running frequently - both for the sake of renewing short-lived certificates and so as to take advantage of <a href="https://letsencrypt.org/2023/03/23/improving-resliiency-and-reliability-with-ari/">ACME Renewal Information (ARI)</a>. ARI allows Let&rsquo;s Encrypt to notify your client if it should renew early for some reason. ARI checks should happen at least once per day, and short-lived certificates should be renewed every two to three days, so we recommend having your client run at least once per day.</p>
<h2 id="shorter-certificate-lifetimes-are-good-for-security">Shorter Certificate Lifetimes Are Good for Security</h2>
<p>When the private key associated with a certificate is compromised, the recommendation has always been to have the certificate revoked so that people will know not to use it. Unfortunately, certificate revocation doesn&rsquo;t work very well. This means that certificates with compromised keys (or other issues) may continue to be used until they expire. The longer the lifetime of the certificate, the longer the potential for use of a problematic certificate.</p>
<p>The primary advantage of short-lived certificates is that they greatly reduce the potential compromise window because they expire relatively quickly. This reduces the need for certificate revocation, which has historically been unreliable. Our six-day certificates will not include OCSP or CRL URLs. Additionally, short-lived certificates practically require automation, and we believe that automating certificate issuance is important for security.</p>
<h2 id="questions">Questions</h2>
<p>If you have questions or comments about our plans, feel free to let us know on our <a href="https://community.letsencrypt.org/">community forums</a>.</p>
<p>We&rsquo;d like to thank <a href="https://www.opentech.fund/">Open Technology Fund</a> for supporting this work.</p>
<h2 id="our-first-6-day-certificate">Our First 6-Day Certificate</h2>
<p>PEM format:</p>
<pre tabindex="0"><code>-----BEGIN CERTIFICATE-----
MIIDSzCCAtGgAwIBAgISA7CwFcGk4mQWEXMacRtxHeDvMAoGCCqGSM49BAMDMDIx
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF
NjAeFw0yNTAyMTkxNzMwMDFaFw0yNTAyMjYwOTMwMDBaMAAwWTATBgcqhkjOPQIB
BggqhkjOPQMBBwNCAAQoSItt2V1aocI5dxrKR8iLfmm0KiVvOhiwKByzu2kLeC7C
0BdfAgtwdICdkuEhAXokhXLq6DNZZgmh5T4flVwZo4IB9zCCAfMwDgYDVR0PAQH/
BAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUFBwMBMAwGA1UdEwEB/wQCMAAwHwYDVR0j
BBgwFoAUkydGmAOpUWiOmNbEQkjbI79YlNIwVQYIKwYBBQUHAQEESTBHMCEGCCsG
AQUFBzABhhVodHRwOi8vZTYuby5sZW5jci5vcmcwIgYIKwYBBQUHMAKGFmh0dHA6
Ly9lNi5pLmxlbmNyLm9yZy8wKAYDVR0RAQH/BB4wHIIaaGVsbG93b3JsZC5sZXRz
ZW5jcnlwdC5vcmcwEwYDVR0gBAwwCjAIBgZngQwBAgEwggEFBgorBgEEAdZ5AgQC
BIH2BIHzAPEAdgDM+w9qhXEJZf6Vm1PO6bJ8IumFXA2XjbapflTA/kwNsAAAAZUf
d/zOAAAEAwBHMEUCIFNd51TfSNiJrO+294t49C5ANc4oC7gTUzf7xnlNlhKsAiEA
wi5hfiC9SsKLxlTQ0sctUxhLmdYh40r6ECWQS/yWw2AAdwDgkrP8DB3I52g2H95h
uZZNClJ4GYpy1nLEsE2lbW9UBAAAAZUfd/0TAAAEAwBIMEYCIQCs2NuZIUIloOaH
1t9eXDKb8bjoWESBPsK4i2BxMvEIswIhAOMNaQNyr1YkzrcNUz15qGV0oVLg5BJN
+ikWxXOdcRHFMAoGCCqGSM49BAMDA2gAMGUCMDANqy7G09AIwzXcd7SNl7uFwhC+
xlfduvp1PeEDHc/FA9K3mRYkGXuKtzNdOh7wcAIxALjEMDmBQiwXbB447oGkaZAe
0rqxA3EtNV5wj0obeObluj/NgUsVEG9OqiBIoggFRw==
-----END CERTIFICATE-----
</code></pre><p><code>openssl x509 -text</code> output:</p>
<pre tabindex="0"><code>Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            03:b0:b0:15:c1:a4:e2:64:16:11:73:1a:71:1b:71:1d:e0:ef
        Signature Algorithm: ecdsa-with-SHA384
        Issuer: C=US, O=Let&#39;s Encrypt, CN=E6
        Validity
            Not Before: Feb 19 17:30:01 2025 GMT
            Not After : Feb 26 09:30:00 2025 GMT
        Subject:
        Subject Public Key Info:
            Public Key Algorithm: id-ecPublicKey
                Public-Key: (256 bit)
                pub:
                    04:28:48:8b:6d:d9:5d:5a:a1:c2:39:77:1a:ca:47:
                    c8:8b:7e:69:b4:2a:25:6f:3a:18:b0:28:1c:b3:bb:
                    69:0b:78:2e:c2:d0:17:5f:02:0b:70:74:80:9d:92:
                    e1:21:01:7a:24:85:72:ea:e8:33:59:66:09:a1:e5:
                    3e:1f:95:5c:19
                ASN1 OID: prime256v1
                NIST CURVE: P-256
        X509v3 extensions:
            X509v3 Key Usage: critical
                Digital Signature
            X509v3 Extended Key Usage:
                TLS Web Server Authentication
            X509v3 Basic Constraints: critical
                CA:FALSE
            X509v3 Authority Key Identifier:
                93:27:46:98:03:A9:51:68:8E:98:D6:C4:42:48:DB:23:BF:58:94:D2
            Authority Information Access:
                OCSP - URI:http://e6.o.lencr.org
                CA Issuers - URI:http://e6.i.lencr.org/
            X509v3 Subject Alternative Name: critical
                DNS:helloworld.letsencrypt.org
            X509v3 Certificate Policies:
                Policy: 2.23.140.1.2.1
            CT Precertificate SCTs:
                Signed Certificate Timestamp:
                    Version   : v1 (0x0)
                    Log ID    : CC:FB:0F:6A:85:71:09:65:FE:95:9B:53:CE:E9:B2:7C:
                                22:E9:85:5C:0D:97:8D:B6:A9:7E:54:C0:FE:4C:0D:B0
                    Timestamp : Feb 19 18:28:32.078 2025 GMT
                    Extensions: none
                    Signature : ecdsa-with-SHA256
                                30:45:02:20:53:5D:E7:54:DF:48:D8:89:AC:EF:B6:F7:
                                8B:78:F4:2E:40:35:CE:28:0B:B8:13:53:37:FB:C6:79:
                                4D:96:12:AC:02:21:00:C2:2E:61:7E:20:BD:4A:C2:8B:
                                C6:54:D0:D2:C7:2D:53:18:4B:99:D6:21:E3:4A:FA:10:
                                25:90:4B:FC:96:C3:60
                Signed Certificate Timestamp:
                    Version   : v1 (0x0)
                    Log ID    : E0:92:B3:FC:0C:1D:C8:E7:68:36:1F:DE:61:B9:96:4D:
                                0A:52:78:19:8A:72:D6:72:C4:B0:4D:A5:6D:6F:54:04
                    Timestamp : Feb 19 18:28:32.147 2025 GMT
                    Extensions: none
                    Signature : ecdsa-with-SHA256
                                30:46:02:21:00:AC:D8:DB:99:21:42:25:A0:E6:87:D6:
                                DF:5E:5C:32:9B:F1:B8:E8:58:44:81:3E:C2:B8:8B:60:
                                71:32:F1:08:B3:02:21:00:E3:0D:69:03:72:AF:56:24:
                                CE:B7:0D:53:3D:79:A8:65:74:A1:52:E0:E4:12:4D:FA:
                                29:16:C5:73:9D:71:11:C5
    Signature Algorithm: ecdsa-with-SHA384
    Signature Value:
        30:65:02:30:30:0d:ab:2e:c6:d3:d0:08:c3:35:dc:77:b4:8d:
        97:bb:85:c2:10:be:c6:57:dd:ba:fa:75:3d:e1:03:1d:cf:c5:
        03:d2:b7:99:16:24:19:7b:8a:b7:33:5d:3a:1e:f0:70:02:31:
        00:b8:c4:30:39:81:42:2c:17:6c:1e:38:ee:81:a4:69:90:1e:
        d2:ba:b1:03:71:2d:35:5e:70:8f:4a:1b:78:e6:e5:ba:3f:cd:
        81:4b:15:10:6f:4e:aa:20:48:a2:08:05:47
</code></pre>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2025/02/20/first-short-lived-cert-issued.html</guid>
      </item><item>
        <title>Encryption for Everybody</title>
        <link>https://letsencrypt.org/2025/02/14/encryption-for-everybody.html</link>
        <pubDate>Fri, 14 Feb 2025 00:00:00 +0000</pubDate>
        <description><![CDATA[<div class="card border-0 pic-quote-right">
    <img alt="Let's Encrypt 10th Anniversary logo " class="mx-auto img-fluid max-w-[200px] mb-5" src="/images/blog/10A-Logo.png" />
</div>
<p>2025 marks ten years of Let&rsquo;s Encrypt. Already this year we&rsquo;ve taken steps to continue to deliver on our values of <a href="https://letsencrypt.org/2025/01/22/ending-expiration-emails/">user privacy</a>, <a href="https://letsencrypt.org/2025/01/30/scaling-rate-limits/">efficiency</a>, and <a href="https://letsencrypt.org/2025/01/09/acme-profiles/">innovation</a>, all with the intent of continuing to deliver free TLS certificates to as many people as possible; to deliver encryption for everybody.</p>
<p>And while we&rsquo;re excited about the technical progress we&rsquo;ll make this year, we&rsquo;re also going to celebrate this <a href="https://letsencrypt.org/2015/09/14/our-first-cert/">tenth anniversary</a> by highlighting the people around the world who make our impact possible. It&rsquo;s no small village.</p>
<p>From a <a href="https://letsencrypt.org/2015/08/13/lets-encrypt-community-support/">community forum</a> that has provided free technical support, to our roster of <a href="https://letsencrypt.org/sponsors/">sponsors</a> who provide vital funding, to the thousands of individual supporters who contribute financially to Let&rsquo;s Encrypt each year, free TLS at Internet scale works because people have supported it year in, year out, for ten years.</p>
<p>Each month we&rsquo;ll highlight a different set of people behind our &ldquo;everybody.&rdquo; Who do you want to see us highlight? What use cases of Let&rsquo;s Encrypt have you seen that amazed you? What about our work do you hope we&rsquo;ll continue or improve as we go forward? Let us know on <a href="https://www.linkedin.com/company/lets-encrypt">LinkedIn</a>, or drop a note to <a href="mailto:outreach@letsencrypt.org">outreach@letsencrypt.org</a>.</p>
<p><em>Encryption for Everybody</em> is our unofficial tagline for this tenth anniversary year. What we love about it is that, yes, it captures our commitment to ensuring anyone around the world can easily get a cert for free. But more importantly, it captures the reality that technical innovation won&rsquo;t work without people believing in it and supporting it. We&rsquo;re grateful that, for ten years (and counting!), our community of supporters has made an impact on the lives of billions of Internet users&mdash;an impact that&rsquo;s made the Web more secure and privacy-respecting for everybody, everywhere.</p>
<p><a href="https://abetterinternet.org/">Internet Security Research Group (ISRG)</a> is the parent organization of <a href="https://letsencrypt.org/">Let&rsquo;s Encrypt</a>, <a href="https://memorysafety.org/">Prossimo</a>, and <a href="https://divviup.org/">Divvi Up</a>. ISRG is a 501(c)(3) nonprofit. If you&rsquo;d like to support our work, please consider <a href="https://www.abetterinternet.org/getinvolved/">getting involved</a>, <a href="https://www.abetterinternet.org/donate/">donating</a>, or encouraging your company to <a href="https://www.abetterinternet.org/sponsor/">become a sponsor</a>.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2025/02/14/encryption-for-everybody.html</guid>
      </item><item>
        <title>Scaling Our Rate Limits to Prepare for a Billion Active Certificates</title>
        <link>https://letsencrypt.org/2025/01/30/scaling-rate-limits.html</link>
        <pubDate>Thu, 30 Jan 2025 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Let&rsquo;s Encrypt protects a vast portion of the Web by providing TLS certificates to over <a href="https://letsencrypt.org/stats/">550 million websites</a>—a figure that has grown by 42% in the last year alone. We currently issue over 340,000 certificates per hour. To manage this immense traffic and maintain responsiveness under high demand, our infrastructure relies on <a href="https://letsencrypt.org/docs/rate-limits/">rate limiting</a>. In 2015, we introduced our first rate limiting system, built on MariaDB. It evolved alongside our rapidly growing service but eventually revealed its limits: straining database servers, forcing long reset times on subscribers, and slowing down every request.</p>
<p>We needed a solution built for the future—one that could scale with demand, reduce the load on MariaDB, and adapt to real-world subscriber request patterns. The result was a new rate limiting system powered by Redis and a proven virtual scheduling algorithm from the mid-90s. Efficient and scalable, and capable of handling over a billion active certificates.</p>
<h2 id="rate-limiting-a-free-service-is-hard">Rate Limiting a Free Service is Hard</h2>
<p>In 2015, Let&rsquo;s Encrypt was in early preview, and we faced a unique challenge. We were poised to become incredibly popular, offering certificates freely and without requiring contact information or email verification. Ensuring fair usage and preventing abuse without traditional safeguards demanded an atypical approach to rate limiting.</p>
<p>We decided to limit the number of certificates issued—per week—for each registered domain. Registered domains are a limited resource with real costs, making them a natural and effective basis for rate limiting—one that mirrors the structure of the Web itself. Specifically, this approach targets the effective Top-Level Domain (eTLD), as defined by the Public Suffix List (PSL), plus one additional <a href="https://datatracker.ietf.org/doc/html/rfc1035#section-2.3.1">label</a> to the left. For example, in <code>new.blog.example.co.uk</code>, the eTLD is <code>.co.uk</code>, making <code>example.co.uk</code> the eTLD+1.</p>
<h3 id="counting-events-was-easy">Counting Events Was Easy</h3>
<p>For each successfully issued certificate, we logged an entry in a table that recorded the registered domain, the issuance date, and other relevant details. To enforce rate limits, the system scanned this table, counted the rows matching a given registered domain within a specific time window, and compared the total to a configured threshold. This simple design formed the basis for all future rate limits.</p>
<h3 id="counting-a-lot-of-events-got-expensive">Counting a Lot of Events Got Expensive</h3>
<p>By 2019, we had added six new rate limits to protect our infrastructure as demand for certificates surged. Enforcing these limits required frequent scans of database tables to count recent matching events. These operations, especially on our heavily-used authorizations table, caused significant overhead, with reads outpacing all other tables—often by an order of magnitude.</p>
<p>Rate limit calculations were performed early in request processing and often. Counting rows in MariaDB, particularly for accounts with rate limit overrides, was inherently expensive and quickly became a scaling bottleneck.</p>
<p>Adding new limits required careful trade-offs. Decisions about whether to reuse existing schema, optimize indexes, or design purpose-built tables helped balance performance, complexity, and long-term maintainability.</p>
<h3 id="buying-runway-offloading-reads">Buying Runway — Offloading Reads</h3>
<p>In late 2021, we updated our control plane and <a href="https://github.com/letsencrypt/boulder">Boulder</a>—our in-house CA software—to route most API reads, including rate limit checks, to database replicas. This reduced the load on the primary database and improved its overall health. At the same time, however, latency of rate limit checks during peak hours continued to rise, highlighting the limitations of scaling reads alone.</p>
<h3 id="sliding-windows-got-frustrating">Sliding Windows Got Frustrating</h3>
<p>Subscribers were frequently hitting rate limits unexpectedly, leaving them unable to request certificates for days. This issue stemmed from our use of relatively large rate limiting windows—most spanning a week. Subscribers could deplete their entire limit in just a few moments by repeating the same request, and find themselves locked out for the remainder of the week. This approach was inflexible and disruptive, causing unnecessary frustration and delays.</p>
<p>In early 2022, we patched the Duplicate Certificate limit to address this rigidity. Using a naive token-bucket approach, we allowed users to &ldquo;earn back&rdquo; requests incrementally, cutting the wait time—once rate limited—to about 1.4 days. The patch worked by fetching recent issuance timestamps and calculating the time between them to grant requests based on the time waited. This change also allowed us to include a Retry-After timestamp in rate limited responses. While this improved the user experience for this one limit, we understood it to be a temporary fix for a system in need of a larger overhaul.</p>
<h2 id="when-a-problem-grows-large-enough-it-finds-the-time-for-you">When a Problem Grows Large Enough, It Finds the Time for You</h2>
<p>Setting aside time for a complete overhaul of our rate-limiting system wasn&rsquo;t easy. Our development team, composed of just three permanent engineers, typically juggles several competing priorities. Yet by 2023, our flagging rate limits code had begun to endanger the reliability of our MariaDB databases.</p>
<p>Our authorizations table was now regularly read an order of magnitude more than any other. Individually identifying and deleting unnecessary rows—or specific values—had <a href="https://github.com/letsencrypt/boulder/issues/4181">proved unworkable</a> due to poor MariaDB delete performance. Storage engines like InnoDB must maintain indexes, foreign key constraints, and transaction logs for every deletion, which significantly increases overhead for concurrent transactions and leads to gruelingly slow deletes.</p>
<p>Our SRE team automated the cleanup of old rows for many tables using the <code>PARTITION</code> command, which worked well for bookkeeping and compliance data. Unfortunately, we couldn&rsquo;t apply it to most of our purpose-built rate limit tables. These tables depend on <code>ON DUPLICATE KEY UPDATE</code>, a mechanism that requires the targeted column to be a unique index or primary key, while partitioning demands that the primary key be included in the partitioning key.</p>
<p>Indexes on these tables—such as those tracking requested hostnames—often grew larger than the tables themselves and, in some cases, exceeded the memory of our smaller staging environment databases, eventually forcing us to periodically wipe them entirely.</p>
<p>By late 2023, this cascading confluence of complexities required a reckoning. We set out to design a rate limiting system built for the future.</p>
<h2 id="the-solution-redis-gcra">The Solution: Redis + GCRA</h2>
<p>We designed a system from the ground up that combines Redis for storage and the Generic Cell Rate Algorithm (GCRA) for managing request flow.</p>
<h3 id="why-redis">Why Redis?</h3>
<p>Our engineers were already familiar with Redis, having recently <a href="https://letsencrypt.org/2022/12/15/ocspcaching/">deployed it</a> to cache and serve OCSP responses. Its high throughput and low latency made it a candidate for tracking rate limit state as well.</p>
<p>By moving this data from MariaDB to Redis, we could eliminate the need for ever-expanding, purpose-built tables and indexes, significantly reducing read and write pressure. Redis&rsquo;s feature set made it a perfect fit for the task. Most rate limit data is ephemeral—after a few days, or sometimes just minutes, it becomes irrelevant unless the subscriber calls us again. Redis&rsquo;s per-key Time-To-Live would allow us to expire this data the moment it was no longer needed.</p>
<p>Redis also supports atomic integer operations, enabling fast, reliable counter updates, even when increments occur concurrently. Its &ldquo;set if not exist&rdquo; functionality ensures efficient initialization of keys, while pipeline support allows us to get and set multiple keys in bulk. This combination of familiarity, speed, simplicity, and flexibility made Redis the natural choice.</p>
<h3 id="why-gcra">Why GCRA?</h3>
<p>The Generic Cell Rate Algorithm (GCRA) is a virtual scheduling algorithm originally designed for telecommunication networks to regulate traffic and prevent congestion. Unlike traditional sliding window approaches that work in fixed time blocks, GCRA enforces rate limits continuously, making it well-suited to our goals.</p>
<p>A rate limit in GCRA is defined by two parameters: the emission interval and the burst tolerance. The emission interval specifies the minimum time that must pass between consecutive requests to maintain a steady rate. For example, an emission interval of one second allows one request per second on average. The burst tolerance determines how much unused capacity can be drawn on to allow short bursts of requests beyond the steady rate.</p>
<p>When a request is received, GCRA compares the current time to the Theoretical Arrival Time (TAT), which indicates when the next request is allowed under the steady rate. If the current time is greater than or equal to the TAT, the request is permitted, and the TAT is updated by adding the emission interval. If the current time plus the burst tolerance is greater than or equal to the TAT, the request is also permitted. In this case, the TAT is updated by adding the emission interval, reducing the remaining burst capacity.</p>
<p>However, if the current time plus the burst tolerance is less than the TAT, the request exceeds the rate limit and is denied. Conveniently, the difference between the TAT and the current time can then be returned to the subscriber in a Retry-After header, informing their client exactly how long to wait before trying again.</p>
<p>To illustrate, consider a rate limit of one request per second (emission interval = 1s) with a burst tolerance of three requests. Up to three requests can arrive back-to-back, but subsequent requests will be delayed until &ldquo;now&rdquo; catches up to the TAT, ensuring that the average rate over time remains one request per second.</p>
<p>What sets GCRA apart is its ability to automatically refill capacity gradually and continuously. Unlike sliding windows, where users must wait for an entire time block to reset, GCRA allows users to retry as soon as enough time has passed to maintain the steady rate. This dynamic pacing reduces frustration and provides a smoother, more predictable experience for subscribers.</p>
<p>GCRA is also storage and computationally efficient. It requires tracking only the TAT—stored as a single Unix timestamp—and performing simple arithmetic to enforce limits. This lightweight design allows it to scale to handle billions of requests, with minimal computational and memory overhead.</p>
<h2 id="the-results-faster-smoother-and-more-scalable">The Results: Faster, Smoother, and More Scalable</h2>
<p>The transition to Redis and GCRA brought immediate, measurable improvements. We cut database load, improved response times, and delivered consistent performance even during periods of peak traffic. Subscribers now experience smoother, more predictable behavior, while the system&rsquo;s increased permissiveness allows for certificates that the previous approach would have delayed—all achieved without sacrificing scalability or fairness.</p>
<h3 id="rate-limit-check-latency">Rate Limit Check Latency</h3>
<p>Check latency is the extra time added to each request while verifying rate limit compliance. Under the old MariaDB-based system, these checks slowed noticeably during peak traffic, when database contention caused significant delays. Our new Redis-based system dramatically reduced this overhead. The high-traffic &ldquo;new-order&rdquo; endpoint saw the greatest improvement, while the &ldquo;new-account&rdquo; endpoint—though considerably lighter in traffic—also benefited, especially callers with IPv6 addresses. These results show that our subscribers now experience consistent response times, even under peak load.</p>
<p><img src="/images/blog/blog-2025-01-30--image1.png" alt="Rate Limit Check Latency Before and After chart"></p>
<h3 id="database-health">Database Health</h3>
<p>Our once strained <a href="https://letsencrypt.org/2021/01/21/next-gen-database-servers/">database servers</a> are now operating with ample headroom. In total, MariaDB operations have dropped by 80%, improving responsiveness, reducing contention, and freeing up resources for mission-critical issuance workflows.</p>
<p><img src="/images/blog/blog-2025-01-30--image2.png" alt="Chart showing reduction in InnoDB Row Operations"></p>
<p>Buffer pool requests have decreased by more than 50%, improving caching efficiency and reducing overall memory pressure.</p>
<p><img src="/images/blog/blog-2025-01-30--image3.png" alt="Chart showing reduction in InnoDB Buffer Pool Requests"></p>
<p>Reads of the authorizations table—a notorious bottleneck—have dropped by over 99%. Previously, this table outpaced all others by more than two orders of magnitude; now it ranks second (the green line below), just narrowly surpassing our third most-read table.</p>
<p><img src="/images/blog/blog-2025-01-30--image4.png" alt="Chart showing Top Tables by Rows Read"></p>
<h3 id="tracking-zombie-clients">Tracking Zombie Clients</h3>
<p>In late 2024, we turned our new rate limiting system toward a longstanding challenge: &ldquo;zombie clients.&rdquo; These requesters repeatedly attempt to issue certificates but fail, often because of expired domains or misconfigured DNS records. Together, they generate nearly half of all order attempts yet almost never succeed. We were able to build on this new infrastructure to record consecutive ACME challenge failures by account/domain pair and automatically &ldquo;pause&rdquo; this problematic issuance. The result has been a considerable reduction in resource consumption, freeing database and network capacity without disrupting legitimate traffic.</p>
<h3 id="scalability-on-redis">Scalability on Redis</h3>
<p>Before deploying the limits to track zombie clients, we maintained just over 12.6 million unique TATs across several Redis databases. Within 24 hours, that number more than doubled to 26 million, and by the end of the week, it peaked at over 30 million. Yet, even with this sharp increase, there was no noticeable impact on rate limit responsiveness. That&rsquo;s all we&rsquo;ll share for now about zombie clients—there&rsquo;s plenty more to unpack, but we&rsquo;ll save those insights and figures for a future blog post.</p>
<h2 id="what-s-next">What&rsquo;s Next?</h2>
<p>Scaling our rate limits to keep pace with the growth of the Web is a huge achievement, but there&rsquo;s still more to do. In the near term, many of our other ACME endpoints rely on load balancers to enforce per-IP limits, which works but gives us little control over the feedback provided to subscribers. We&rsquo;re looking to deploy this new infrastructure across those endpoints as well. Looking further ahead, we&rsquo;re exploring how we might redefine our rate limits now that we&rsquo;re no longer constrained by a system that simply counts events between two points in time.</p>
<p>By adopting Redis and GCRA, we&rsquo;ve built a flexible, efficient rate limit system that promotes fair usage and enables our infrastructure to handle ever-growing demand. We&rsquo;ll keep adapting to the ever-evolving Web while honoring our primary goal: giving people the certificates they need, for free, in the most user-friendly way we can.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2025/01/30/scaling-rate-limits.html</guid>
      </item><item>
        <title>Ending Support for Expiration Notification Emails</title>
        <link>https://letsencrypt.org/2025/01/22/ending-expiration-emails.html</link>
        <pubDate>Wed, 22 Jan 2025 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Since its inception, Let&rsquo;s Encrypt has been sending expiration notification emails to subscribers that have provided an email address to us. We will be ending this service on June 4, 2025. The decision to end this service is the result of the following factors:</p>
<ol>
<li>
<p>Over the past 10 years more and more of our subscribers have been able to put reliable automation into place for certificate renewal.</p>
</li>
<li>
<p>Providing expiration notification emails means that we have to retain millions of email addresses connected to issuance records. As an organization that values privacy, removing this requirement is important to us.</p>
</li>
<li>
<p>Providing expiration notifications costs Let&rsquo;s Encrypt tens of thousands of dollars per year, money that we believe can be better spent on other aspects of our infrastructure.</p>
</li>
<li>
<p>Providing expiration notifications adds complexity to our infrastructure, which takes time and attention to manage and increases the likelihood of mistakes being made. Over the long term, particularly as we add support for new service components, we need to manage overall complexity by phasing out system components that can no longer be justified.</p>
</li>
</ol>
<p>For those who would like to continue receiving expiration notifications, we recommend using a third party service such as <a href="https://redsift.com/pulse-platform/certificates-lite">Red Sift Certificates Lite</a> (formerly Hardenize). Red Sift&rsquo;s monitoring service providing expiration emails is free of charge for up to 250 certificates. More monitoring options can be found <a href="/docs/monitoring-options/">here</a>.</p>
<p>While we will be minimizing the email addresses we retain connected to issuance data, you can opt in to receive other emails. We’ll keep you informed about technical updates, and other news about Let’s Encrypt and our parent nonprofit, <a href="http://abetterinternet.org">ISRG</a>, based on the preferences you choose.  You can sign up for our email lists below:</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2025/01/22/ending-expiration-emails.html</guid>
      </item><item>
        <title>Announcing Six Day and IP Address Certificate Options in 2025</title>
        <link>https://letsencrypt.org/2025/01/16/6-day-and-ip-certs.html</link>
        <pubDate>Thu, 16 Jan 2025 00:00:00 +0000</pubDate>
        <description><![CDATA[<blockquote>
<p><strong>Update: January 15, 2026</strong></p>
<p>Six-day and IP address certificates are now generally available. See <a href="/2026/01/15/6day-and-ip-general-availability">6-day and IP Address Certificates are Generally Available</a> for details.</p></blockquote>
<p>This year we will continue to pursue our commitment to improving the security of the Web PKI by introducing the option to get certificates with six-day lifetimes (&ldquo;short-lived certificates&rdquo;). We will also add support for IP addresses in addition to domain names. Our longer-lived certificates, which currently have a lifetime of 90 days, will continue to be available alongside our six-day offering. Subscribers will be able to opt in to short-lived certificates via a certificate profile mechanism being added to our ACME API.</p>
<h2 id="shorter-certificate-lifetimes-are-good-for-security">Shorter Certificate Lifetimes Are Good for Security</h2>
<p>When the private key associated with a certificate is compromised, the recommendation has always been to have the certificate revoked so that people will know not to use it. Unfortunately, certificate revocation doesn&rsquo;t work very well. This means that certificates with compromised keys (or other issues) may continue to be used until they expire. The longer the lifetime of the certificate, the longer the potential for use of a problematic certificate.</p>
<p>The primary advantage of short-lived certificates is that they greatly reduce the potential compromise window because they expire relatively quickly. This reduces the need for certificate revocation, which has historically been unreliable. Our six-day certificates will not include OCSP or CRL URLs. Additionally, short-lived certificates practically require automation, and we believe that automating certificate issuance is important for security.</p>
<h2 id="ip-address-support-for-securing-additional-use-cases">IP Address Support For Securing Additional Use Cases</h2>
<p>We will support including IP addresses as Subject Alternative Names in our six-day certificates. This will enable secure TLS connections, with publicly trusted certificates, to services made available via IP address, without the need for a domain name.</p>
<p>Validation for IP addresses will work much the same as validation for domain names, though validation will be restricted to the <a href="https://letsencrypt.org/docs/challenge-types/">http-01 and tls-alpn-01 challenge types</a>. The dns-01 challenge type will not be available because the DNS is not involved in validating IP addresses. Additionally, there is no mechanism to check CAA records for IP addresses.</p>
<h2 id="timeline">Timeline</h2>
<p>We expect to issue the first valid short-lived certificates to ourselves in February of this year. Around April we will enable short-lived certificates for a small set of early adopting subscribers. We hope to make short-lived certificates generally available by the end of 2025.</p>
<p>The earliest short-lived certificates we issue may not support IP addresses, but we intend to enable IP address support by the time short-lived certificates reach general availability.</p>
<h2 id="how-to-get-six-day-and-ip-address-certificates">How To Get Six-Day and IP Address Certificates</h2>
<p>Once short-lived certificates are an option for you, you&rsquo;ll need to use an ACME client that supports <a href="https://letsencrypt.org/2025/01/09/acme-profiles/">ACME certificate profiles</a> and select the short-lived certificate profile (the name of which will be published at a later date).</p>
<p>Once IP address support is an option for you, requesting an IP address in a certificate will automatically select a short-lived certificate profile.</p>
<h2 id="looking-ahead">Looking Ahead</h2>
<p>The best way to prepare to take advantage of short-lived certificates is to make sure your ACME client is reliably renewing certificates in an automated fashion. If that&rsquo;s working well then there should be no costs to switching to short-lived certificates.</p>
<p>If you have questions or comments about our plans, feel free to let us know on our <a href="https://community.letsencrypt.org/t/questions-regarding-announcing-six-day-and-ip-address-certificate-options-in-2025/232043">community forums</a>.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2025/01/16/6-day-and-ip-certs.html</guid>
      </item><item>
        <title>Announcing Certificate Profile Selection</title>
        <link>https://letsencrypt.org/2025/01/09/acme-profiles.html</link>
        <pubDate>Thu, 09 Jan 2025 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>We are excited to announce a new extension to Let&rsquo;s Encrypt&rsquo;s implementation of the ACME protocol that we are calling &ldquo;profile selection.&rdquo; This new feature will allow site operators and ACME clients to opt in to the next evolution of Let&rsquo;s Encrypt.</p>
<p>As of today, the <a href="https://letsencrypt.org/docs/staging-environment/">staging environment</a> is advertising a new field in its directory resource:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">GET /directory HTTP/1.1
</span></span><span class="line"><span class="cl">HTTP/1.1 <span class="m">200</span> OK
</span></span><span class="line"><span class="cl">Content-Type: application/json
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">{</span>
</span></span><span class="line"><span class="cl">    ...
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;meta&#34;</span>: <span class="o">{</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;profiles&#34;</span>: <span class="o">{</span>
</span></span><span class="line"><span class="cl">            <span class="s2">&#34;classic&#34;</span>: <span class="s2">&#34;The same profile you&#39;re accustomed to&#34;</span>,
</span></span><span class="line"><span class="cl">            <span class="s2">&#34;tlsserver&#34;</span>: <span class="s2">&#34;https://letsencrypt.org/2025/01/09/acme-profiles/&#34;</span>
</span></span><span class="line"><span class="cl">        <span class="o">}</span>
</span></span><span class="line"><span class="cl">    <span class="o">}</span>
</span></span><span class="line"><span class="cl"><span class="o">}</span>
</span></span></code></pre></div><p>Here, the keys are the names of new &ldquo;profiles&rdquo;, and the values are human-readable descriptions of those profiles. A profile describes a collection of attributes about the certificate that will be issued, such as what extensions it will contain, how long it will be valid for, and more.</p>
<p>For example, the &ldquo;classic&rdquo; profile is exactly what it sounds like: certificates issued under the classic profile will look exactly the same as those that we have always issued, valid for 90 days.</p>
<p>But certificates issued under the &ldquo;tlsserver&rdquo; profile will have a number of differences tailored specifically towards TLS server usage:</p>
<ul>
<li>No Common Name field (including a CN has been <a href="https://github.com/cabforum/servercert/blob/main/docs/BR.md#71272-domain-validated">NOT RECOMMENDED</a> by the Baseline Requirements for several years now)</li>
<li>No Subject Key Identifier (including a SKID is <a href="https://github.com/cabforum/servercert/blob/main/docs/BR.md#71276-subscriber-certificate-extensions">NOT RECOMMENDED</a> by the Baseline Requirements)</li>
<li>No TLS Client Auth Extended Key Usage (root programs are <a href="https://www.chromium.org/Home/chromium-security/root-ca-policy/moving-forward-together/#focusing-on-simplicity">moving towards requiring &ldquo;single-purpose&rdquo; issuance hierarchies</a>, where every certificate has only a single EKU)</li>
<li>No Key Encipherment Key Usage for certificates with RSA public keys (this KU was used by older RSA-based TLS cipher suites, but is fully unnecessary in TLS 1.3)</li>
</ul>
<p>Additionally, in the near future we will offer a &ldquo;shortlived&rdquo; profile which will be identical to the &ldquo;tlsserver&rdquo; profile but with a validity period of only 6 days. This profile isn&rsquo;t available in Staging just yet, so keep an eye out for further announcements regarding short-lived certificates and why we think they&rsquo;re exciting.</p>
<p>An ACME client can supply a desired profile name in a new-order request:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">POST /acme/new-order HTTP/1.1
</span></span><span class="line"><span class="cl">Host: example.com
</span></span><span class="line"><span class="cl">Content-Type: application/jose+json
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">{</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;protected&#34;</span>: base64url<span class="o">(</span>...<span class="o">)</span>,
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;payload&#34;</span>: base64url<span class="o">({</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;profile&#34;</span>: <span class="s2">&#34;tlsserver&#34;</span>,
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;identifiers&#34;</span>: <span class="o">[</span>
</span></span><span class="line"><span class="cl">            <span class="o">{</span> <span class="s2">&#34;type&#34;</span>: <span class="s2">&#34;dns&#34;</span>, <span class="s2">&#34;value&#34;</span>: <span class="s2">&#34;www.example.org&#34;</span> <span class="o">}</span>,
</span></span><span class="line"><span class="cl">            <span class="o">{</span> <span class="s2">&#34;type&#34;</span>: <span class="s2">&#34;dns&#34;</span>, <span class="s2">&#34;value&#34;</span>: <span class="s2">&#34;example.org&#34;</span> <span class="o">}</span>
</span></span><span class="line"><span class="cl">        <span class="o">]</span>,
</span></span><span class="line"><span class="cl">    <span class="o">})</span>,
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;signature&#34;</span>: <span class="s2">&#34;H6ZXtGjTZyUnPeKn...wEA4TklBdh3e454g&#34;</span>
</span></span><span class="line"><span class="cl"><span class="o">}</span>
</span></span></code></pre></div><p>If the new-order request is accepted, then the selected profile name will be reflected in the Order object when it is returned, and the resulting certificate after finalization will be issued with the selected profile. If the new-order request does not specify a profile, then the server will select one for it.</p>
<h3 id="guidance-for-acme-clients-and-users">Guidance for ACME clients and users</h3>
<p>If you are an ACME client author, we encourage you to introduce support for this new field in your client. Start by taking a look at the <a href="https://datatracker.ietf.org/doc/draft-aaron-acme-profiles/">draft specification in the IETF ACME Working Group</a>. A simple implementation might allow the user to configure a static profile name and include that name in all new-order requests. For a better user experience, check the configured name against the list of profiles advertised in the directory, to ensure that changes to the available profiles don&rsquo;t result in invalid new-order requests. For clients with a user interface, such as a control panel or interactive command line interface, an implementation could fetch the list of profiles and their descriptions to prompt the user to select one on first run. It could also use a notification mechanism to inform the user of changes to the list of available profiles. We&rsquo;d also love to hear from you about your experience implementing and deploying this new extension.</p>
<p>If you are a site operator or ACME client user, we encourage you to keep an eye on your ACME client of choice to see when they adopt this new feature, and update your client when they do. We also encourage you to try out the modern &ldquo;tlsserver&rdquo; profile in Staging, and let us know what you think of the changes we&rsquo;ve made to the certificates issued under that profile.</p>
<h3 id="what-s-next">What&rsquo;s next?</h3>
<p>Obviously there is more work to be done here. The draft standard will go through multiple rounds of review and tweaks before becoming an IETF RFC, and our implementation will evolve along with it if necessary. Over the coming weeks and months we will also be providing more information about when we enable profile selection in our production environment, and what our production profile options will be.</p>
<p>Thank you for coming along with us on this journey into the future of the Web PKI. We look forward to your testing and feedback!</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2025/01/09/acme-profiles.html</guid>
      </item><item>
        <title>A Note from our Executive Director</title>
        <link>https://letsencrypt.org/2024/12/11/eoy-letter-2024.html</link>
        <pubDate>Wed, 11 Dec 2024 00:00:00 +0000</pubDate>
        <description><![CDATA[<div class="card border-0 pic-quote-right">
    <img alt="Josh Aas" class="mx-auto img-fluid" src="/images/blog/Josh-Aas-Headshot.jpg" />
</div>
<p><em>This letter was originally published in our <a href="https://abetterinternet.org/documents/2024-ISRG-Annual-Report.pdf">2024 Annual Report</a>.</em></p>
<p>The past year at ISRG has been a great one and I couldn’t be more proud of our staff,
community, funders, and other partners that made it happen. Let’s Encrypt continues to
thrive, serving more websites around the world than ever before with excellent security
and stability. Our understanding of what it will take to make more privacy-preserving
metrics more mainstream via our Divvi Up project is evolving in important ways.</p>
<p>Prossimo has made important investments in making software critical infrastructure safer, from TLS and DNS to the Linux kernel.</p>
<p>Next year is the 10th anniversary of the launch of Let’s Encrypt. Internally things have changed dramatically from what they looked like ten years ago, but outwardly our service hasn’t changed much since launch. That’s because the vision we had for how best to do our job remains as powerful today as it ever was: free 90-day TLS certificates via an automated API. Pretty much as many as you need. More than 500,000,000 websites benefit from this offering today, and the vast majority of the web is encrypted.</p>
<p>Our longstanding offering won’t fundamentally change next year, but we are going to introduce a new offering that’s a big shift from anything we’ve done before - short-lived certificates. Specifically, certificates with a lifetime of six days. This is a big upgrade for the security of the TLS ecosystem because it minimizes exposure time during a key compromise event.</p>
<p>Because we’ve done so much to encourage automation over the past decade, most of our subscribers aren’t going to have to do much in order to switch to shorter lived certificates. We, on the other hand, are going to have to think about the possibility that we will need to issue 20x as many certificates as we do now. It’s not inconceivable that at some point in our next decade we may need to be prepared to issue 100,000,000 certificates per day.</p>
<p>That sounds sort of nuts to me today, but issuing 5,000,000 certificates per day
would have sounded crazy to me ten years ago. Here’s the thing though, and this is
what I love about the combination of our staff, partners, and funders - whatever it
is we need to do to doggedly pursue our mission, we’re going to get it done. It was
hard to build Let’s Encrypt. It was difficult to scale it to serve half a billion websites. Getting our Divvi Up service up and running from scratch in three months to service exposure notification applications was not easy. Our Prossimo project was a primary contributor to the creation of a TLS library that provides memory safety while outperforming its peers - a heavy lift.</p>
<p>Charitable contributions from people like you and organizations around the world
make this stuff possible. Since 2015, tens of thousands of people have donated.
They’ve made a case for corporate sponsorship, given through their DAFs, or set up
recurring donations, sometimes to give $3 a month. That’s all added up to millions
of dollars that we’ve used to change the Internet for nearly everyone using it. I hope
you’ll join these people and help lay the foundation for another great decade.</p>
<p><strong>Josh Aas</strong><br  />
<em>Executive Director</em></p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2024/12/11/eoy-letter-2024.html</guid>
      </item><item>
        <title>Ending OCSP Support in 2025</title>
        <link>https://letsencrypt.org/2024/12/05/ending-ocsp.html</link>
        <pubDate>Thu, 05 Dec 2024 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Earlier this year we <a href="https://letsencrypt.org/2024/07/23/replacing-ocsp-with-crls/">announced</a> our intent to provide certificate revocation information exclusively via <a href="https://letsencrypt.org/2022/09/07/new-life-for-crls">Certificate Revocation Lists (CRLs)</a>, ending support for providing certificate revocation information via the <a href="https://en.wikipedia.org/wiki/Online_Certificate_Status_Protocol">Online Certificate Status Protocol (OCSP)</a>. Today we are providing a timeline for ending OCSP services:</p>
<ul>
<li>January 30, 2025
<ul>
<li>OCSP Must-Staple requests will fail, unless the requesting account has previously issued a certificate containing the OCSP Must Staple extension</li>
</ul>
</li>
<li>May 7, 2025
<ul>
<li>Prior to this date we will have added CRL URLs to certificates</li>
<li>On this date we will drop OCSP URLs from certificates</li>
<li>On this date all requests including the OCSP Must Staple extension will fail</li>
</ul>
</li>
<li>August 6, 2025
<ul>
<li>On this date we will turn off our OCSP responders</li>
</ul>
</li>
</ul>
<p>Additionally, a very small percentage of our subscribers request certificates with the OCSP Must Staple Extension. If you have manually configured your ACME client to request that extension, action is required before May 7. See &ldquo;Must Staple&rdquo; below for details.</p>
<p>OCSP and CRLs are both mechanisms by which CAs can communicate certificate revocation information, but CRLs have significant advantages over OCSP. Let&rsquo;s Encrypt has been providing an OCSP responder since our launch nearly ten years ago. We added support for CRLs in 2022.</p>
<p>Websites and people who visit them will not be affected by this change, but some non-browser software might be.</p>
<p>We plan to end support for OCSP primarily because it represents a considerable risk to privacy on the Internet. When someone visits a website using a browser or other software that checks for certificate revocation via OCSP, the Certificate Authority (CA) operating the OCSP responder immediately becomes aware of which website is being visited from that visitor&rsquo;s particular IP address. Even when a CA intentionally does not retain this information, as is the case with Let&rsquo;s Encrypt, CAs could be legally compelled to collect it. CRLs do not have this issue.</p>
<p>We are also taking this step because keeping our CA infrastructure as simple as possible is critical for the continuity of compliance, reliability, and efficiency at Let&rsquo;s Encrypt. For every year that we have existed, operating OCSP services has taken up considerable resources that can soon be better spent on other aspects of our operations. Now that we support CRLs, our OCSP service has become unnecessary.</p>
<p>We recommend that anyone relying on OCSP services today start the process of ending that reliance as soon as possible. If you use Let&rsquo;s Encrypt certificates to secure non-browser communications such as a VPN, you should ensure that your software operates correctly if certificates contain no OCSP URL.</p>
<h2 id="must-staple">Must Staple</h2>
<p>Because of the privacy issues with OCSP, browsers and servers implement a feature called &ldquo;OCSP Stapling&rdquo;, where the web server sends a copy of the appropriate OCSP response during the TLS handshake, and the browser skips making a request to the CA, thus better preserving privacy.</p>
<p>In addition to OCSP Stapling (a TLS feature negotiated at handshake time), there&rsquo;s an extension that can be added to certificates at issuance time, colloquially called &ldquo;OCSP Must Staple.&rdquo; This tells browsers that, if they see that extension in a certificate, they should never contact the CA about it and should instead expect to see a stapled copy in the handshake. Failing that, browsers should refuse to connect. This was designed to solve some security problems with revocation.</p>
<p>Let&rsquo;s Encrypt has supported OCSP Must Staple for a long time, because of the potential to improve both privacy and security. However, Must Staple has failed to get wide browser support after many years. And popular web servers still implement OCSP Stapling in ways that create serious risks of downtime.</p>
<p>As part of removing OCSP, we&rsquo;ll also be removing support for OCSP Must Staple. CRLs have wide browser support and can provide privacy benefits to all sites, without requiring special web server configuration. Thanks to all our subscribers who have helped with the OCSP Must Staple experiment.</p>
<p>If you are not certain whether you are using OCSP Must Staple, you can check <a href="/downloads/must-staple-certificates-2024-09-05-to-2024-12-05.csv.zip">this list of hostnames and certificate serials (11.1 MB, .zip)</a>.</p>
<p>As of January 30, 2025, issuance requests that include the OCSP Must Staple extension will fail, unless the requesting account has previously issued a certificate containing the OCSP Must Staple extension.</p>
<p>As of May 7, all issuance requests that include the OCSP Must Staple extension will fail, including renewals. Please change your ACME client configuration to not request the extension.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2024/12/05/ending-ocsp.html</guid>
      </item><item>
        <title>Intent to End OCSP Service</title>
        <link>https://letsencrypt.org/2024/07/23/replacing-ocsp-with-crls.html</link>
        <pubDate>Tue, 23 Jul 2024 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Today we are announcing our intent to end <a href="https://en.wikipedia.org/wiki/Online_Certificate_Status_Protocol">Online Certificate Status Protocol (OCSP)</a> support in favor of <a href="https://letsencrypt.org/2022/09/07/new-life-for-crls">Certificate Revocation Lists (CRLs)</a> as soon as possible. OCSP and CRLs are both mechanisms by which CAs can communicate certificate revocation information, but CRLs have significant advantages over OCSP. Let&rsquo;s Encrypt has been providing an OCSP responder since our launch nearly ten years ago. We added support for CRLs in 2022.</p>
<p>Websites and people who visit them will not be affected by this change, but some non-browser software might be.</p>
<p>We plan to end support for OCSP primarily because it represents a considerable risk to privacy on the Internet. When someone visits a website using a browser or other software that checks for certificate revocation via OCSP, the Certificate Authority (CA) operating the OCSP responder immediately becomes aware of which website is being visited from that visitor&rsquo;s particular IP address. Even when a CA intentionally does not retain this information, as is the case with Let&rsquo;s Encrypt, CAs could be legally compelled to collect it. CRLs do not have this issue.</p>
<p>We are also taking this step because keeping our CA infrastructure as simple as possible is critical for the continuity of compliance, reliability, and efficiency at Let&rsquo;s Encrypt. For every year that we have existed, operating OCSP services has taken up considerable resources that can soon be better spent on other aspects of our operations. Now that we support CRLs, our OCSP service has become unnecessary.</p>
<p>In August of 2023 the <a href="https://cabforum.org/">CA/Browser Forum</a> passed <a href="https://lists.cabforum.org/pipermail/servercert-wg/2023-September/003998.html">a ballot</a> to make providing OCSP services optional for publicly trusted CAs like Let&rsquo;s Encrypt. With one exception, Microsoft, the root programs themselves no longer require OCSP. As soon as the <a href="https://learn.microsoft.com/en-us/security/trusted-root/program-requirements">Microsoft Root Program</a> also makes OCSP optional, which we are optimistic will happen within the next six to twelve months, Let&rsquo;s Encrypt intends to announce a specific and rapid timeline for shutting down our OCSP services. We hope to serve our last OCSP response between three and six months after that announcement. The best way to stay apprised of updates on these plans is to <a href="https://community.letsencrypt.org/c/api-announcements/18">subscribe to our API Announcements</a> category on Discourse.</p>
<p>We recommend that anyone relying on OCSP services today start the process of ending that reliance as soon as possible. If you use Let&rsquo;s Encrypt certificates to secure non-browser communications such as a VPN, you should ensure that your software operates correctly if certificates contain no OCSP URL. Fortunately, most OCSP implementations &ldquo;fail open&rdquo; which means that an inability to fetch an OCSP response will not break the system.</p>
<p><em><a href="https://abetterinternet.org/">Internet Security Research Group (ISRG)</a> is the parent organization of <a href="http://letsencrypt.org/">Let&rsquo;s Encrypt</a>, <a href="http://memorysafety.org/">Prossimo</a>, and <a href="http://divviup.org/">Divvi Up</a>. ISRG is a 501(c)(3) nonprofit. If you&rsquo;d like to support our work, please consider <a href="https://www.abetterinternet.org/getinvolved/">getting involved</a>, <a href="https://www.abetterinternet.org/donate/">donating</a>, or encouraging your company to <a href="https://www.abetterinternet.org/sponsor/">become a sponsor</a>.</em></p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2024/07/23/replacing-ocsp-with-crls.html</guid>
      </item><item>
        <title>More Memory Safety for Let’s Encrypt: Deploying ntpd-rs</title>
        <link>https://letsencrypt.org/2024/06/24/ntpd-rs-deployment.html</link>
        <pubDate>Mon, 24 Jun 2024 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>When we look at the general security posture of Let&rsquo;s Encrypt, one of the things that worries us most is how much of the operating system and network infrastructure is written in unsafe languages like C and C++. The <a href="https://github.com/letsencrypt/boulder">CA software</a> itself is written in memory safe Golang, but from our server operating systems to our network equipment, lack of memory safety routinely leads to vulnerabilities that need patching.</p>
<p>Partially for the sake of Let&rsquo;s Encrypt, and partially for the sake of the wider Internet, we started a new project called <a href="https://www.memorysafety.org/">Prossimo</a> in 2020. Prossimo&rsquo;s goal is to make some of the most critical software infrastructure for the Internet memory safe. Since then we&rsquo;ve invested in a range of software components including the <a href="https://github.com/rustls/rustls/">Rustls TLS library</a>, <a href="https://github.com/hickory-dns/hickory-dns">Hickory DNS</a>, <a href="https://github.com/memorysafety/river">River reverse proxy</a>, <a href="https://github.com/memorysafety/sudo-rs">sudo-rs</a>, <a href="https://rust-for-linux.com/">Rust support for the Linux kernel</a>, and <a href="https://github.com/pendulum-project/ntpd-rs">ntpd-rs</a>.</p>
<p>Let&rsquo;s Encrypt has now taken a step that was a long time in the making: we&rsquo;ve deployed <a href="https://github.com/pendulum-project/ntpd-rs">ntpd-rs</a>, the first piece of memory safe software from Prossimo that has made it into the Let&rsquo;s Encrypt infrastructure.</p>
<p>Most operating systems use the Network Time Protocol (NTP) to accurately determine what time it is. Keeping track of time is a critical task for an operating system, and since it involves interacting with the Internet it&rsquo;s important to make sure NTP implementations are secure.</p>
<p>In April of 2022, Prossimo started work on a memory safe and generally more secure <a href="https://en.wikipedia.org/wiki/Network_Time_Protocol">NTP</a> implementation called <a href="https://github.com/pendulum-project/ntpd-rs">ntpd-rs</a>. Since then, the implementation has matured and is now maintained by <a href="https://github.com/pendulum-project">Project Pendulum</a>. In April of 2024 ntpd-rs was deployed to the Let&rsquo;s Encrypt staging environment, and as of now it&rsquo;s in production.</p>
<p>Over the next few years we plan to continue replacing C or C++ software with memory safe alternatives in the Let&rsquo;s Encrypt infrastructure: OpenSSL and its derivatives with <a href="https://www.memorysafety.org/initiative/rustls/">Rustls</a>, our DNS software with <a href="https://www.memorysafety.org/initiative/dns/">Hickory</a>, Nginx with <a href="https://www.memorysafety.org/initiative/reverse-proxy/">River</a>, and sudo with <a href="https://www.memorysafety.org/initiative/sudo-su/">sudo-rs</a>. Memory safety is just part of the overall security equation, but it&rsquo;s an important part and we&rsquo;re glad to be able to make these improvements.</p>
<p>We depend on contributions from our community of users and supporters in order to provide our services. If your company or organization would like to <a href="https://www.abetterinternet.org/sponsor/">sponsor</a> Let&rsquo;s Encrypt please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>. We ask that you make an <a href="https://letsencrypt.org/donate/">individual contribution</a> if it is within your means.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2024/06/24/ntpd-rs-deployment.html</guid>
      </item><item>
        <title>Let’s Encrypt Continues Partnership with Princeton to Bolster Internet Security</title>
        <link>https://letsencrypt.org/2024/05/30/princeton-partnership.html</link>
        <pubDate>Thu, 30 May 2024 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Let&rsquo;s Encrypt is proud to have been partnering with the <a href="https://citp.princeton.edu/">Center for Information Technology Policy</a> team at Princeton University <a href="https://www.princeton.edu/news/2020/02/21/internet-security-borne-out-collaboration-between-princeton-and-lets-encrypt">since 2018</a> to bolster defenses against Border Gateway Protocol (BGP) attacks. We&rsquo;re thrilled to continue this partnership thanks to renewed funding from the <a href="https://www.opentech.fund/">Open Technology Fund</a>.</p>
<p><em>“Let&rsquo;s Encrypt has played a pivotal role in driving our research around protecting against BGP attacks and preventing the disruption such attacks can cause. We&rsquo;re grateful for the partnership with Let&rsquo;s Encrypt, as the largest Certificate Authority, in this critical work.” &ndash; Jennifer Rexford, Provost, Princeton University</em></p>
<p>To date, <a href="https://www.cs.princeton.edu/~jrex/papers/multiva20.pdf">our work with Princeton</a> has focused on defending against BGP attacks on domain control validation via <a href="https://letsencrypt.org/2020/02/19/multi-perspective-validation.html">Multi-Perspective Issuance Corroboration (MPIC)</a>. This year, Let&rsquo;s Encrypt is adding <a href="https://community.letsencrypt.org/t/lets-encrypt-is-adding-two-new-remote-perspectives-for-domain-validation/214123">two new remote perspectives</a> for domain validation. This means we will make five total validation requests, one from the primary datacenter and four from remote perspectives (previously two). Increased perspectives provide more domain validation security, thus improving visibility and protection against BGP attacks.</p>
<figure class="blog-post-image mb-5 flex flex-col items-center text-center">
<img src="/images/2024.05.28.le-new-config.png">
<figcaption>Additional global vantage points increase resilience of Let’s Encrypt issuance. Source: Princeton Center for Information Technology Policy</figcaption>
</figure>
<p>Additionally, we will be facilitating the adoption of <a href="https://letsencrypt.org/2023/03/23/improving-resliiency-and-reliability-with-ari">ACME Renewal Information (ARI)</a> in order to enable certificate authorities (CAs) to maintain continuity of service in a mass revocation/replacement event. If a BGP attack does occur, ARI will allow CAs to quickly and automatically revoke and replace certificates associated with the victim domain. Learn more about how to <a href="https://letsencrypt.org/2024/04/25/guide-to-integrating-ari-into-existing-acme-clients">integrate ARI into an existing ACME client</a>.</p>
<p>Our team will be working with the research groups of Professor Prateek Mittal to provide secure data related to increased perspectives and ARI, and contributing to research analysis and discoveries.</p>
<p>We&rsquo;d like to thank Princeton University for their partnership on this important work, and Open Technology Fund for making it possible.</p>
<p><a href="https://abetterinternet.org/">Internet Security Research Group (ISRG)</a> is the parent organization of <a href="http://letsencrypt.org/">Let&rsquo;s Encrypt</a>, <a href="http://memorysafety.org/">Prossimo</a>, and <a href="http://divviup.org/">Divvi Up</a>. ISRG is a 501(c)(3) nonprofit. If you&rsquo;d like to support our work, please consider <a href="https://www.abetterinternet.org/getinvolved/">getting involved</a>, <a href="https://www.abetterinternet.org/donate/">donating</a>, or encouraging your company to <a href="https://www.abetterinternet.org/sponsor/">become a sponsor</a>.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2024/05/30/princeton-partnership.html</guid>
      </item><item>
        <title>Takeaways from Tailscale’s Adoption of ARI</title>
        <link>https://letsencrypt.org/2024/05/01/ari-in-tailscale.html</link>
        <pubDate>Wed, 01 May 2024 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Since March 2023, Let&rsquo;s Encrypt has been <a href="https://letsencrypt.org/2023/03/23/improving-resliiency-and-reliability-with-ari">improving our resiliency and reliability</a> via ACME Renewal Information (<a href="https://datatracker.ietf.org/doc/rfc9773/">ARI</a>). ARI makes it possible for our Subscribers to handle certificate revocation and renewal easily and automatically. A primary benefit of ARI is that it sets Subscribers up for success in terms of ideal renewal times in the event that Let&rsquo;s Encrypt offers certificates with even shorter lifetimes than 90 days. We recently published a <a href="https://letsencrypt.org/2024/04/25/guide-to-integrating-ari-into-existing-acme-clients">guide for engineers on how to integrate ARI into existing ACME Clients</a>.</p>
<p>In this blog post, we&rsquo;ll explore Let&rsquo;s Encrypt Subscriber <a href="https://github.com/tailscale/tailscale/issues/8204">Tailscale&rsquo;s experience adopting ARI</a>.</p>
<p>In total, it took just two Tailscale engineers less than two days to implement ARI. Prior to ARI, the Tailscale team had made other iterations of cert renewal logic, including hardcoding renewal 14 days before expiry and hardcoding 1/3rd of remaining time until expiry. An issue with these approaches was that assumptions were made about the validity period of certificates issued by Let&rsquo;s Encrypt, which will change in the future. In contrast, ARI allows Tailscale to offload the renewal decision to Let&rsquo;s Encrypt without making any assumptions.</p>
<p>Tailscale noted that ARI was especially useful to add before certificates&rsquo; validity period starts shortening, as their client software in charge of requesting and renewing certificates is running on user machines. This makes it so they cannot easily update the whole fleet overnight if any issues come up. Thanks to ARI, they&rsquo;ve reduced the risk of not rotating certificates for client machines in time, or causing excessive load on Let&rsquo;s Encrypt&rsquo;s infrastructure with overly-eager rotation logic.</p>
<p>One consideration the Tailscale team factored in deciding to adopt ARI was wanting to avoid adding a hard dependency on the Let&rsquo;s Encrypt infrastructure for renewal. To remedy this, Tailscale certificate renewal logic falls back to local time-based check if the ARI endpoint cannot be reached for any reason.</p>
<p>Tailscale&rsquo;s roadmap for getting ARI in production:</p>
<ul>
<li>
<p><a href="https://github.com/tailscale/golang-x-crypto/pull/10">Updated their fork</a> of golang.org/x/crypto to support ARI</p>
</li>
<li>
<p><a href="https://github.com/tailscale/tailscale/pull/8599">Updated the renewal code</a> in the Tailscale client</p>
</li>
<li>
<p>Tested it locally by requesting certificates for a dev domain</p>
</li>
<li>
<p>Tested renewal by stubbing out ARI response with hardcoded data</p>
</li>
<li>
<p>Tested fallback by blocking ARI requests</p>
</li>
<li>
<p>Shipped it!</p>
</li>
</ul>
<p>The team reported running into one snag during the process. Because the RFC is not finalized, the upstream Go package for ACME <a href="https://github.com/golang/go/issues/60958">doesn&rsquo;t support ARI yet</a>. As a solution, they added support in their fork of that Go package. Tailscale&rsquo;s main piece of advice for Subscribers adopting ARI: don&rsquo;t forget to put a timeout on your ARI request!</p>
<p>We&rsquo;re grateful to the Tailscale team for taking the time to share with us their experience adopting ARI and advice for fellow Subscribers. In addition to being an ARI adopter, Tailscale is a Let&rsquo;s Encrypt Sponsor! We appreciate their support of our work to build a more secure Web.</p>
<p>We&rsquo;re also grateful to be partnering with Princeton University on our ACME Renewal Information work, thanks to generous support from the <a href="https://www.opentech.fund/">Open Technology Fund</a>.</p>
<p><a href="https://abetterinternet.org/">Internet Security Research Group (ISRG)</a> is the parent organization of <a href="http://letsencrypt.org/">Let&rsquo;s Encrypt</a>, <a href="http://memorysafety.org/">Prossimo</a>, and <a href="http://divviup.org/">Divvi Up</a>. ISRG is a 501(c)(3) nonprofit. If you&rsquo;d like to support our work, please consider <a href="https://www.abetterinternet.org/getinvolved/">getting involved</a>, <a href="https://www.abetterinternet.org/donate/">donating</a>, or encouraging your company to <a href="https://www.abetterinternet.org/sponsor/">become a sponsor</a>.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2024/05/01/ari-in-tailscale.html</guid>
      </item><item>
        <title>An Engineer’s Guide to Integrating ARI into Existing ACME Clients</title>
        <link>https://letsencrypt.org/2024/04/25/guide-to-integrating-ari-into-existing-acme-clients.html</link>
        <pubDate>Thu, 25 Apr 2024 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Following our <a href="https://letsencrypt.org/2023/03/23/improving-resliiency-and-reliability-with-ari">previous</a> post on the foundational benefits of ACME Renewal Information (<a href="https://datatracker.ietf.org/doc/rfc9773/">ARI</a>), this one offers a detailed technical guide for incorporating ARI into existing ACME clients.</p>
<p>Since its introduction in March 2023, ARI has significantly enhanced the resiliency and reliability of certificate revocation and renewal for a growing number of Subscribers. To extend these benefits to an even broader audience, incorporating ARI into more ACME clients is essential.</p>
<p>To foster wider adoption, we&rsquo;re excited to announce a new compelling incentive: certificate renewals that utilize ARI will now be exempt from all <a href="https://letsencrypt.org/docs/rate-limits/">rate limits</a>. To capitalize on this benefit, renewals must occur within the ARI-suggested renewal window, and the request must clearly indicate which existing certificate is being replaced. To learn how to request a suggested renewal window, select an optimal renewal time, and specify certificate replacement, continue reading!</p>
<h2 id="integrating-ari-into-an-existing-acme-client">Integrating ARI Into an Existing ACME Client</h2>
<p>In May 2023, we contributed a <a href="https://github.com/go-acme/lego/pull/1912">pull request</a> to the <a href="https://go-acme.github.io/lego/usage/cli/">Lego</a> ACME client, adding support for draft-ietf-acme-ari-01. In December 2023 and February 2024, we contributed two follow-up pull requests (<a href="https://github.com/go-acme/lego/pull/2066">2066</a>, <a href="https://github.com/go-acme/lego/pull/2114">2114</a>) adding support for changes made in draft-ietf-acme-ari-02 and 03. These experiences provided valuable insight into the process of integrating ARI into an existing ACME client. We&rsquo;ve distilled these insights into six steps, which we hope will be useful for other ACME client developers.</p>
<p><em>Note:</em> the code snippets in this post are written in Golang. We&rsquo;ve structured and contextualized them for clarity, so that they might be easily adapted to other programming languages as well.</p>
<h3 id="step-1-detecting-support-for-ari"><strong>Step 1: Detecting support for ARI</strong></h3>
<p>While Let&rsquo;s Encrypt first enabled ARI in <a href="https://letsencrypt.org/docs/staging-environment/">Staging</a> and Production environments in March 2023, many ACME clients are used with a variety of CAs, so it&rsquo;s crucial to ascertain if a CA supports ARI. This can be easily determined: if a &lsquo;renewalInfo&rsquo; endpoint is included in the CA&rsquo;s directory object, then the CA supports ARI.</p>
<p>In most any client you&rsquo;ll find a function or method that is responsible for parsing the JSON of the ACME directory object. If this code is deserializing the JSON into a defined type, it will be necessary to modify this type to include the new &lsquo;renewalInfo&rsquo; endpoint.</p>
<p>In Lego, we added a &lsquo;renewalInfo&rsquo; field to the Directory struct, which is accessed by the GetDirectory method:</p>
<pre tabindex="0"><code>type Directory struct {
    NewNonceURL    string `json:&#34;newNonce&#34;`
    NewAccountURL  string `json:&#34;newAccount&#34;`
    NewOrderURL    string `json:&#34;newOrder&#34;`
    NewAuthzURL    string `json:&#34;newAuthz&#34;`
    RevokeCertURL  string `json:&#34;revokeCert&#34;`
    KeyChangeURL   string `json:&#34;keyChange&#34;`
    Meta           Meta   `json:&#34;meta&#34;`
    RenewalInfo    string `json:&#34;renewalInfo&#34;`
}
</code></pre><p>As we discussed above, not all ACME CAs currently implement ARI, so before we attempt to make use of the &lsquo;renewalInfo&rsquo; endpoint we should ensure that this endpoint is actually populated before calling it:</p>
<pre tabindex="0"><code>func (c *CertificateService) GetRenewalInfo(certID string) (*http.Response, error) {
  if c.core.GetDirectory().RenewalInfo == &#34;&#34; {
    return nil, ErrNoARI
  }
}
</code></pre><h3 id="step-2-determining-where-ari-fits-into-the-renewal-lifecycle-of-your-client"><strong>Step 2: Determining where ARI fits into the renewal lifecycle of your client</strong></h3>
<p>The next step involves selecting the optimal place in the client&rsquo;s workflow to integrate ARI support. ACME clients can either run persistently or be executed on-demand. ARI is particularly beneficial for clients that operate persistently or for on-demand clients that are scheduled to run at least daily.</p>
<p>In the case of Lego, it falls into the latter category. Its renew command is executed on-demand, typically through a job scheduler like cron. Therefore, incorporating ARI support into the renew command was the logical choice. Like many ACME clients, Lego already has a mechanism to decide when to renew certificates, based on the certificate&rsquo;s remaining validity period and the user&rsquo;s configured renewal timeframe. Introducing calls to ARI should take precedence over this mechanism, leading to a modification of the renew command to consult ARI before resorting to the built-in logic.</p>
<h3 id="step-3-constructing-the-ari-certid"><strong>Step 3: Constructing the ARI CertID</strong></h3>
<p>The composition of the ARI CertID is a crucial part of the ARI specification. This identifier, unique to each certificate, is derived by combining the base64url encoded bytes of the certificate&rsquo;s Authority Key Identifier (AKI) extension and its Serial Number, separated by a period. The approach of combining AKI and serial number is strategic: the AKI is specific to an issuing intermediate certificate, and a CA may have multiple intermediates. A certificate&rsquo;s serial number is required to be unique per issuing intermediate, but serials can be reused between intermediates. Thus the combination of AKI and serial uniquely identifies a certificate. With this covered, let&rsquo;s move on to constructing an ARI CertID using only the contents of the certificate being replaced.</p>
<p>Suppose the &lsquo;keyIdentifier&rsquo; field of the certificate&rsquo;s Authority Key Identifier (AKI) extension has the hexadecimal bytes <code>69:88:5B:6B:87:46:40:41:E1:B3:7B:84:7B:A0:AE:2C:DE:01:C8:D4</code> as its ASN.1 Octet String value. The base64url encoding of these bytes is <code>aYhba4dGQEHhs3uEe6CuLN4ByNQ=</code>. Additionally, the certificate&rsquo;s Serial Number, when represented in its DER encoding (excluding the tag and length bytes), has the hexadecimal bytes <code>00:87:65:43:21</code>. This includes a leading zero byte to ensure that the serial number is interpreted as a positive integer, as necessitated by the leading <code>1</code> bit in <code>0x87</code>. The base64url encoding of these bytes is <code>AIdlQyE=</code>. After stripping the trailing padding characters (&quot;=&quot;) from each encoded part and concatenating them with a period as a separator, the ARI CertID for this certificate is <code>aYhba4dGQEHhs3uEe6CuLN4ByNQ.AIdlQyE</code>.</p>
<p>In the case of Lego, we implemented the above logic in the following function:</p>
<pre tabindex="0"><code>// MakeARICertID constructs a certificate identifier as described in
// draft-ietf-acme-ari-03, section 4.1.

func MakeARICertID(leaf *x509.Certificate) (string, error) {
  if leaf == nil {
    return &#34;&#34;, errors.New(&#34;leaf certificate is nil&#34;)
  }

  // Marshal the Serial Number into DER.
  der, err := asn1.Marshal(leaf.SerialNumber)
  if err != nil {
    return &#34;&#34;, err
  }

  // Check if the DER encoded bytes are sufficient (at least 3 bytes: tag,
  // length, and value).
  if len(der) &lt; 3 {
    return &#34;&#34;, errors.New(&#34;invalid DER encoding of serial number&#34;)
  }

  // Extract only the integer bytes from the DER encoded Serial Number
  // Skipping the first 2 bytes (tag and length). The result is base64url
  // encoded without padding.
  serial := base64.RawURLEncoding.EncodeToString(der[2:])

  // Convert the Authority Key Identifier to base64url encoding without
  // padding.
  aki := base64.RawURLEncoding.EncodeToString(leaf.AuthorityKeyId)

  // Construct the final identifier by concatenating AKI and Serial Number.
  return fmt.Sprintf(&#34;%s.%s&#34;, aki, serial), nil
}
</code></pre><p>Note: In the provided code, we utilize the RawURLEncoding, which is the unpadded base64 encoding as defined in <a href="https://datatracker.ietf.org/doc/html/rfc4648#section-5">RFC 4648</a>. This encoding is similar to URLEncoding but excludes padding characters, such as &ldquo;=&rdquo;. Should your programming language&rsquo;s base64 package only support URLEncoding, it will be necessary to remove any trailing padding characters from the encoded strings before combining them.</p>
<h3 id="step-4-requesting-a-suggested-renewal-window"><strong>Step 4: Requesting a suggested renewal window</strong></h3>
<p>With the ARI CertID in hand, we can now request renewal information from the CA. This is done by sending a GET request to the &lsquo;renewalInfo&rsquo; endpoint, including the ARI CertID in the URL path.</p>
<pre tabindex="0"><code>GET https://example.com/acme/renewal-info/aYhba4dGQEHhs3uEe6CuLN4ByNQ.AIdlQyE
</code></pre><p>The ARI response is a JSON object that includes a &lsquo;suggestedWindow&rsquo;, with &lsquo;start&rsquo; and &rsquo;end&rsquo; timestamps indicating the recommended renewal period, and optionally, an &rsquo;explanationURL&rsquo; providing additional context about the renewal suggestion.</p>
<pre tabindex="0"><code>{
  &#34;suggestedWindow&#34;: {
    &#34;start&#34;: &#34;2021-01-03T00:00:00Z&#34;,
    &#34;end&#34;: &#34;2021-01-07T00:00:00Z&#34;
  },
  &#34;explanationURL&#34;: &#34;https://example.com/docs/ari&#34;
}
</code></pre><p>The &rsquo;explanationURL&rsquo; is optional. However, if it&rsquo;s provided, it&rsquo;s recommended to display it to the user or log it. For instance, in cases where ARI suggests an immediate renewal due to an incident that necessitates revocation, the &rsquo;explanationURL&rsquo; might link to a page explaining the incident.</p>
<p>Next, we&rsquo;ll cover how to use the &lsquo;suggestedWindow&rsquo; to determine the best time to renew the certificate.</p>
<h3 id="step-5-selecting-a-specific-renewal-time"><strong>Step 5: Selecting a specific renewal time</strong></h3>
<p><a href="https://datatracker.ietf.org/doc/rfc9773/">RFC 9773</a> provides a suggested algorithm for determining when to renew a certificate. This algorithm is not mandatory, but it is recommended.</p>
<ol>
<li>
<p>Select a uniform random time within the suggested window.</p>
</li>
<li>
<p>If the selected time is in the past, attempt renewal immediately.</p>
</li>
<li>
<p>Otherwise, if the client can schedule itself to attempt renewal at exactly the selected time, do so.</p>
</li>
<li>
<p>Otherwise, if the selected time is before the next time that the client would wake up normally, attempt renewal immediately.</p>
</li>
<li>
<p>Otherwise, sleep until the next normal wake time, re-check ARI, and return to &ldquo;1.&rdquo;</p>
</li>
</ol>
<p>For Lego, we implemented the above logic in the following function:</p>
<pre tabindex="0"><code>func (r *RenewalInfoResponse) ShouldRenewAt(now time.Time, willingToSleep time.Duration) *time.Time {

  // Explicitly convert all times to UTC.
  now = now.UTC()
  start := r.SuggestedWindow.Start.UTC()
  end := r.SuggestedWindow.End.UTC()

  // Select a uniform random time within the suggested window.
  window := end.Sub(start)
  randomDuration := time.Duration(rand.Int63n(int64(window)))
  rt := start.Add(randomDuration)

  // If the selected time is in the past, attempt renewal immediately.
  if rt.Before(now) {
    return &amp;now
  }

  // Otherwise, if the client can schedule itself to attempt renewal at exactly the selected time, do so.
  willingToSleepUntil := now.Add(willingToSleep)
  if willingToSleepUntil.After(rt) || willingToSleepUntil.Equal(rt) {
    return &amp;rt
  }

  // TODO: Otherwise, if the selected time is before the next time that the client would wake up normally, attempt renewal immediately.

  // Otherwise, sleep until the next normal wake time.

  return nil

}
</code></pre><h3 id="step-6-indicating-which-certificate-is-replaced-by-this-new-order"><strong>Step 6: Indicating which certificate is replaced by this new order</strong></h3>
<p>To signal that a renewal was suggested by ARI, a new &lsquo;replaces&rsquo; field has been added to the ACME Order object. The ACME client should populate this field when creating a new order, as shown in the following example:</p>
<pre tabindex="0"><code>{
  &#34;protected&#34;: base64url({
    &#34;alg&#34;: &#34;ES256&#34;,
    &#34;kid&#34;: &#34;https://example.com/acme/acct/evOfKhNU60wg&#34;,
    &#34;nonce&#34;: &#34;5XJ1L3lEkMG7tR6pA00clA&#34;,
    &#34;url&#34;: &#34;https://example.com/acme/new-order&#34;
  }),
  &#34;payload&#34;: base64url({
    &#34;identifiers&#34;: [
      { &#34;type&#34;: &#34;dns&#34;, &#34;value&#34;: &#34;example.com&#34; }
    ],
    &#34;replaces&#34;: &#34;aYhba4dGQEHhs3uEe6CuLN4ByNQ.AIdlQyE&#34;
  }),
  &#34;signature&#34;: &#34;H6ZXtGjTZyUnPeKn...wEA4TklBdh3e454g&#34;
}
</code></pre><p>Many clients will have an object that the client deserializes into the JSON used for the order request. In the Lego client, this is the Order struct. It now includes a &lsquo;replaces&rsquo; field, accessed by the NewWithOptions method:</p>
<pre tabindex="0"><code>// Order the ACME order Object.
// - https://www.rfc-editor.org/rfc/rfc8555.html#section-7.1.3

type Order struct {
  ...
  // replaces (optional, string):
  // a string uniquely identifying a previously-issued
  // certificate which this order is intended to replace.
  // - https://datatracker.ietf.org/doc/html/draft-ietf-acme-ari-03#section-5
  Replaces string `json:&#34;replaces,omitempty&#34;`
}

...

// NewWithOptions Creates a new order.
func (o *OrderService) NewWithOptions(domains []string, opts *OrderOptions) (acme.ExtendedOrder, error) {
  ...
  if o.core.GetDirectory().RenewalInfo != &#34;&#34; {
    orderReq.Replaces = opts.ReplacesCertID
  }
}
</code></pre><p>When Let&rsquo;s Encrypt processes a new order request featuring a &lsquo;replaces&rsquo; field, several important checks are conducted. First, it&rsquo;s verified that the certificate indicated in this field has not been replaced previously. Next, we ensure that the certificate is linked to the same ACME account that&rsquo;s making the current request. Additionally, there must be at least one domain name shared between the existing certificate and the one being requested. If these criteria are met and the new order request is submitted within the ARI-suggested renewal window, the request qualifies for exemption from all rate limits. Congratulations!</p>
<h2 id="moving-forward">Moving Forward</h2>
<p>The integration of ARI into more ACME clients isn&rsquo;t just a technical upgrade, it&rsquo;s the next step in the evolution of the ACME protocol; one where CAs and clients work together to optimize the renewal process, ensuring lapses in certificate validity are a thing of the past. The result is a more secure and privacy-respecting Internet for everyone, everywhere.</p>
<p>As always, we&rsquo;re excited to engage with our community on this journey. Your insights, experiences, and <a href="https://community.letsencrypt.org/c/client-dev/14">feedback</a> are invaluable as we continue to push the boundaries of what&rsquo;s possible with ACME.</p>
<p>We&rsquo;re grateful to be partnering with Princeton University on our ACME Renewal Information work, thanks to generous support from the <a href="https://www.opentech.fund/">Open Technology Fund</a>.</p>
<p><a href="https://abetterinternet.org/">Internet Security Research Group (ISRG)</a> is the parent organization of <a href="http://letsencrypt.org/">Let&rsquo;s Encrypt</a>, <a href="http://memorysafety.org/">Prossimo</a>, and <a href="http://divviup.org/">Divvi Up</a>. ISRG is a 501(c)(3) nonprofit. If you&rsquo;d like to support our work, please consider <a href="https://www.abetterinternet.org/getinvolved/">getting involved</a>, <a href="https://www.abetterinternet.org/donate/">donating</a>, or encouraging your company to <a href="https://www.abetterinternet.org/sponsor/">become a sponsor</a>.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2024/04/25/guide-to-integrating-ari-into-existing-acme-clients.html</guid>
      </item><item>
        <title>Deploying Let&#39;s Encrypt&#39;s New Issuance Chains</title>
        <link>https://letsencrypt.org/2024/04/12/changes-to-issuance-chains.html</link>
        <pubDate>Fri, 12 Apr 2024 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>On <strong>Thursday, June 6th, 2024</strong>, we will be switching issuance to use our <a href="https://letsencrypt.org/2024/03/19/new-intermediate-certificates">new intermediate certificates</a>. Simultaneously, we are removing the DST Root CA X3 cross-sign from our API, aligning with our strategy to shorten the Let&rsquo;s Encrypt chain of trust. We will begin issuing ECDSA end-entity certificates from a default chain that just contains a single ECDSA intermediate, removing a second intermediate and the option to issue an ECDSA end-entity certificate from an RSA intermediate. The Let&rsquo;s Encrypt staging environment will make an equivalent change on April 24th, 2024.</p>
<p><strong>Most Let&rsquo;s Encrypt Subscribers will not need to take any action</strong> in response to this change because ACME clients, like <a href="https://certbot.eff.org/">certbot</a>, will automatically configure the new intermediates when certificates are renewed. The Subscribers who will be affected are those who currently pin intermediate certificates (more on that later).</p>
<p>The following diagram depicts what the new hierarchy looks like. You can see details of all of the certificates on our <a href="https://letsencrypt.org/certificates/">updated Chain of Trust documentation page</a>.</p>
<p><img src="/images/blog/ChainofTrust2024CeremonyBlogPost.png" alt="Let’s Encrypt 2024 Ceremony"></p>
<h2 id="new-intermediate-certificates">New Intermediate Certificates</h2>
<p>Earlier this year, Let&rsquo;s Encrypt generated <a href="https://letsencrypt.org/2024/03/19/new-intermediate-certificates">new intermediate keys and certificates</a>. They will replace the current intermediates, which were issued in September 2020 and are approaching their expiration.</p>
<p>All certificates - issued by both RSA and ECDSA intermediates - will be served with a default chain of <strong>ISRG Root X1 → (RSA or ECDSA) Intermediate → End-Entity Certificate</strong>. That is, all certificates, regardless of whether you choose to have an RSA or ECDSA end-entity certificate, will have one intermediate which is directly signed by the ISRG Root X1, which is Let&rsquo;s Encrypt&rsquo;s most widely trusted root.</p>
<p>The new ECDSA intermediates will also have an alternate chain to <strong>ISRG Root X2: ISRG Root X2 → ECDSA Intermediate → End-Entity Certificate</strong>. This is only applicable to a small number of Subscribers who prefer the smallest TLS handshake possible. To use this ECDSA-only chain, see your ACME client&rsquo;s documentation on how to request alternate chains. There will not be any alternative chains for the RSA intermediates.</p>
<p>It is important to note that there will now be multiple active RSA and two active ECDSA intermediates at the same time. An RSA leaf certificate may be signed by any of the active RSA intermediates (a value from &ldquo;R10&rdquo; to &ldquo;R14&rdquo; in the issuer common name field of your certificate), and an ECDSA leaf certificate may be signed by any of the active ECDSA intermediates (&ldquo;E5&rdquo; through &ldquo;E9&rdquo;). Again, your ACME client should handle this automatically.</p>
<p>A Certificate Authority&rsquo;s intermediate certificates expire every few years and need to be replaced, just like a website&rsquo;s certificate is routinely renewed. Going forward, Let&rsquo;s Encrypt intends to switch what intermediates are in use annually, which will help enhance the overall security of the certificates.</p>
<h2 id="removing-dst-root-ca-x3-cross-sign">Removing DST Root CA X3 Cross-sign</h2>
<p>The new intermediate chains will not include the DST Root CA X3 cross-sign, as previously announced in our post about <a href="https://letsencrypt.org/2023/07/10/cross-sign-expiration.html">Shortening the Let&rsquo;s Encrypt Chain of Trust</a>. By eliminating the cross-sign, we&rsquo;re making our certificates leaner and more efficient, leading to faster page loads for Internet users. We already stopped providing the cross-sign in the default certificate chain on February 8th, 2024, so if your ACME client is not explicitly requesting the chain with DST Root CA X3, this will not be a change for you.</p>
<h2 id="ecdsa-intermediates-as-default-for-ecdsa-certificates">ECDSA Intermediates as Default for ECDSA Certificates</h2>
<p>Currently, ECDSA end-entity certificates are signed by our RSA intermediates unless users opted in via a request form to use our ECDSA intermediates. With our new intermediates, we will begin issuing all ECDSA end-entity certificates from the ECDSA intermediates. The request form and allow-list will no longer be used, <a href="https://community.letsencrypt.org/t/ecdsa-availability-in-production-environment/150679">which we had introduced to make ECDSA intermediates available</a>.</p>
<p>Earlier, the default ECDSA chain included two intermediates: both E1 and the cross-signed ISRG Root X2 (i.e. <strong>ISRG Root X1 → ISRG Root X2 → E1 → End-Entity Certificate</strong>). After the change, it will contain only a single intermediate: the version of one of our new ECDSA intermediates cross-signed by ISRG Root X1 (i.e. <strong>ISRG Root X1 → E5 → End-Entity Certificate</strong>). This ensures that all of our intermediates, both RSA and ECDSA, are signed directly by our most widely-trusted ISRG Root X1.</p>
<p>We expect this change to benefit most users with smaller TLS handshakes. If compatibility problems with ECDSA intermediates arise, we recommend Let&rsquo;s Encrypt users switch to RSA certificates. Android 7.0 is <a href="https://issuetracker.google.com/issues/37122132">known to have a bug preventing it from working with most Elliptic Curve (EC) certificates</a>, including our ECDSA intermediates; however, that version of Android doesn&rsquo;t trust our ISRG Root X1 and thus is already incompatible.</p>
<h2 id="risks-of-pinning-or-hard-coding-intermediates">Risks of Pinning or Hard-Coding Intermediates</h2>
<p><em>We do not recommend pinning or otherwise hard-coding intermediates or roots.</em> Pinning intermediates is especially not advisable as they change often. If you do pin intermediates, make sure you have the complete set of new intermediates (<a href="https://letsencrypt.org/certificates/">available here</a>).</p>
<h2 id="questions">Questions?</h2>
<p>We&rsquo;re grateful for the millions of subscribers who have trusted us to carry out best practices to make the web more secure and privacy-respecting, and rotating intermediates more frequently is one of them. We&rsquo;d also like to thank our great community and the funders whose support makes this work possible. If you have any questions about this transition or any of the other work we do, please ask on our <a href="https://community.letsencrypt.org/">community forum</a>.</p>
<p>We depend on contributions from our supporters in order to provide our services. If your company or organization can help our work by becoming a <a href="https://www.abetterinternet.org/sponsor/">sponsor</a> of Let&rsquo;s Encrypt please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>. We ask that you make an <a href="https://letsencrypt.org/donate/">individual contribution</a> if it is within your means.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2024/04/12/changes-to-issuance-chains.html</guid>
      </item><item>
        <title>New Intermediate Certificates</title>
        <link>https://letsencrypt.org/2024/03/19/new-intermediate-certificates.html</link>
        <pubDate>Tue, 19 Mar 2024 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>On Wednesday, March 13, 2024, Let&rsquo;s Encrypt generated 10 new Intermediate CA Key Pairs, and issued 15 new Intermediate CA Certificates containing the new public keys. These new intermediate certificates provide smaller and more efficient certificate chains to Let&rsquo;s Encrypt Subscribers, enhancing the overall online experience in terms of speed, security, and accessibility.</p>
<p>First, a bit of history. In September, 2020, Let&rsquo;s Encrypt issued a <a href="https://letsencrypt.org/2020/09/17/new-root-and-intermediates">new root and collection of intermediate certificates</a>. Those certificates helped us improve the privacy and efficiency of Web security by making ECDSA end-entity certificates widely available. However, those intermediates are approaching their expiration dates, so it is time to replace them.</p>
<p>Our new batch of intermediates are very similar to the ones we issued in 2020, with a few small changes. We&rsquo;re going to go over what those changes are and why we made them.</p>
<h2 id="the-new-certificates">The New Certificates</h2>
<p>We created 5 new 2048-bit RSA intermediate certificates named in sequence from R10 through R14. These are issued by ISRG Root X1. You can think of them as direct replacements for our existing R3 and R4 intermediates.</p>
<p>We also created 5 new P-384 ECDSA intermediate certificates named in sequence from E5 through E9. Each of these is represented by two certificates: one issued by ISRG Root X2 (exactly like our existing E1 and E2), and one issued (or cross-signed) by ISRG Root X1.</p>
<p>You can see details of all of the certificates on our <a href="https://letsencrypt.org/certificates/">updated hierarchy page</a>.</p>
<p><img src="/images/blog/ChainofTrust2024CeremonyBlogPost.png" alt="Let’s Encrypt 2024 Ceremony"></p>
<h2 id="rotating-issuance">Rotating Issuance</h2>
<p>Rotating the set of intermediates we issue from helps keep the Internet agile and more secure. It encourages automation and efficiency, and discourages outdated practices like key pinning. &ldquo;Key Pinning&rdquo; is a practice in which clients &mdash; either ACME clients getting certificates for their site, or apps connecting to their own backend servers &mdash; decide to trust only a single issuing intermediate certificate rather than delegating trust to the system trust store. Updating pinned keys is a manual process, which leads to an increased risk of errors and potential business continuity failures.</p>
<p>Intermediates usually change only every five years, so this joint is exercised infrequently and client software keeps making the same mistakes. Shortening the lifetime from five years to three years means we will be conducting another ceremony in just two years, ahead of the expiration date on these recently created certificates. This ensures we exercise the joint more frequently than in the past.</p>
<p>We also issued <em>more</em> intermediates this time around. Historically, we&rsquo;ve had two of each key type (RSA and ECDSA): one for active issuance, and one held as a backup for emergencies. Moving forward we will have five: two conducting active issuance, two waiting in the wings to be introduced in about one year, and one for emergency backup. Randomizing the selected issuer for a given key type means it will be impossible to predict which intermediate a certificate will be issued from. We are very hopeful that these steps will prevent intermediate key pinning altogether, and help the WebPKI remain agile moving forward.</p>
<p>These shorter intermediate lifetimes and randomized intermediate issuance shouldn&rsquo;t impact the online experience of the general Internet user. Subscribers may be impacted if they are pinning one of our intermediates, though this should be incredibly rare.</p>
<h2 id="providing-smaller-chains">Providing Smaller Chains</h2>
<p>When we issued ISRG Root X2 in 2020, we decided to cross-sign it from ISRG Root X1 so that it would be trusted even by systems that didn&rsquo;t yet have ISRG Root X2 in their trust store. This meant that Subscribers who wanted issuance from our ECDSA intermediates would have a choice: they could either have a very short, ECDSA-only, but low-compatibility chain terminating at ISRG Root X2, or they could have a longer, high-compatibility chain terminating at ISRG Root X1. At the time, this tradeoff (TLS handshake size vs compatibility) seemed like a reasonable choice to provide, and we provided the high-compatibility chain by default to support the largest number of configurations.</p>
<p>ISRG Root X2 is now trusted by most platforms, and we can now offer an improved version of the same choice. The same very short, ECDSA-only chain will still be available for Subscribers who want to optimize their TLS handshakes at the cost of some compatibility. But the high-compatibility chain will be drastically improving: instead of containing two intermediates (both E1 and the cross-signed ISRG Root X2), it will now contain only a single intermediate: the version of one of our new ECDSA intermediates cross-signed by ISRG Root X1.</p>
<p>This reduces the size of our default ECDSA chain by about a third, and is an important step towards removing our <a href="https://docs.google.com/forms/d/e/1FAIpQLScCWnApP2eUk4cA6y5cFOENlm5S2StVedrqYNzeNdTPoArzwA/viewform">ECDSA allow-list</a>.</p>
<h2 id="other-minor-changes">Other Minor Changes</h2>
<p>We&rsquo;ve made two other tiny changes that are worth mentioning, but will have no impact on how Subscribers and clients use our certificates:</p>
<ul>
<li>
<p>We&rsquo;ve changed how the Subject Key ID field is calculated, from a SHA-1 hash of the public key, to a <a href="https://datatracker.ietf.org/doc/html/rfc7093#section-2">truncated SHA-256 hash</a> of the same data. Although this use of SHA-1 was not cryptographically relevant, it is still nice to remove one more usage of that <a href="https://shattered.io/">broken algorithm</a>, helping move towards a world where cryptography libraries don&rsquo;t need to include SHA-1 support at all.</p>
</li>
<li>
<p>We have removed our CPS OID from the Certificate Policies extension. This saves a few bytes in the certificate, which can add up to a lot of bandwidth saved over the course of billions of TLS handshakes.</p>
</li>
</ul>
<p>Both of these mirror two <a href="https://community.letsencrypt.org/t/enabling-sha256-subject-key-identifiers-for-end-entity-certificates/211453/4">identical</a> <a href="https://community.letsencrypt.org/t/small-change-to-end-entity-certificates-cps-url-and-oid-will-not-be-included-from-june-15/198206/5">changes</a> that we made for our Subscriber Certificates in the past year.</p>
<h2 id="deployment">Deployment</h2>
<p>We intend to put two of each of the new RSA and ECDSA keys into rotation in the next few months. Two of each will be ready to swap in at a future date, and one of each will be held in reserve in case of an emergency. Read more about the strategy in our December 2023 post on the <a href="https://community.letsencrypt.org/t/lets-encrypt-new-intermediate-certificates/209498">Community Forum</a>.</p>
<p>Not familiar with the forum? It&rsquo;s where Let&rsquo;s Encrypt publishes updates on our <a href="https://community.letsencrypt.org/c/issuance-tech-questions/12">Issuance Tech</a> and <a href="https://community.letsencrypt.org/c/api-announcements/18">APIs</a>. It&rsquo;s also where you can go for troubleshooting help from community experts and Let&rsquo;s Encrypt staff. <a href="https://community.letsencrypt.org/">Check it out</a> and subscribe to alerts for technical updates.</p>
<p>We hope that this has been an interesting and informative tour around our new intermediates, and we look forward to continuing to improve the Internet, one certificate at a time.</p>
<p>We depend on contributions from our community of users and supporters in order to provide our services. If your company or organization would like to <a href="https://www.abetterinternet.org/sponsor/">sponsor</a> Let&rsquo;s Encrypt please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>. We ask that you make an <a href="https://letsencrypt.org/donate/">individual contribution</a> if it is within your means.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2024/03/19/new-intermediate-certificates.html</guid>
      </item><item>
        <title>Introducing Sunlight, a CT implementation built for scalability, ease of operation, and reduced cost</title>
        <link>https://letsencrypt.org/2024/03/14/introducing-sunlight.html</link>
        <pubDate>Thu, 14 Mar 2024 00:00:00 +0000</pubDate>
        <description><![CDATA[<div class="card border-0 pic-quote-right">
    <img alt="Logo for Sunlight" class="mx-auto img-fluid" src="/images/blog/sunlight_logo_main.png" />
</div>
<p>Let&rsquo;s Encrypt is proud to introduce Sunlight, a new implementation of a Certificate Transparency log that we built from the ground up with modern Web PKI opportunities and constraints in mind. In partnership with <a href="https://filippo.io/">Filippo Valsorda</a>, who led the design and implementation, we incorporated feedback from the broader transparency logging community, including the Chrome and TrustFabric teams at Google, the Sigsum project, and other CT log and monitor operators. Their insights have been instrumental in shaping the project&rsquo;s direction.</p>
<p>CT plays an important role in the Web PKI, enhancing the ability to monitor and research certificate issuance. The operation of a CT log, however, faces growing challenges with the increasing volume of certificates. For instance, Let&rsquo;s Encrypt issues over four million certificates daily, each of which must be logged in two separate CT logs. Our well-established &ldquo;Oak&rdquo; log currently holds over 700 million entries, reflecting the significant scale of these challenges.</p>
<p>In this post, we&rsquo;ll explore the motivation behind Sunlight and how its design aims to improve the robustness and diversity of the CT ecosystem, while also improving the reliability and performance of Let&rsquo;s Encrypt&rsquo;s logs.</p>
<h2 id="bottlenecks-from-the-database">Bottlenecks from the Database</h2>
<p>Let&rsquo;s Encrypt has been <a href="https://letsencrypt.org/docs/ct-logs/">running public CT logs</a> since 2019, and we&rsquo;ve gotten a lot of operational experience with running them, but it hasn&rsquo;t been trouble-free. The biggest challenge in the architecture we&rsquo;ve deployed for our &ldquo;Oak&rdquo; log is that the data is stored in a relational database. We&rsquo;ve <a href="https://letsencrypt.org/2022/05/19/nurturing-ct-log-growth">scaled that up</a> by splitting each year&rsquo;s worth of data into a &ldquo;shard&rdquo; with its own database, and then later shrinking the shards to cover six months instead of a full year.</p>
<p>The approach of splitting into more and more databases is not something we want to continue doing forever, as the operational burden and costs increase. The current storage size of a CT log shard is between 5 and 10 terabytes. That&rsquo;s big enough to be concerning for a single database: We previously had a test log fail when we ran into a <a href="https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.KnownIssuesAndLimitations.html#MySQL.Concepts.Limits.FileSize">16TiB limit</a> in MySQL.</p>
<p>Scaling read capacity up requires large database instances with fast disks and lots of RAM, which are not cheap. We&rsquo;ve had numerous instances of CT logs becoming overloaded by clients attempting to read all the data in the log, overloading the database in the process. When rate limits are imposed to prevent overloading, clients are forced to slowly crawl the API, diminishing CT&rsquo;s efficiency as a fast mechanism for detecting mis-issued certificates.</p>
<h2 id="serving-tiles">Serving Tiles</h2>
<p>Initially, Let&rsquo;s Encrypt only planned on building a new CT log implementation. However, our discussions with Filippo made us realize that other transparency systems had improved on the original Certificate Transparency design, and we could make our logs even more robust and scalable by changing the read path APIs. In particular, the <a href="https://golang.org/design/25530-sumdb">Go Checksum Database</a> is inspired by Certificate Transparency, but uses a more efficient format for publishing its data as a series of easily stored and cached tiles.</p>
<p>Certificate Transparency logs are a binary tree, with every node containing a hash of its two children. The &ldquo;leaf&rdquo; level contains the actual entries of the log: the certificates, appended to the right side of the tree. The top of the tree is digitally signed. This forms a cryptographically verifiable structure called a Merkle Tree, which can be used to check if a certificate is in the tree, and that the tree is append-only.</p>
<p>Sunlight tiles are files containing 256 elements each, either hashes at a certain tree &ldquo;height&rdquo; or certificates (or pre-certificates) at the leaf level. Russ Cox has a great explanation <a href="https://research.swtch.com/tlog#tiling_a_log">of how tiles work on his blog</a>, or you can read <a href="https://c2sp.org/sunlight#merkle-tree">the relevant section of the Sunlight specification</a>. Even Trillian, the current implementation of CT we run, <a href="https://github.com/google/trillian/blob/master/docs/storage/storage.md">uses a subtree system</a> similar to these tiles as its internal storage.</p>
<p>Unlike the dynamic endpoints in previous CT APIs, serving a tree as tiles doesn&rsquo;t require any dynamic computation or request processing, so we can eliminate the need for API servers. Because the tiles are static, they&rsquo;re efficiently cached, in contrast with CT APIs like get-proof-by-hash which have a different response for every certificate, so there&rsquo;s no shared cache. The leaf tiles can also be stored compressed, saving even more storage!</p>
<p>The idea of exposing the log as a series of static tiles is motivated by our desire to scale out the read path horizontally and relatively inexpensively. We can directly expose tiles in cloud object storage like S3, use a caching CDN, or use a webserver and a filesystem.</p>
<p>Object or file storage is readily available, can scale up easily, and costs significantly less than databases from cloud providers. It seemed like the obvious path forward. In fact, <a href="https://github.com/letsencrypt/ctile">we already have an S3-backed cache</a> in front of our existing CT logs, which means we are currently storing our data twice.</p>
<h2 id="running-more-logs">Running More Logs</h2>
<p>The tiles API improves the read path, but we also wanted to simplify our architecture on the write path. With Trillian, we run a collection of nodes along with etcd for leader election to choose which will handle writing. This is somewhat complex, and we believe the CT ecosystem allows a different tradeoff.</p>
<p>The key realization is that Certificate Transparency is already a distributed system, with clients submitting certificates to multiple logs, and gracefully failing over from any unavailable ones to the others. Each individual log&rsquo;s write path doesn&rsquo;t require a highly available leader election system. A simple single-node writer can meet the 99% Service Level Objective required by <a href="https://googlechrome.github.io/CertificateTransparency/log_policy.html">CT log</a> <a href="https://support.apple.com/en-us/103703">programs</a>.</p>
<p>The single-node Sunlight architecture lets us run multiple independent logs with the same amount of computing power. This increases the system&rsquo;s overall robustness, even if each individual log has lower potential uptime. No more leader election needed. We use a simple compare-and-swap mechanism to store checkpoints and prevent accidentally running two instances at once, which could result in a forked tree, but that has much less overhead than leader election.</p>
<h2 id="no-more-merge-delay">No More Merge Delay</h2>
<p>One of the goals of CT was to have limited latency for submission to the logs. A design feature called Merge Delay was added to support that. When submitting a certificate to a log, the log can return a Signed Certificate Timestamp (SCT) immediately, with a promise to include it in the log within the log&rsquo;s Maximum Merge Delay, conventionally 24 hours. While this seems like a good tradeoff to not slow down issuance, there have been multiple incidents and near-misses where a log stops operating with unmerged certificates, missing its maximum merge delay, and breaking that promise.</p>
<p>Sunlight takes a different approach, holding submissions while it batches and integrates certificates in the log, eliminating the merge delay. While this leads to a small latency increase, we think it&rsquo;s worthwhile to avoid one of the more common CT log failure cases.</p>
<p>It also lets us embed the final leaf index in an extension of our SCTs, bringing CT a step closer to direct client verification of Merkle tree proofs. The extension also makes it possible for clients to fetch the proof of log inclusion from the new static tile-based APIs, without requiring server-side lookup tables or databases.</p>
<h2 id="a-sunny-future">A Sunny Future</h2>
<p>Today&rsquo;s announcement of Sunlight is just the beginning. We&rsquo;ve released <a href="https://github.com/FiloSottile/sunlight">software</a> and a <a href="https://c2sp.org/sunlight">specification</a> for Sunlight, and have Sunlight CT logs running. Head to <a href="https://sunlight.dev">sunlight.dev</a> to find resources to get started. We encourage CAs to start test submitting to <a href="https://letsencrypt.org/docs/ct-logs/#Sunlight">Let&rsquo;s Encrypt&rsquo;s new Sunlight CT logs</a>, for CT Monitors and Auditors to add support for consuming Sunlight logs, and for the CT programs to consider trusting logs running on this new architecture. We hope Sunlight logs will be made usable for SCTs by the CT programs run by the browsers in the future, allowing CAs to rely on them to meet the browser CT logging requirements.</p>
<p>We&rsquo;ve gotten positive feedback so far, with comments such as &ldquo;Google&rsquo;s TrustFabric team, maintainers of Trillian, are supportive of this direction and the Sunlight spec. We have been working towards the same goal of cacheable tile-based logs for other ecosystems with <a href="https://github.com/transparency-dev/serverless-log">serverless tooling</a>, and will be folding this into Trillian and ctfe, along with adding support for the Sunlight API.&rdquo;</p>
<p>If you have feedback on the design, please join in the conversation on the <a href="https://groups.google.com/a/chromium.org/g/ct-policy">ct-policy mailing list</a>, or in the #sunlight channel on the <a href="https://transparency.dev/slack/">transparency-dev Slack</a>.</p>
<p>We&rsquo;d like to thank Chrome for supporting the development of Sunlight, and Amazon Web Services for their ongoing support for our CT log operation. If your organization monitors or values CT, please consider a financial gift of support. Learn more at <a href="https://www.abetterinternet.org/sponsor/">https://www.abetterinternet.org/sponsor/</a> or contact us at: <a href="mailto:sponsor@abetterinternet.org">sponsor@abetterinternet.org</a>.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2024/03/14/introducing-sunlight.html</guid>
      </item><item>
        <title>A Year-End Letter from our Vice President</title>
        <link>https://letsencrypt.org/2023/12/28/eoy-letter-2023.html</link>
        <pubDate>Thu, 28 Dec 2023 00:00:00 +0000</pubDate>
        <description><![CDATA[<div class="card border-0 pic-quote-right">
    <img alt="Sarah Gran" class="mx-auto img-fluid" src="/images/blog/Sarah-Gran-Headshot.jpg" />
</div>
<p><em>This letter was originally published in our <a href="https://www.abetterinternet.org/documents/2023-ISRG-Annual-Report.pdf">2023 Annual Report</a>.</em></p>
<p>We typically open our annual report with a letter from our Executive Director and co-founder, Josh Aas, but he&rsquo;s on parental leave so I&rsquo;ll be filling in. I&rsquo;ve run the Brand &amp; Donor Development team at ISRG since 2016, so I&rsquo;ve had the pleasure of watching our work mature, our impact grow, and I&rsquo;ve had the opportunity to get to know many great people who care deeply about security and privacy on the Internet.</p>
<p>One of the biggest observations I&rsquo;ve made during Josh&rsquo;s absence is that all 23 people who work at ISRG fall into that class of folks. Of course I was a bit nervous as Josh embarked on his leave to discover just how many balls he has been keeping in the air for the last decade. Answer: it&rsquo;s a lot. But the roster of staff that we&rsquo;ve built up made it pretty seamless for us to keep moving forward.</p>
<p><a href="http://letsencrypt.org">Let&rsquo;s Encrypt</a> is supporting 40 million more websites than a year ago, bringing the total to over <a href="http://letsencrypt.org/stats">360 million</a>. The engineering team has grown to 12 people who are responsible for our continued reliability and ability to scale. But they&rsquo;re not maintaining the status quo. Let&rsquo;s Encrypt engineers are pushing forward our expectations for ourselves and for the WebPKI community. We&rsquo;ve added shorter-lived certificates to our 2024 roadmap. We&rsquo;re committing to this work because sub-10 day certificates significantly reduce the impact of key compromise and it broadens the universe of people who can use our certs. In addition, the team started an ambitious project to develop a new Certificate Transparency implementation because the only existing option cannot scale for the future and is prone to operational fragility. These projects are led by two excellent technical leads, Aaron Gable and James Renken, who balance our ambition with our desire for a good quality of life for our teams.</p>
<p><a href="http://memorysafety.org">Prossimo</a> continues to deliver highly performant and memory safe software and components in a world that is increasingly eager to address the memory safety problem. This was evidenced by participation at <a href="https://tectonics.memorysafety.org/">Tectonics</a>, a gathering we hosted which drew industry leaders for <a href="https://www.memorysafety.org/blog/tectonics-recap/">invigorated conversation</a>. Meanwhile, initiatives like our <a href="https://www.memorysafety.org/initiative/av1/">memory safe AV1 decoder</a> are in line to replace a C version in Google Chrome. This change would improve security for billions of people. We&rsquo;re grateful to the community that helps to guide and implement our efforts in this area, including Dirkjan Ochtman, the firms Tweede golf and Ferrous Systems, and the maintainers of the many projects we are involved with.</p>
<p>Our newest project, <a href="http://divviup.org">Divvi Up</a>, brought on our first two subscribers in 2023. <a href="https://wearehorizontal.org/index">Horizontal</a>, a small international nonprofit serving Human Rights Defenders, will be <a href="https://divviup.org/blog/horizontal/">collecting privacy-preserving telemetry metrics</a> about the users of their Tella app, which people use to document human rights violations. Mozilla is using Divvi Up to <a href="https://divviup.org/blog/divvi-up-in-firefox/">gain insight into aspects of user behavior</a> in the <a href="https://www.mozilla.org/en-US/firefox/new/">Firefox </a>browser. It took a combination of focus and determination to get us to a production-ready state and our technical lead, Brandon Pitman played a big role in getting us there.</p>
<p>We hired Kristin Berdan to fill a new role as General Counsel and her impact is already apparent within our organization. She joins Sarah Heil, our CFO, Josh, and me in ISRG leadership.</p>
<p>Collectively, we operate three impactful and growing projects for $7 million a year. This is possible because of the amazing leadership assembled across our teams and the ongoing commitment from our community to validate the usefulness of our work. As we look toward 2024 and the challenges and opportunities that face us, I ask that you join us in building a more secure and privacy respecting Internet by sponsoring us, making a donation or gift through your DAF, or sharing with the folks you know why security and privacy matter to them.</p>
<div class="post-footer">
<h6><span>Support Our Work</span></h6>
<p>ISRG is a 501(c)(3) nonprofit organization that is 100% supported through the generosity of those who share our vision for ubiquitous, open Internet security. If you&rsquo;d like to support our work, please consider <a href="https://www.abetterinternet.org/getinvolved/">getting involved</a>, <a href="https://www.abetterinternet.org/donate/">donating</a>, or encouraging your company to <a href="https://www.abetterinternet.org/sponsor/">become a sponsor</a>.</p>
</div>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2023/12/28/eoy-letter-2023.html</guid>
      </item><item>
        <title>Our role in supporting the nonprofit ecosystem</title>
        <link>https://letsencrypt.org/2023/12/13/ngos.html</link>
        <pubDate>Wed, 13 Dec 2023 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>For more than ten years, we at the nonprofit <a href="https://www.abetterinternet.org/">Internet Security Research Group (ISRG)</a> have been focused on our mission of building a more secure and privacy-respecting Internet for everyone, everywhere. As we touch on in our <a href="https://www.abetterinternet.org/documents/2023-ISRG-Annual-Report.pdf">2023 Annual Report</a>, we now serve more than 360 million domains with free TLS certificates.</p>
<p>Beyond being a big number, what does that signify? What&rsquo;s the importance of having TLS being widely adopted anyways? We&rsquo;ll take a closer look at these questions through the lens of one group of Subscribers we can relate to particularly well: nonprofits.</p>
<h2 id="serving-org-at-internet-scale">Serving .org at Internet scale</h2>
<p>Let&rsquo;s Encrypt serves 57% of all websites using the .org top level domain (TLD), which is commonly used by nonprofits. In the US alone there are 1.8M registered nonprofit organizations. And while the focus of these organizations is varied, all of them rely on the Internet in some capacity.</p>
<p>When a nonprofit uses a TLS certificate on their website, it protects their visitors and stakeholders from snoopers, MITM attacks, and surveillance. Without TLS, nonprofits&rsquo; content could be changed without their knowledge or their visitors&rsquo; private information could be compromised. Access to free and automated TLS via Let&rsquo;s Encrypt means these nonprofits face as few barriers as possible to adopting TLS.</p>
<p>In short, something as fundamental as security and privacy should be as easy to access as possible. For nonprofits both large and small, Let&rsquo;s Encrypt makes it easy to provide security and privacy for users of their websites, enabling them to remain focused on their missions.</p>
<h2 id="zooming-in-on-three-nonprofits-we-serve">Zooming in on three nonprofits we serve</h2>
<p>The <a href="https://www.aclu.org/">American Civil Liberties Union (ACLU)</a> uses Let&rsquo;s Encrypt as it works to realize its focus of being a &ldquo;guardian of liberty&rdquo; for US citizens. Using Let&rsquo;s Encrypt protects ACLU&rsquo;s constituents when they&rsquo;re trying to know their rights or take action. With more than 4 million page views per month, ACLU&rsquo;s website is a critical part of their mission.</p>
<p><a href="https://www.hrw.org/">Human Rights Watch (HRW)</a> is an international nonprofit organization. With more than 500 individuals on staff around the world, HRW&rsquo;s website is a trove of information empowering individuals and organizations alike to be informed and take action with a global perspective. <a href="https://pro.similarweb.com/#/digitalsuite/websiteanalysis/overview/website-performance/*/999/3m?webSource=Total&amp;key=hrw.org">Nearly 70% of HRW&rsquo;s web traffic</a> comes from people outside of the United States; that&rsquo;s millions of page views per month secured by Let&rsquo;s Encrypt&mdash;and by extension, millions of people around the world benefitting from a more secure and privacy-respecting Web.</p>
<p>The <a href="https://cdt.org/">Center for Democracy &amp; Technology (CDT)</a> uses Let&rsquo;s Encrypt to advance its mission to promote democratic values by shaping technology policy and architecture, with a focus on the rights of the individual. The CDT website offers updated and insightful information into the ways policy and innovation impact the digital space. Without a TLS certificate, the content of these pages could be intercepted and changed. What&rsquo;s more, for those looking to financially support CDT, using TLS on their donation page encrypts the transaction protecting user details such as credit card and other personal information. Mallory Knodel, CTO at CDT and longtime digital rights defender and advocate commented, &ldquo;Billions of people in over 60 countries access the internet with less censorship and surveillance because Let&rsquo;s Encrypt hastened the adoption of web security measures by making certificates easy to obtain.&rdquo;</p>
<h2 id="serving-philanthropic-foundations">Serving philanthropic foundations</h2>
<p>In the United States, the work of nonprofits is made possible in large part through philanthropic foundations and organizations. When it comes to philanthropy&rsquo;s web presence, Let&rsquo;s Encrypt is there, too.</p>
<p>We provide TLS to billion dollar philanthropic organizations like the Hewlett Foundation, the <a href="https://www.siliconvalleycf.org/">Silicon Valley Community Foundation</a>, <a href="https://yieldgiving.com/">Yield Giving</a>, and many others. Taking a look at the top 50 philanthropic organizations around the world, Let&rsquo;s Encrypt serves 36% of them. For large philanthropies, their website is the primary tool they have to communicate their focus areas for future funding as well as the impact they&rsquo;ve made with past giving.</p>
<p>One of the leading philanthropists in the US, Craig Newmark, uses Let&rsquo;s Encrypt and Digital Ocean for his website, <a href="https://craignewmarkphilanthropies.org/">craig newmark philanthropies</a>. Commenting on our work, Craig recently shared, &ldquo;The people at ISRG have been helping protect the Internet for over ten years, and continue to protect us all. They&rsquo;re a necessary part of Cyber Civil Defense and national security.&rdquo;</p>
<p>Overall, while Let&rsquo;s Encrypt aims to build a better Internet, we&rsquo;re particularly proud that our impact protects those seeking to build a better world.</p>
<p><a href="https://abetterinternet.org/">Internet Security Research Group (ISRG)</a> is the parent organization of <a href="http://memorysafety.org/">Prossimo</a>, <a href="http://letsencrypt.org/">Let&rsquo;s Encrypt</a>, and <a href="http://divviup.org/">Divvi Up</a>. ISRG is a 501(c)(3) nonprofit. If you&rsquo;d like to support our work, please consider <a href="https://www.abetterinternet.org/getinvolved/">getting involved</a>, <a href="https://www.abetterinternet.org/donate/">donating</a>, or encouraging your company to <a href="https://www.abetterinternet.org/sponsor/">become a sponsor</a>.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2023/12/13/ngos.html</guid>
      </item><item>
        <title>Increase your security governance with CAA</title>
        <link>https://letsencrypt.org/2023/09/07/caa23.html</link>
        <pubDate>Thu, 07 Sep 2023 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>According to <a href="https://ct.cloudflare.com/">Cloudflare&rsquo;s Merkle Town</a>, 257,036 certificates are issued every hour. We at Let&rsquo;s Encrypt are issuing close to 70% of those certs. Being a Certificate Authority that operates as a nonprofit for the public&rsquo;s benefit means we are constantly considering how we can improve our Subscribers&rsquo; experience and security. One simple innovation to do just that is by using <a href="https://letsencrypt.org/docs/caa/">CAA (Certificate Authority Authorization)</a>, and two CAA extensions for Account and Method Binding.</p>
<h2 id="what-is-caa">What is CAA?</h2>
<p>CAA is a type of DNS record that allows site owners to specify which Certificate Authorities are allowed to issue certificates containing their domain names. Using CAA is a proactive way to ensure that your domain(s) and subdomain(s) are under your control&mdash;you&rsquo;re able to add a layer of security to your DNS governance. (By contrast, Certificate Transparency (CT) logs are a reactive way to monitor your DNS governance&mdash;by publicly publishing certificates issued to domains, Subscribers can verify that their domain(s) are using the intended CA(s).)</p>
<div class="sixty-percentage-wide-image text-center">
<img alt="How to create a CAA Record"
     src="/images/2023.09.07.caa-illustration.png"
     />
</div>
<p>We think CAA is important for every Subscriber, but it&rsquo;s all the more important if you&rsquo;re handling TLS at scale. This is particularly true if a team or multiple teams have access to your integration.</p>
<p>Account and Method Binding is another layer of CAA that can improve your security even further. Method binding allows Subscribers to limit the sets of domain control validation methods&mdash;DNS-01, HTTP-01, or TLS-ALPN-01&mdash; which can be used to demonstrate control over their domain. Account binding allows a Subscriber to limit issuance to a specific ACME account. For further technical details, review our <a href="https://community.letsencrypt.org/t/enabling-acme-caa-account-and-method-binding/189588">community post</a> or take a look at <a href="https://www.rfc-editor.org/rfc/rfc8657">RFC 8657</a>.</p>
<h2 id="caa-adoption">CAA Adoption</h2>
<p><a href="https://www.famedly.com/">Famedly</a>, a German healthcare company, set up CAA as part of updating their overall ACME setup. In hearing more about why they chose to turn on CAA now, the answer was simple: because it was easy to do and low hanging fruit to enhance their security.</p>
<p>&ldquo;The biggest benefit of using CAA along with account and method binding is closing the DV loophole,&rdquo; said Jan Christian Grünhage, Famedly&rsquo;s Head of Infrastructure. &ldquo;By using DNSSEC with DNS-01 challenges, we&rsquo;ve got cryptographic signatures all the way through the stack.&rdquo;</p>
<p>The team at Famedly set up CAA over the course of a few days. &ldquo;The larger project was to transition our issuance to a single ACME account ID, so adopting CAA as part of that work only added marginal effort,&rdquo; remarked Jan. &ldquo;The added security benefit was absolutely worth the effort.&rdquo;</p>
<h2 id="getting-started-with-caa">Getting started with CAA</h2>
<p>If you manage TLS at scale, consider adopting CAA and Account and Method Binding. To get started, review our <a href="https://letsencrypt.org/docs/caa/">documentation</a>, <a href="https://datatracker.ietf.org/doc/html/rfc8659">RFC 8659</a> and <a href="https://datatracker.ietf.org/doc/html/rfc8657">RFC 8657</a>, and check out the <a href="https://community.letsencrypt.org/search?q=CAA%20Account%20and%20Method%20Binding">community forum</a> for more from Subscribers who&rsquo;ve set up or are using CAA.</p>
<p>As with anything with DNS, there are some potential hiccups to avoid. The most important to highlight is that CAA will always respect the CAA record closest to the domain name it is issuing a certificate for. For more on this, check out <a href="https://letsencrypt.org/docs/caa/#:~:text=Note%20that%20the%20CA%20will%20always%20respect%20the%20CAA%20record%20closest%20to%20the%20domain%20name%20it%20is%20issuing%20a%20certificate%20for.">this section of the CAA documentation</a>. You&rsquo;ll also want to ensure that your <a href="https://sslmate.com/caa/support">DNS provider supports setting CAA records</a>.</p>
<h2 id="thanks-to-famedly">Thanks to Famedly</h2>
<p>We&rsquo;re grateful for <a href="https://www.famedly.com/">Famedly</a> taking the time to share with us more about their experience in setting up CAA. What&rsquo;s more, Famedly financially supported ISRG this year as part of our <a href="https://www.abetterinternet.org/tenth-anniversary/">tenth anniversary campaign</a>.</p>
<p>As a project of the <a href="https://abetterinternet.org">Internet Security Research Group (ISRG)</a>, 100% of the funding for Let&rsquo;s Encrypt comes from contributions from our community of users and supporters. We depend on their support in order to provide our public benefit services. If your company or organization would like to <a href="https://www.abetterinternet.org/sponsor/">sponsor</a> Let&rsquo;s Encrypt, please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>. If you or your organization can support us with a <a href="https://letsencrypt.org/donate/">donation</a> of any size, we ask that you consider a contribution.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2023/09/07/caa23.html</guid>
      </item><item>
        <title>Shortening the Let&#39;s Encrypt Chain of Trust</title>
        <link>https://letsencrypt.org/2023/07/10/cross-sign-expiration.html</link>
        <pubDate>Mon, 10 Jul 2023 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>When Let&rsquo;s Encrypt first launched, we needed to ensure that our certificates were widely trusted. To that end, we arranged to have our intermediate certificates <a href="https://letsencrypt.org/2015/10/19/lets-encrypt-is-trusted.html">cross-signed by IdenTrust&rsquo;s DST Root CA X3</a>. This meant that all certificates issued by those intermediates would be trusted, even while our own ISRG Root X1 wasn&rsquo;t yet. During subsequent years, our Root X1 became <a href="https://letsencrypt.org/docs/certificate-compatibility/">widely trusted</a> on its own. </p>
<p>Come late 2021, our cross-signed intermediates and DST Root CA X3 itself were expiring. And while all up-to-date browsers at that time trusted our root, <a href="https://letsencrypt.org/2020/11/06/own-two-feet.html">over a third of Android devices</a> were still running old versions of the OS which would suddenly stop trusting websites using our certificates. That breakage would have been too widespread, so we arranged for a new cross-sign &ndash; this time <a href="https://letsencrypt.org/2020/12/21/extending-android-compatibility.html">directly onto our root</a> rather than our intermediates &ndash; which would outlive DST Root CA X3 itself. This stopgap allowed those old Android devices to continue trusting our certificates for three more years.</p>
<p>On September 30th, 2024, that cross-sign too will expire.</p>
<p>In the last three years, the percentage of Android devices which trust our ISRG Root X1 has risen from 66% to 93.9%. That percentage will increase further over the next year, especially as Android releases version 14, which has the ability to <a href="https://www.xda-developers.com/android-14-root-certificates-updatable">update its trust store without a full OS update</a>. In addition, dropping the cross-sign will reduce the number of certificate bytes sent in a TLS handshake by over 40%. Finally, it will significantly reduce our operating costs, allowing us to focus our funding on continuing to improve your privacy and security.</p>
<p>For these reasons, we will not be getting a new cross-sign to extend compatibility any further.</p>
<p>The transition will roll out as follows:</p>
<ul>
<li>
<p>On <strong>Thursday, Feb 8th, 2024</strong>, we stopped providing the cross-sign by default in requests made to our /acme/certificate API endpoint. For most Subscribers, this means that your ACME client will configure a chain which terminates at ISRG Root X1, and your webserver will begin providing this shorter chain in all TLS handshakes. The longer chain, terminating at the soon-to-expire cross-sign, will still be available as an alternate chain which you can configure your client to request.</p>
</li>
<li>
<p>On <strong>Thursday, June 6th, 2024</strong>, we will stop providing the longer cross-signed chain entirely. This is just over <a href="https://letsencrypt.org/2015/11/09/why-90-days.html">90 days</a> (the lifetime of one certificate) before the cross-sign expires, and we need to make sure subscribers have had at least one full issuance cycle to migrate off of the cross-signed chain.</p>
</li>
<li>
<p>On <strong>Monday, September 30th, 2024</strong>, the cross-signed certificate will expire. This should be a non-event for most people, as any client breakages should have occurred over the preceding six months.</p>
</li>
</ul>
<div class="howitworks-figure">
<img alt="Infographic of the distribution of installed Android versions, showing that 93.9% of the population is running Android 7.1 or above."
     src="/images/2023.07.10-android-version-distribution.png"
     class="w-1/2"/>
</div>
<p><strong>If you use Android 7.0 or earlier</strong>, you may need to take action to ensure you can still access websites secured by Let&rsquo;s Encrypt certificates. We recommend installing and using <a href="https://www.mozilla.org/en-US/firefox/browsers/mobile/android/">Firefox Mobile</a>, which uses its own trust store instead of the Android OS trust store, and therefore trusts ISRG Root X1.</p>
<p><strong>If you are a site operator</strong>, you should keep an eye on your website usage statistics and active user-agent strings during Q2 and Q3 of 2024. If you see a sudden drop in visits from Android, it is likely because you have a significant population of users on Android 7.0 or earlier. We encourage you to provide the same advice to them as we provided above.</p>
<p><strong>If you are an ACME client author</strong>, please make sure that your client correctly downloads and installs the certificate chain provided by our API during every certificate issuance, including renewals. Failure modes we have seen in the past include a) never downloading the chain at all and only serving the end-entity certificate; b) never downloading the chain and instead serving a hard-coded chain; and c) only downloading the chain at first issuance and not re-downloading during renewals. Please ensure that your client does not fall into any of these buckets.</p>
<p>We appreciate your understanding and support, both now and in the years to come as we provide safe and secure communication to everyone who uses the web. If you have any questions about this transition or any of the other work we do, please ask on our <a href="https://community.letsencrypt.org">community forum</a>.</p>
<p>We&rsquo;d like to thank IdenTrust for their years of partnership. They played an important role in helping Let&rsquo;s Encrypt get to where we are today and their willingness to arrange a stopgap cross sign in 2021 demonstrated a true commitment to creating a secure Web. </p>
<p>We depend on contributions from our supporters in order to provide our services. If your company or organization can help our work by becoming a <a href="https://www.abetterinternet.org/sponsor/">sponsor</a> of Let&rsquo;s Encrypt please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>. We ask that you make an <a href="https://letsencrypt.org/donate/">individual contribution</a> if it is within your means.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2023/07/10/cross-sign-expiration.html</guid>
      </item><item>
        <title>ISRG’s 10th Anniversary</title>
        <link>https://letsencrypt.org/2023/05/24/isrg-10th-anniversary.html</link>
        <pubDate>Wed, 24 May 2023 00:00:00 +0000</pubDate>
        <description><![CDATA[<div class="card border-0 pic-quote-right">
    <img alt="Celebrating 10 Years of ISRG" class="mx-auto img-fluid" src="/images/blog/2023-05-24-ISRG_10th_anniversary_-_short.gif" />
</div>
<p>It&rsquo;s hard to believe 10 years have passed since Eric Rescorla, Alex Halderman, Peter Eckersley and I founded ISRG as a nonprofit home for public benefit digital infrastructure. We had an ambitious vision, but we couldn&rsquo;t have known then the extent to which that vision would become shared and leveraged by so much of the Internet.</p>
<p>Since its founding in 2013, ISRG&rsquo;s <a href="https://letsencrypt.org/">Let&rsquo;s Encrypt</a> certificate authority has come to serve hundreds of millions of websites and protect just about everyone who uses the Web. Our <a href="https://www.memorysafety.org/">Prossimo</a> project has brought the urgent issue of memory safety to the fore, and <a href="https://divviup.org/">Divvi Up</a> is set to revolutionize the way apps collect metrics while preserving user privacy. I&rsquo;ve tried to comprehend how much data about peoples&rsquo; lives our work has and will protect, and tried even harder to comprehend what that means if one could quantify privacy. It&rsquo;s simply beyond my ability.</p>
<p><a href="https://www.abetterinternet.org/tenth-anniversary/">Some of the highlights</a> from the past ten years include:</p>
<ul>
<li>
<p>May 24, 2013: ISRG is incorporated, intending to build Let&rsquo;s Encrypt</p>
</li>
<li>
<p>November 18, 2014: The Let&rsquo;s Encrypt project is <a href="https://letsencrypt.org/2014/11/18/announcing-lets-encrypt.html">announced publicly</a></p>
</li>
<li>
<p>September 14, 2015: Let&rsquo;s Encrypt <a href="https://letsencrypt.org/2015/09/14/our-first-cert.html">issues its first certificate</a></p>
</li>
<li>
<p>October 19, 2015: Let&rsquo;s Encrypt <a href="https://letsencrypt.org/2015/10/19/lets-encrypt-is-trusted.html">becomes publicly trusted</a></p>
</li>
<li>
<p>December 3, 2015: Let&rsquo;s Encrypt <a href="https://letsencrypt.org/2015/12/03/entering-public-beta.html">becomes generally available</a></p>
</li>
<li>
<p>March 8, 2016: Let&rsquo;s Encrypt <a href="https://letsencrypt.org/2016/03/08/our-millionth-cert.html">issues its millionth certificate</a></p>
</li>
<li>
<p>June 28, 2017: Let&rsquo;s Encrypt <a href="https://letsencrypt.org/2017/06/28/hundred-million-certs.html">issues its 100 millionth certificate</a></p>
</li>
<li>
<p>March 11, 2019: The ACME protocol <a href="https://letsencrypt.org/2019/03/11/acme-protocol-ietf-standard.html">becomes an IETF standard</a></p>
</li>
<li>
<p>February 27, 2020: Let&rsquo;s Encrypt <a href="https://letsencrypt.org/2020/02/27/one-billion-certs.html">issues its billionth certificate</a></p>
</li>
<li>
<p>October 26, 2020: ISRG board approves a privacy preserving metrics project, now Divvi Up</p>
</li>
<li>
<p>December 9, 2020: ISRG board approves a memory safety project, now Prossimo</p>
</li>
<li>
<p>December 18, 2020: Divvi Up starts <a href="https://divviup.org/blog/prio-services-for-covid-en/">servicing COVID exposure notification</a></p>
</li>
<li>
<p>October 3, 2022: Support for Rust is <a href="https://www.memorysafety.org/blog/rust-in-linux-just-the-beginning/">merged into the Linux kernel</a></p>
</li>
</ul>
<p>All this wouldn&rsquo;t be possible without our staff, community, donors, <a href="https://www.abetterinternet.org/sponsors/">funders</a>, and other partners, all of whom I&rsquo;d like to thank wholeheartedly.</p>
<p>I feel so fortunate that we&rsquo;ve been able to thrive. We&rsquo;re fortunate primarily because great people got involved and funders stepped up, but there&rsquo;s also just a bit of good fortune involved in any success story. The world is a complicated place, there is complex context that one can&rsquo;t control around every effort. Despite our best efforts, fortune has a role to play in terms of the degree to which the context swirling around us helps or hinders. We have been fortunate in every sense of the word and for that I am grateful.</p>
<p>Our work is far from over. Each of our three projects has challenges and opportunities ahead.</p>
<p>For Let&rsquo;s Encrypt, which is more critical than ever and relatively mature, our focus over the next few years will be on long-term sustainability. More and more people working with certificates can&rsquo;t recall a time when Let&rsquo;s Encrypt didn&rsquo;t exist, and most people who benefit from our service don&rsquo;t need to know it exists at all (by design!). Let&rsquo;s Encrypt is just part of how the Internet works now, which is great for many reasons, but it also means it&rsquo;s at risk of being taken for granted. We are making sure that doesn&rsquo;t happen so we can keep Let&rsquo;s Encrypt running reliably and make investments in its future.</p>
<p>Prossimo is making a huge amount of progress moving critical software infrastructure to memory safe code, from the <a href="https://www.memorysafety.org/initiative/linux-kernel/">Linux kernel</a> to <a href="https://www.memorysafety.org/initiative/ntp/">NTP</a>, <a href="https://www.memorysafety.org/initiative/rustls">TLS</a>, <a href="https://www.memorysafety.org/initiative/av1/">media codecs</a>, and even <a href="https://www.memorysafety.org/initiative/sudo-su/">sudo/su</a>. We have two major challenges ahead of us here. The first is to raise the money we need to complete development work. The second is to get the safer software we&rsquo;ve been building adopted widely. We feel pretty good about our plans but it&rsquo;s not going to be easy. Things worth doing rarely are.</p>
<p>Divvi Up is exciting technology with a bright future. Our biggest challenge here, like most things involving cryptography, is to make it easy to use. We also need to make sure we can provide the service at a cost that will allow for widespread adoption, so we&rsquo;ll be doing a lot of optimization. Our hope is that over the next decade we can make privacy respecting metrics the norm, just like we did for HTTPS.</p>
<p>The Internet wasn&rsquo;t built with security or privacy in mind, so there is a bountiful opportunity for us to improve its infrastructure. The Internet is also constantly growing and changing, so it is also our job to look into the future and prepare for the next set of threats and challenges as best we can.</p>
<p>Thanks to our supporters, we&rsquo;ll continue adapting and responding to help ensure the Web is more secure long into the future. Please consider <a href="https://www.abetterinternet.org/sponsor/">becoming a sponsor</a> or <a href="https://www.abetterinternet.org/donate/">making a donation</a> in support of our work.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2023/05/24/isrg-10th-anniversary.html</guid>
      </item><item>
        <title>Improving Resiliency and Reliability for Let’s Encrypt with ARI</title>
        <link>https://letsencrypt.org/2023/03/23/improving-resliiency-and-reliability-with-ari.html</link>
        <pubDate>Thu, 23 Mar 2023 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>The Let&rsquo;s Encrypt team is excited to announce that <a href="https://datatracker.ietf.org/doc/rfc9773/">ACME Renewal Information (ARI)</a> is live in production! ARI makes it possible for our subscribers to handle certificate revocation and renewal as easily and automatically as the process of getting a certificate in the first place.</p>
<p>With ARI, Let&rsquo;s Encrypt can signal to ACME clients when they should renew certificates. In the normal case of a certificate with a 90 day lifetime, ARI might signal for renewal at 60 days. If Let&rsquo;s Encrypt needs to revoke a certificate for some reason, ARI can signal that renewal needs to happen prior to the revocation. This means that even in extenuating circumstances, renewal can happen in an entirely automated way without disrupting subscriber services.</p>
<p>Without ARI, an unexpected revocation event might mean that Let&rsquo;s Encrypt would have to send emails to affected subscribers, maybe those emails are read in time to avoid a service disruption, maybe they aren&rsquo;t, and engineers have to manually take action to trigger early renewals, possibly in the middle of the night. We can&rsquo;t wait for ARI to make this scenario a thing of the past.</p>
<p>ARI has a couple of additional benefits for Let&rsquo;s Encrypt and our subscribers. First, we can use ARI to help modulate renewals as needed to avoid load spikes on the Let&rsquo;s Encrypt infrastructure (of course subscribers can still renew whenever they want or need, as ARI is merely a signal or suggestion). Second, ARI can be used to set subscribers up for success in terms of ideal renewal times in the event that Let&rsquo;s Encrypt offers even shorter-lived certificates in the future.</p>
<p>ARI has been <a href="https://datatracker.ietf.org/doc/rfc9773/">standardized</a> in the IETF, a process that started with an <a href="https://mailarchive.ietf.org/arch/msg/acme/b-RddSX8TdGYvO3f9c7Lzg6I2I4/">email</a> from Let&rsquo;s Encrypt engineer Roland Shoemaker in March of 2020. In September of 2021 Let&rsquo;s Encrypt engineer Aaron Gable submitted the first draft to the IETF&rsquo;s ACME working group, and now ARI is in production. The next step is for ACME clients to start supporting ARI, a process we plan to help with as best we can in the coming months.</p>
<p>ARI is a huge step forward for agility and resiliency in the TLS certificate ecosystem and we&rsquo;re excited to see it gain widespread adoption!</p>
<h2 id="supporting-let-s-encrypt">Supporting Let&rsquo;s Encrypt</h2>
<p>As a project of the <a href="https://abetterinternet.org/">Internet Security Research Group</a> (ISRG), 100% of our funding comes from contributions from our community of users and supporters. We depend on their support in order to provide our public benefit services. If your company or organization would like to sponsor Let&rsquo;s Encrypt please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>. If you can support us with a <a href="/donate/">donation</a>, we ask that you make an individual contribution.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2023/03/23/improving-resliiency-and-reliability-with-ari.html</guid>
      </item><item>
        <title>Thank you to our 2023 renewing sponsors</title>
        <link>https://letsencrypt.org/2023/01/19/renewing-sponsors.html</link>
        <pubDate>Thu, 19 Jan 2023 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>At ISRG, we often say, &ldquo;as a nonprofit, 100% of our funding comes from charitable contributions.&rdquo; But what does that actually look like? For nearly a decade, the vast majority of our funding has come from sponsorships&mdash;in fact, more than $17 million dollars has been donated to ISRG since 2015. Looking to the year ahead, we wanted to take a moment to thank our renewing sponsors who, quite literally, make our work possible: </p>
<h2 id="with-us-since-the-beginning">With us since the beginning</h2>
<p>In 2015, the work ISRG set out to do was viewed by many as audacious, if not incredible. Back then, SSL/TLS was used by less than 40% of page loads. Getting a certificate was costly and complicated. Our aim was to make access to SSL certificates easy, free, and automated. That same year nineteen sponsors came on board to help us realize this mission. Today, seventeen of those sponsors and grantmakers have stayed on board every year! Now in their eighth year as a sponsor, Hostpoint has renewed their support for 2023. Their Co-founder and CEO, Markus Gebert, commented: </p>
<blockquote>
<p>&ldquo;We have supported Let&rsquo;s Encrypt since the very beginning. It is very valuable and important that nowadays any website can be equipped with an SSL certificate free of charge.&rdquo;</p></blockquote>
<p>Our thanks to Akamai, Cisco, Mozilla, Google, OVHcloud, Internet Society, Shopify, Hostpoint, SiteGround, Cyon, IdenTrust, Vultr, Automattic, Electronic Frontier Foundation, infomaniak, PlanetHoster, and Discourse for their eight years of support.</p>
<div class="grid-container">
        <div class="text-center home_sponsors">
                <a href="https://www.akamai.com"><img src="/images/sponsors/small/akamai-logo.png" alt="Akamai" width="80" height="48" class="sponsor-logo-small"></a>
                <a href="https://www.cisco.com"><img src="/images/sponsors/small/cisco-logo.png" alt="Cisco" width="80" height="48" class="sponsor-logo-small"></a>
                <a href="https://www.mozilla.org"><img src="/images/sponsors/small/mozilla-logo.png" alt="Mozilla" width="80" height="48" class="sponsor-logo-small"></a>
                <a href="https://www.google.com/chrome"><img src="/images/sponsors/small/chrome-logo.png" alt="Google Chrome" rel="nofollow" width="80" height="48" class="sponsor-logo-small"></a>
                <a href="https://www.ovh.com"><img src="/images/sponsors/small/ovh-logo.png" alt="OVH" width="80" height="48" class="sponsor-logo-small"></a>
                <a href="https://www.internetsociety.org"><img src="/images/sponsors/small/isoc-logo.png" alt="Internet Society" width="80" height="48" class="sponsor-logo-small"></a>
                <a href="https://www.shopify.com"><img src="/images/sponsors/small/shopify-logo.png" alt="shopify" width="80" height="48" class="sponsor-logo-small"></a>
                <a href="https://www.hostpoint.ch"><img src="/images/sponsors/small/hostpoint-logo.png" alt="HostPoint" width="80" height="48" class="sponsor-logo-small"></a>
                <a href="https://www.siteground.com"><img src="/images/sponsors/small/siteground-logo.png" alt="SiteGround" width="80" height="48" class="sponsor-logo-small"></a>
                <a href="https://www.cyon.ch"><img src="/images/sponsors/small/cyon-logo.png" alt="Cyon" width="80" height="48" class="sponsor-logo-small"></a>
                <a href="https://www.identrust.com"><img src="/images/sponsors/small/identrust-logo.png" alt="IdenTrust" width="80" height="48" class="sponsor-logo-small"></a>
                <a href="https://www.vultr.com"><img src="/images/sponsors/small/vultr-logo.png" alt="Vultr" width="80" height="48" class="sponsor-logo-small"></a>
                <a href="https://automattic.com"><img src="/images/sponsors/small/automattic-logo.png" alt="Automattic" width="80" height="48" class="sponsor-logo-small"></a>
                <a href="https://www.eff.org"><img src="/images/sponsors/small/eff-logo.png" alt="Electronic Frontier Foundation" width="80" height="48" class="sponsor-logo-small"></a>
                <a href="https://www.infomaniak.ch"><img src="/images/sponsors/small/infomaniak-logo.png" alt="Infomaniak" width="80" height="48" class="sponsor-logo-small"></a>
                <a href="https://www.planethoster.com"><img src="/images/sponsors/small/planethoster-logo.png" alt="Hébergement web" width="80" height="48" class="sponsor-logo-small"></a>
                <a href="https://www.discourse.org"><img src="/images/sponsors/small/discourse-logo.png" alt="Discourse" width="80" height="48" class="sponsor-logo-small"></a>
        </div>
</div>
<h2 id="committed-to-a-better-internet">Committed to a better Internet</h2>
<p>We know that finding sponsorship dollars is often anything but a straightforward path. That&rsquo;s why we approach sponsorship as an ongoing conversation, not a one-time transactional interaction. As a result, we&rsquo;re proud that each year we see on average 80% of our sponsors renew their support. From large organizations with thousands of staff to one-person shops, our sponsors come in all shapes and sizes&mdash;but all share a common goal of helping to make our work happen. </p>
<p>We are grateful to the 70 sponsors renewing their support for 2023 who combined provide close to 60% of our operating budget. Their continued support means we begin 2023 well on our way towards our fundraising need for the year. Shopify, a sponsor since 2015 has renewed their Gold sponsorship for 2023. Their Founder and CEO, Tobi Lütke, commented:</p>
<blockquote>
<p>&ldquo;Let&rsquo;s Encrypt makes it easy for everyone to do the right thing to secure the Internet. We couldn&rsquo;t be happier to give our support to such a great effort.&rdquo;</p></blockquote>
<p>Together, <a href="/sponsors/">these organizations</a> make the mission of ISRG, and its impact for billions of people around the world, possible. Powered by their support, we look forward to continuing to build a Web that works for everyone, everywhere.</p>
<h2 id="supporting-let-s-encrypt">Supporting Let&rsquo;s Encrypt</h2>
<p>As a project of the <a href="https://abetterinternet.org/">Internet Security Research Group</a> (ISRG), 100% of our funding comes from contributions from our community of users and supporters. We depend on their support in order to provide our public benefit services. If your company or organization would like to sponsor Let&rsquo;s Encrypt please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>. If you can support us with a <a href="https://letsencrypt.org/donate/">donation</a>, we ask that you make an individual contribution.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2023/01/19/renewing-sponsors.html</guid>
      </item><item>
        <title>A Look into the Engineering Culture at ISRG</title>
        <link>https://letsencrypt.org/2023/01/12/eng-culture-at-isrg.html</link>
        <pubDate>Thu, 12 Jan 2023 12:00:00 +0000</pubDate>
        <description><![CDATA[<p>Engineers design systems and processes to ensure high quality outcomes and solutions - what if the same lens could be used to build a workplace where these very same engineers can thrive? Many organizations toil on how to build an environment where employees are engaged, challenged, and happy with their workplace, and while ISRG is not immune to those challenges, we do implement a few distinctive practices that help mitigate some workplace difficulties. Because 68% of our staff are engineers, we will be focusing in this post on how we are building a workplace culture where engineers can thrive.</p>
<p><strong>1. Aligning Growth Aspirations</strong></p>
<p>It happens again and again: a solid engineer grows and moves up the ranks and is then promoted to team manager, where they are supposed to juggle individual contributions, technical oversight, and people management. Many times, the engineer may not even have growth aspirations in people management, and yet they are put in a position where they are expected to know how to manage people and do it well. This could lead to the employee feeling like they cannot do their job sufficiently, feelings of imposter syndrome, burnout, or unreasonable expectations for everyone else put in a similar position.</p>
<p>To address this issue, our engineering career ladder intentionally does not include management requirements. This enables engineers to continually grow as individual contributors without having to be forced into responsibilities they may not be interested in or skilled at.</p>
<p>Many of our Site Reliability Engineers (SREs) have a background in operations work. To support their growth, we run a job rotation cycle where SREs spend 12-18 months on our Developer team to foster coding, architecture, and design skills. Some extra benefits to this are the strengthening of mentorship amongst team members as well as the connection between the two teams for better alignment in priorities and understanding.</p>
<p>It is essential to support employees in their growth and goal setting consistently so that workforce planning can be done with the employees&rsquo; best interests in mind. This is done through cultivating a psychologically safe environment where employees feel comfortable asking questions, making mistakes, and are encouraged to reflect and be open about their aspirations. Processes that help this along are regularly structured check-ins, performance reviews, blameless post-incident debriefs, and open feedback and communication with their peers and leaders.</p>
<p><strong>2. Mitigate the Management SPOF (Single Point of Failure)</strong></p>
<p>Every engineering team at ISRG is led by a Technical Lead and a People Manager. This separation of technical and people oversight allows for the work of leading an engineering team to be broken up so that it is not all resting on one person. The Technical Lead can focus on being in charge of the technical viability, structures, and processes while the People Manager can focus on things such as individual and team goal setting, growth opportunities, and conflict resolution.</p>
<p>The Technical Lead and People Manager come together when it comes to process development, visibility, and recognition. They also work together to address things for each other while not playing the other&rsquo;s role, thus mitigating the &ldquo;who manages the manager&rdquo; quandary. There are more instances where collaboration is needed between the two positions and that crossover lends to more perspective and opinion on what could be a complex issue.</p>
<p><strong>3. Intentional Scalability</strong></p>
<p>It is easy to dive straight into action items and deadlines, and then before you know it, things are rapidly scaling in efforts to keep up. The analogy of &ldquo;building the plane while it&rsquo;s flying&rdquo; comes to mind. Later down the line those scaled systems show flaws that are far more difficult to repair.</p>
<p>Much like designing a reliable and scalable engineering system, our goal is to create a workforce system that can handle increases in load while maintaining effective performance without redesigning the whole thing or &ldquo;rebuilding the plane.&rdquo;</p>
<p>Our dual leadership approach sets up our management with increased load and changing priorities in mind. Both people have more wiggle room to anticipate and adjust. It may seem superfluous to have Engineering People Managers in a small organization, however this prepares for future growth with a relatively lean solution without the extra complexity.</p>
<p>Like all scalable solutions, there is the upfront investment of time and money. However, the benefits will far outweigh the costs in the long run since building on scalable systems is typically less expensive than trying to adapt or redesign less agile systems.</p>
<p>While reflecting on our engineering workplace systems and how they came to be, we recognized that many were organically built out of having a remote workplace, autonomous teams, and the driving values of flexibility and inclusion. We will continue to design practices with these things in mind.</p>
<p>All in all, when looked at with a holistic lens, building an engineering workplace culture has several considerations that are similar to those we focus on when designing software systems. The obvious difference is that instead of functions and data, we are dealing with actual people with feelings and ever changing wants and needs. That is why it is important to once again acknowledge that no two workplaces are the same and there are no perfect solutions, but we hope that these few points lead to thoughtful reflection on how organizations can improve their engineer workplace experience.</p>
<p>If this sounds like a culture you&rsquo;d like to be a part of, check out our <a href="https://www.abetterinternet.org/careers/">open jobs</a>!</p>
<h2 id="supporting-let-s-encrypt">Supporting Let&rsquo;s Encrypt</h2>
<p>As a project of the <a href="https://abetterinternet.org/">Internet Security Research Group</a> (ISRG), 100% of our funding comes from contributions from our community of users and supporters. We depend on their support in order to provide our public benefit services. If your company or organization would like to sponsor Let&rsquo;s Encrypt please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>. If you can support us with a <a href="https://letsencrypt.org/donate/">donation</a>, we ask that you make an individual contribution.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2023/01/12/eng-culture-at-isrg.html</guid>
      </item><item>
        <title>Let’s Encrypt improves how we manage OCSP responses</title>
        <link>https://letsencrypt.org/2022/12/15/ocspcaching.html</link>
        <pubDate>Thu, 15 Dec 2022 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Let&rsquo;s Encrypt has improved how we manage Online Certificate Status Protocol (OCSP) responses by deploying Redis and generating responses on-demand rather than pre-generating them, making us more reliable than ever.</p>
<h2 id="about-ocsp-responses">About OCSP Responses</h2>
<p>OCSP is used to communicate the revocation status of TLS certificates. When an ACME agent signs a request to revoke a certificate, our Let&rsquo;s Encrypt Certificate Authority (CA) verifies whether or not the request is authorized and if it is, we begin publishing a &lsquo;revoked&rsquo; OCSP response for that certificate. Each time a relying party, such as a browser, visits a domain with a Let&rsquo;s Encrypt certificate, they can request information about whether the certificate has been revoked and we serve a reply containing &lsquo;good&rsquo; or &lsquo;revoked&rsquo;, signed by our CA, which we call an OCSP response.</p>
<h2 id="an-enormous-ocsp-response-load-100-000-every-second">An Enormous OCSP Response Load: 100,000 Every Second</h2>
<p>Let&rsquo;s Encrypt currently serves over <a href="https://letsencrypt.org/stats/">300 million domains</a>, which means we receive an enormous number of certificate revocation status requests &mdash; fielding around 100,000 OCSP responses <em>every second!</em></p>
<p>Normally 98-99% of our OCSP responses are handled by our Content Delivery Network (CDN). But there are times when our CDN has an issue resulting in Let&rsquo;s Encrypt being required to directly accept a larger number of requests. Historically, we could effectively respond to a maximum of 6% of our OCSP response traffic on our own. Should the need arise for us to accept much higher than that, some of our systems might begin to take too long to return results, return significant numbers of errors, or even stop accepting new requests. Not an ideal situation for us, or the Internet.</p>
<p>Our inability to serve OCSP responses during an issue with one of our CDNs could result in a slowdown in users&rsquo; browsing speed or not being able to connect to a website &mdash; or worse, Internet users unintentionally visiting domains for which a certificate has been revoked. Browsers react differently to unresponsive OCSP, but one thing was clear, our systems needed to handle these occasions much better.</p>
<h2 id="increasing-our-reliability">Increasing our Reliability</h2>
<p>After working on this throughout most of 2022, our engineers have dramatically improved our ability to independently serve OCSP responses. We did that by deploying Redis as an in-memory caching layer that helps protect our database by absorbing traffic spikes, whether due to CDN issues or our own actions, such as CDN cache clearing.</p>
<h2 id="pivot-in-design">Pivot in Design</h2>
<p>Our team developed a system architecture design to organize/change all of the various interconnected systems needed to make Redis trusted to serve our OCSP responses. Amidst the fervor of developing this design, our engineers identified a resource we could depend upon more heavily to simplify the overall architecture and still realize incredible reliability gains. Rather than pre-signing OCSP status responses at regular intervals, storing the results in a relational database, and asking Redis to keep copies&mdash;we could keep simple but authoritative certificate status information in our database. We could then leverage fast, concurrent signing power from our HSMs to Just-in-Time sign a fresh OCSP response, cache it in Redis, and return it to the requester. Thanks to this, the demands on the relational database became much lighter (especially total table-writes and write-contention), the speed was impressive, and Redis wasn&rsquo;t holding anything that couldn&rsquo;t be (very very quickly) regenerated.</p>
<h2 id="testing-our-systems">Testing our Systems</h2>
<p>The first test was to directly accept 1/16 of the requests by dropping a segment of our CDN cache. In that initial test we handled ~12,500 requests per second. Successive tests ratcheted up to 1/8th CDN cache drop, then 1/4th, then 1/2, then a 100% cache drop. With each ratcheting up of the test load we were able to monitor and glean insights as to how our deployment could handle the traffic. In the final test of 100% of requests, our systems remained responsive. This means that if we experience a spike in the number of OCSP responses we need to accept moving forward, we are equipped to handle them, dramatically reducing the risks to Internet users.</p>
<h2 id="supporting-let-s-encrypt">Supporting Let&rsquo;s Encrypt</h2>
<p>As a project of the <a href="https://abetterinternet.org/">Internet Security Research Group</a> (ISRG), 100% of our funding comes from contributions from our community of users and supporters. We depend on their support in order to provide our public benefit services. If your company or organization would like to sponsor Let&rsquo;s Encrypt please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>. If you can support us with a <a href="https://letsencrypt.org/donate/">donation</a>, we ask that you make an individual contribution.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2022/12/15/ocspcaching.html</guid>
      </item><item>
        <title>A Year-End Letter from our Executive Director</title>
        <link>https://letsencrypt.org/2022/12/05/ed-letter-2022.html</link>
        <pubDate>Mon, 05 Dec 2022 12:00:00 +0000</pubDate>
        <description><![CDATA[<p><em>This letter was originally published in our <a href="https://www.abetterinternet.org/documents/2022-ISRG-Annual-Report.pdf">2022 annual report</a>.</em></p>
<p>The past year at ISRG has been a great one and I couldn&rsquo;t be more proud of our staff, community, funders, and other partners that made it happen. <a href="https://letsencrypt.org/">Let&rsquo;s Encrypt</a> continues to thrive, serving more websites around the world than ever before with excellent security and stability.</p>
<p>A particularly big moment was when Let&rsquo;s Encrypt surpassed 300,000,000 websites served. When I was informed that we had reached that milestone, my first reaction was to be excited and happy about how many people we&rsquo;ve been able to help. My second reaction, following on quickly after the first, was to take a deep breath and reflect on the magnitude of the responsibility we have here.</p>
<p>The way ISRG is translating that sense of responsibility to action today is probably best described as a focus on agility and resilience. We need to assume that, despite our best efforts trying to prevent issues, unexpected and unfortunate events will happen and we need to position ourselves to handle them.</p>
<p>Back in March of 2020 Let&rsquo;s Encrypt needed to respond to a compliance incident that affected nearly three million certificates. That meant we needed to get our subscribers to renew those three million certificates in a very short period of time or the sites might have availability issues. We dealt with that incident pretty well considering the remediation options available, but it was clear that incremental improvements would not make enough of a difference for events like this in the future. We needed to introduce systems that would allow us to be significantly more agile and resilient going forward.</p>
<p>Since then we&rsquo;ve developed a specification for <a href="https://datatracker.ietf.org/doc/rfc9773/">automating certificate renewal signals</a> so that our subscribers can handle revocation/renewal events as easily as they can get certificates in the first place (it just happens automatically in the background!). That specification is making its way through the IETF standards process so that the whole ecosystem can benefit, and we plan to deploy it in production at Let&rsquo;s Encrypt shortly. Combined with other steps we&rsquo;ve taken in order to more easily handle renewal traffic surges, Let&rsquo;s Encrypt should be able to respond on a whole different level the next time we need to ask significant numbers of subscribers to renew early.</p>
<p>This kind of work on agility and resilience is critical if we&rsquo;re going to improve security and privacy at scale on the Web.</p>
<p>Our <a href="https://divviup.org/">Divvi Up</a> team has made a huge amount of progress implementing a new service that will bring privacy respecting metrics to millions of people. Applications collect all kinds of metrics: some of them are sensitive, some of them aren&rsquo;t, and some of them seem innocuous but could reveal private information about a person. We&rsquo;re making it possible for apps to get aggregated, anonymized metrics that give insight at a population level while protecting the privacy of the people who are using those apps. Everybody wins - users get great privacy and apps get the metrics they need without handling individual user data. As we move into 2023, we&rsquo;ll continue to grow our roster of beta testers and partners.</p>
<p>Our <a href="https://www.memorysafety.org/">Prossimo</a> project started in 2020 with a clear goal: move security sensitive software infrastructure to memory safe code. Since then, we&rsquo;ve gotten a lot of code written to improve memory safety on the Internet.</p>
<p>We&rsquo;re ending the year with <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8aebac82933ff1a7c8eede18cab11e1115e2062b">Rust support being merged into the Linux kernel</a> and the completion of a <a href="https://github.com/memorysafety/ntpd-rs">memory safe NTP client and server implementation</a>. We&rsquo;re thrilled about the potential for a more memory safe kernel, but now we need to see the development of drivers in Rust. We&rsquo;re particularly excited about an <a href="https://lpc.events/event/16/contributions/1180/attachments/1017/1961/deck.pdf">NVMe driver</a> that shows excellent initial performance metrics while coming with the benefit of never producing a memory safety bug. We are actively working to make similar progress on <a href="https://www.memorysafety.org/initiative/rustls/">Rustls</a>, a high-performance TLS library, and <a href="https://www.memorysafety.org/initiative/dns/">Trust-DNS</a>, a fully recursive DNS resolver.</p>
<p>All of this is made possible by charitable contributions from people like you and organizations around the world. Since 2015, tens of thousands of people have given to our work. They&rsquo;ve made a case for corporate sponsorship, given through their DAFs, or set up recurring donations. That&rsquo;s all added up to $17M that we&rsquo;ve used to change the Internet for nearly everyone using it. I hope you&rsquo;ll join these people and support us financially if you can.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2022/12/05/ed-letter-2022.html</guid>
      </item><item>
        <title>Remembering Peter Eckersley</title>
        <link>https://letsencrypt.org/2022/09/12/remembering-peter-eckersley.html</link>
        <pubDate>Mon, 12 Sep 2022 00:00:00 +0000</pubDate>
        <description><![CDATA[
<div class="main-article">
  <div class="card border-0 pic-quote-right">
    <img
      alt="Peter Eckersley Poster"
      class="rounded mx-auto img-fluid"
      src="/images/peter-eckersley.png"
    />
    <div class="pic-quote-right__caption">Artwork by Hugh D’Andrade</div>
  </div>

<p>
Peter Eckersley, a Let’s Encrypt co-founder, passed away unexpectedly on September 2nd from complications of cancer treatment. As an incredibly kind, bright, and energetic person, he was a beloved member of the community of people working to make the Internet a better place. He played an important role in the founding of Let’s Encrypt and his loss is felt deeply by many in our organization.
</p>

<p>
Peter met Alex Halderman at the RSA Conference in 2012 and the two of them started to make plans for technology to automate the process of acquiring HTTPS certificates. This work included early designs for what would become the ACME protocol. Peter and Alex later teamed up with a parallel effort by Josh Aas and Eric Rescorla at Mozilla, and the four of us worked together to create a new automated public benefit CA. The result was Let’s Encrypt, which began service in 2015.
</p>

<p>
Peter also led the development of the initial ACME client, which would eventually become Certbot. In a reflection of Peter’s vision for making the Internet secure by default, Certbot aims to fully automate HTTPS deployment, rather than simply procure a certificate. Today, Certbot is among the most popular ACME clients, and it is developed and maintained by Peter’s former team at the Electronic Frontier Foundation (EFF).
</p>

<p>
Peter was a member of our Board of Directors for several years. We greatly valued his contributions as a Director, but one of the memories from that time that makes us smile the most is Peter’s habit of showing up to board meetings with a messenger bag over his shoulder, helmet hair, and rosy cheeks from arriving by bike.
</p>

<p>
Making change at scale on the Internet is not easy. One way to get it done is to be both a dreamer and someone who possesses the deep technical knowledge necessary to bring dreams to reality. Peter was one of those people, and we’re grateful to have been able to work with him.
</p>

<p>
We hope to honor Peter’s life by letting the qualities we admired so much in him - his energy, optimism, kindness, and pursuit of knowledge - inspire our efforts going forward.
</p>

<p>
Peter's longtime friend and colleague Seth Schoen, who was among the earliest contributors to Let’s Encrypt and Certbot, further memorializes Peter in a <a href="https://community.letsencrypt.org/t/peter-eckersley-may-his-memory-be-a-blessing/183854">post on our community forum</a>.
</p>

</div>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2022/09/12/remembering-peter-eckersley.html</guid>
      </item><item>
        <title>A New Life for Certificate Revocation Lists</title>
        <link>https://letsencrypt.org/2022/09/07/new-life-for-crls.html</link>
        <pubDate>Wed, 07 Sep 2022 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>This month, Let&rsquo;s Encrypt is turning on new infrastructure to support revoking certificates via Certificate Revocation Lists. Despite having been largely supplanted by the Online Certificate Status Protocol for over a decade now, CRLs are gaining new life with recent browser updates. By collecting and summarizing CRLs for their users, browsers are making reliable revocation of certificates a reality, improving both security and privacy on the web. Let&rsquo;s talk about exactly what this new infrastructure does, and why it&rsquo;s important.</p>
<h1 id="a-brief-history-of-revocation">A Brief History of Revocation</h1>
<p>When a certificate becomes untrustworthy (for instance because its private key was compromised), that certificate must be revoked and that information publicized so that no one relies upon it in the future. However, it&rsquo;s a well-worn adage in the world of the Web Public Key Infrastructure (the Web PKI) that <a href="https://scotthelme.co.uk/revocation-is-broken/">revocation is broken</a>. Over the history of the Web PKI, there have been two primary mechanisms for declaring that a TLS/SSL certificate should no longer be trusted: Certificate Revocation Lists (CRLs) and the Online Certificate Status Protocol (OCSP). Unfortunately, both have major drawbacks.</p>
<p>CRLs are basically just lists of all of the certificates that a given Certificate Authority (CA) has issued which have been revoked. This means that they&rsquo;re often very large &ndash; easily the size of a whole movie. It&rsquo;s inefficient for your browser to download a giant list of revoked certificates just to check if the single certificate for the site you&rsquo;re visiting right now is revoked. These slow downloads and checks made web page loads slow, so OCSP was developed as an alternative.</p>
<p>OCSP is sort of like &ldquo;what if there were a separate CRL for every single certificate&rdquo;: when you want to check whether a given certificate has been revoked, your browser can check the status for just that one certificate by contacting the CA&rsquo;s OCSP service. But because OCSP infrastructure has to be running constantly and can suffer downtime just like any other web service, most browsers treat getting no response at all as equivalent to getting a &ldquo;not revoked&rdquo; response. This means that attackers can prevent you from discovering that a certificate has been revoked simply by blocking all of your requests for OCSP information. To help reduce load on a CA&rsquo;s OCSP services, OCSP responses are valid and can be cached for about a week. But this means that clients don&rsquo;t retrieve updates very frequently, and often continue to trust certificates for a week after they&rsquo;re revoked. And perhaps worst of all: because your browser makes an OCSP request for every website you visit, a malicious (or legally compelled) CA could <a href="https://groups.google.com/a/mozilla.org/g/dev-security-policy/c/S6A14e_X-T0/m/T4WxWgajAAAJ">track your browsing behavior</a> by keeping track of what sites you request OCSP for.</p>
<p>So both of the existing solutions don&rsquo;t really work: CRLs are so inefficient that most browsers don&rsquo;t check them, and OCSP is so unreliable that most browsers don&rsquo;t check it. We need something better.</p>
<h1 id="browser-summarized-crls">Browser-Summarized CRLs</h1>
<p>One possible solution that has been making headway recently is the idea of proprietary, browser-specific CRLs. Although different browsers are implementing this differently (e.g. Mozilla calls theirs <a href="https://blog.mozilla.org/security/2020/01/09/crlite-part-1-all-web-pki-revocations-compressed/">CRLite</a>, and Chrome&rsquo;s are <a href="https://www.imperialviolet.org/2012/02/05/crlsets.html">CRLSets</a>), the basic idea is the same.</p>
<p>Rather than having each user&rsquo;s browser download large CRLs when they want to check revocation, the browser <em>vendor</em> downloads the CRLs centrally. They process the CRLs into a smaller format such as a <a href="https://en.wikipedia.org/wiki/Bloom_filter">Bloom filter</a>, then push the new compressed object to all of the installed browser instances using pre-existing rapid update mechanisms. Firefox, for example, is pushing updates as quickly as every 6 hours.</p>
<p>This means that browsers can download revocation lists ahead of time, keeping page loads fast and mitigating the worst problems of vanilla CRLs. It keeps revocation checks local, and the pushed updates can take immediate effect without waiting for a potentially days-long OCSP cache to expire, preventing all of the worst problems with OCSP.</p>
<p>Thanks to the promise of these browser-summarized CRLs, both the <a href="https://www.apple.com/certificateauthority/ca_program.html">Apple</a> and <a href="https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/policy/#41-additional-requirements">Mozilla</a> root programs are requiring that all CAs begin issuing CRLs before October 1st, 2022. Specifically, they are requiring that CAs begin issuing one or more CRLs which together cover all certificates issued by that CA, and that the list of URLs pointing to those CRLs be disclosed in the Common CA Database (CCADB). This will allow Safari and Firefox to switch to using browser-summarized CRL checking for revocation.</p>
<h1 id="our-new-infrastructure">Our New Infrastructure</h1>
<p>When Let&rsquo;s Encrypt was founded, we made an explicit decision to only support OCSP and not produce CRLs at all. This was because the root program requirements at the time only mandated OCSP, and maintaining both revocation mechanisms would have increased the number of places where a bug could lead to a compliance incident.</p>
<p>When we set out to develop CRL infrastructure, we knew we needed to build for scale, and do so in a way that reflects our emphasis on efficiency and simplicity. Over the last few months we have <a href="https://github.com/letsencrypt/boulder/tree/release-2022-08-29/crl">developed</a> a few new pieces of infrastructure to enable us to publish CRLs in compliance with the upcoming requirements. Each component is lightweight, dedicated to doing a single task and doing it well, and will be able to scale well past our current needs.</p>
<p>Let&rsquo;s Encrypt currently has <a href="https://letsencrypt.org/stats/">over 200 million</a> active certificates on any given day. If we had an incident where we needed to revoke every single one of those certificates at the same time, the resulting CRL would be over 8 gigabytes. In order to make things less unwieldy, we will be dividing our CRLs into 128 shards, each topping out at a worst-case maximum of 70 megabytes. We use some carefully constructed math to ensure that &ndash; as long as the number of shards doesn&rsquo;t change &ndash; all certificates will remain within their same shards when the CRLs are re-issued, so that each shard can be treated as a mini-CRL with a consistent scope.</p>
<p>In line with the same best practices that we follow for our certificate issuance, all of our CRLs will be checked for compliance with <a href="https://www.rfc-editor.org/rfc/rfc5280#section-5">RFC 5280</a> and the <a href="https://github.com/cabforum/servercert/blob/bbca71465ed8a8a76383086039f52c750009286a/docs/BR.md#72-crl-profile">Baseline Requirements</a> before they are signed by our issuing intermediates. Although the popular linting library <a href="https://github.com/zmap/zlint">zlint</a> does not yet support linting CRLs, we have written our own <a href="https://github.com/letsencrypt/boulder/blob/release-2022-08-29/linter/lints/crl/lints.go">collection of checks</a> and hope to upstream them to zlint in the future. These checks will help prevent compliance incidents and ensure a seamless issuance and renewal cycle.</p>
<p>As part of developing these new capabilities, we have also made <a href="https://go-review.googlesource.com/c/go/&#43;/414877">several</a> <a href="https://go-review.googlesource.com/c/go/&#43;/416354">improvements</a> to the Go standard library&rsquo;s implementation of CRL generation and parsing. We look forward to contributing more improvements as we and the rest of the Go community work with CRLs more frequently in the future.</p>
<p>Although we will be producing CRLs which cover all certificates that we issue, we will not be including those URLs in the CRL Distribution Point extension of our certificates. For now, as required by the Baseline Requirements, our certificates will continue to include an OCSP URL which can be used by anyone to obtain revocation information for each certificate. Our new CRL URLs will be disclosed only in CCADB, so that the Apple and Mozilla root programs can consume them without exposing them to potentially large download traffic from the rest of the internet at large.</p>
<h1 id="the-future-of-revocation">The Future of Revocation</h1>
<p>There&rsquo;s still a long way to go before revocation in the Web PKI is truly fixed. The privacy concerns around OCSP will only be mitigated once all clients have stopped relying on it, and we still need to develop good ways for non-browser clients to reliably check revocation information.</p>
<p>We look forward to continuing to work with the rest of the Web PKI community to make revocation checking private, reliable, and efficient for everyone.</p>
<p>If you&rsquo;re excited about our work developing more robust and private revocation mechanisms, you can support us with a <a href="https://letsencrypt.org/donate/">donation</a>, or encourage your company or organization to <a href="https://www.abetterinternet.org/sponsor/">sponsor</a> our work. As a nonprofit project, 100% of our funding comes from contributions from our community and supporters, and we depend on your support.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2022/09/07/new-life-for-crls.html</guid>
      </item><item>
        <title>Nurturing Continued Growth of Our Oak CT Log</title>
        <link>https://letsencrypt.org/2022/05/19/nurturing-ct-log-growth.html</link>
        <pubDate>Thu, 19 May 2022 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Let&rsquo;s Encrypt has been running a Certificate Transparency (CT) log since 2019 as part of our commitment to keeping the Web PKI ecosystem healthy. CT logs have become important infrastructure for an encrypted Web <sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>, but have a well-deserved reputation for being difficult to operate at high levels of trust: Only 6 organizations run logs that are currently considered to be &ldquo;qualified.&rdquo; <sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup></p>
<p>Our <a href="/2019/05/15/introducing-oak-ct-log.html">Oak</a> log is the only qualified CT log that runs on an entirely open source stack <sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup>. In the interest of lowering the barrier for other organizations to join the CT ecosystem, we want to cover a few recent changes to Oak that might be helpful to anyone else planning to launch a log based on Google&rsquo;s Trillian backed by MariaDB:</p>
<ul>
<li>
<p>The disk I/O workload of Trillian atop MariaDB is easily mediated by front-end rate limits, and</p>
</li>
<li>
<p>It&rsquo;s worth the complexity to split each new annual CT log into its own Trillian/MariaDB stack.</p>
</li>
</ul>
<p>This post will update some of the information from the previous post <a href="/2019/11/20/how-le-runs-ct-logs.html">How Let&rsquo;s Encrypt Runs CT Logs</a>.</p>
<h1 id="growing-oak-while-staying-open-source">Growing Oak While Staying Open Source</h1>
<p>Oak runs on a free and open source stack: Google&rsquo;s Trillian data store, backed by MariaDB, running at Amazon Web Services (AWS) via <a href="https://aws.amazon.com/rds/">Amazon&rsquo;s Relational Database Service</a> (RDS). To our knowledge, Oak is the only trusted CT log without closed-source components <sup id="fnref:3-second"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup>.</p>
<p><img src="/images/2022.05.19-open_source_stack.png" alt="Open Source Stack"></p>
<div class='blog-image-caption'>Open Source Stack</div>
<p>Other operators of Trillian have opted to use different databases which segment data differently, but the provided MySQL-compatible datastore has successfully kept up with Let&rsquo;s Encrypt&rsquo;s CT log volume (currently above 400 GB per month). The story for scaling Oak atop MariaDB is quite typical for any relational database, though the performance requirements are stringent.</p>
<h1 id="keeping-oak-qualified">Keeping Oak Qualified</h1>
<p>The policies that Certificate Transparency Log operators follow require there to be no significant downtime, in addition to the more absolute and difficult requirement that the logs themselves make no mistakes: Given the append-only nature of Certificate Transparency, seemingly minor data corruption prompts permanent disqualification of the log <sup id="fnref:4"><a href="#fn:4" class="footnote-ref" role="doc-noteref">4</a></sup>. To minimize the impacts of corruption, as well as for scalability reasons, it&rsquo;s become normal for CT logs to distribute the certificates they contain in different, smaller individual CT logs, called shards.</p>
<h1 id="splitting-many-years-of-data-among-many-trees">Splitting Many Years Of Data Among Many Trees</h1>
<p>The Let&rsquo;s Encrypt Oak CT log is actually made up of many individual CT log shards each named after a period of time: Oak 2020 contains certificates which expired in 2020; Oak 2022 contains certificates which expire in 2022. For ease of reference, we refer to these as &ldquo;temporal log shards,&rdquo; though in truth each is an individual CT log sharing the Oak family name.</p>
<p>It is straightforward to configure a single Trillian installation to support multiple CT log shards. Each log shard is allocated storage within the backing database, and the Trillian Log Server can then service requests for all configured logs.</p>
<p>The <a href="https://github.com/google/trillian/blob/master/storage/mysql/schema/storage.sql">Trillian database schema</a> is quite compact and easy to understand:</p>
<ul>
<li>
<p>Each configured log gets a Tree ID, with metadata in several tables.</p>
</li>
<li>
<p>All log entries &ndash; certificates in our case &ndash; get a row in LeafData.</p>
</li>
<li>
<p>Entries that haven&rsquo;t been sequenced yet get a row in the table Unsequenced, which is normally kept empty by the Trillian Log Signer service.</p>
</li>
<li>
<p>Once sequenced, entries are removed from the Unsequenced table and added as a row in SequencedLeafData.</p>
</li>
</ul>
<p><img src="/images/2022.05.19-database_layout.png" alt="Database Layout"></p>
<div class='blog-image-caption'>Database Layout</div>
<p>In a nutshell: No matter how many different certificate transparency trees and subtrees you set up for a given copy of Trillian, all of them will store the lion&rsquo;s share of their data, particularly the DER-encoded certificates themselves, interwoven into the one LeafData table. Since Trillian Log Server can only be configured with a single MySQL connection URI, limiting it to a single database, that single table can get quite big.</p>
<p>For Oak, the database currently grows at a rate of about 400 GB per month; that rate is ever-increasing as the use of TLS grows and more Certificate Authorities submit their certificates to our logs.</p>
<h1 id="amazon-rds-size-limitations">Amazon RDS Size Limitations</h1>
<p>In March 2021 <a href="https://groups.google.com/a/chromium.org/g/ct-policy/c/madcUcQZ1IQ/m/AeYuAvc6BAAJ">we discovered</a> that Amazon RDS has a <a href="https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.KnownIssuesAndLimitations.html#MySQL.Concepts.Limits.FileSize">16TB limit per tablespace</a> when RDS is configured to use one file-per-table, as we were doing for all of our CT log shards. Luckily, we reached this limit first in our testing environment, the Testflume log.</p>
<p>Part of Testflume&rsquo;s purpose was to grow ahead of the production logs in total size, as well as test growth with more aggressive configuration options than the production Oak log had, and in these ways it was highly successful.</p>
<h1 id="revisiting-database-design">Revisiting Database Design</h1>
<p>In our blog post, <a href="/2019/11/20/how-le-runs-ct-logs.html">How Let&rsquo;s Encrypt Runs CT Logs</a>, we wrote that each year we planned &ldquo;to freeze the previous year&rsquo;s shard and move it to a less expensive serving infrastructure, reclaiming its storage for our live shards.&rdquo; However, that is not practical while continuing to serve traffic from the same database instance. Deleting terabytes of rows from an InnoDB table that is in-use is not feasible. Trillian&rsquo;s MySQL-compatible storage backend agrees: as implemented, Trillian&rsquo;s built-in <a href="https://github.com/google/trillian/blob/ca034c8b86dfbd60d069c51ffae9956c73cd800b/server/admin/admin_server.go#L161-L167">Tree Deletion mechanism</a> marks a tree as <a href="https://github.com/google/trillian/blob/ca034c8b86dfbd60d069c51ffae9956c73cd800b/storage/mysql/admin_storage.go#L348-L359">&ldquo;soft deleted,&rdquo;</a> and leaves the removal of data from the LeafData table (and others) as an exercise for the administrator.</p>
<p>Since Trillian&rsquo;s MySQL-compatible backend does not support splitting the LeafData among multiple tables by itself, and since deleting stale data from those tables yields slow performance across the whole database server, to continue to scale the Oak CT log we have to instead prune out the prior seasons&rsquo; data another way.</p>
<h2 id="single-rds-instance-with-distinct-schema-per-log-shard">Single RDS Instance with Distinct Schema per Log Shard</h2>
<p>We considered adding new database schemas to our existing MariaDB-backed Amazon RDS instance. In this design, we would run a Trillian CT Front-End (CTFE) instance per temporal log shard, each pointing to individual Trillian Log Server and Log Signer instances, which themselves point to a specific temporally-identified database schema name and tablespace. This is cost-effective, and it gives us ample room to avoid the 16 TB limit.</p>
<p><img src="/images/2022.05.19-one_schema_per_shard.png" alt="One Schema per Shard"></p>
<div class='blog-image-caption'>Distinct Schema per Log Shard in a Single Database</div>
<p>However, if heavy maintenance is required on any part of the underlying database, it would affect every log shard contained within. In particular, we know from using MariaDB with InnoDB inside the Let&rsquo;s Encrypt CA infrastructure that truncating and deleting a multi-terabyte table causes performance issues for the whole database while the operation runs. Inside the CA infrastructure we mitigate that performance issue by deleting table data only on database replicas; this is more complicated in a more hands-off managed hosting environment like RDS.</p>
<p>Since we wish to clear out old data regularly as a matter of data hygiene, and the performance requirements for a CT log are strict, this option wasn&rsquo;t feasible.</p>
<h2 id="distinct-rds-instance-per-log-shard">Distinct RDS Instance per Log Shard</h2>
<p>While it increases the number of managed system components, it is much cleaner to give each temporal log shard its own database instance. Like the Distinct Schema per Log Shard model, we now run Trillian CTFE, Log Server, and Log Signer instances for each temporal log shard. However, each log shard gets its own RDS instance for the active life of the log <sup id="fnref:5"><a href="#fn:5" class="footnote-ref" role="doc-noteref">5</a></sup>. At log shutdown, the RDS instance is simply deprovisioned.</p>
<p><img src="/images/2022.05.19-database_per_shard.png" alt="Database per shard"></p>
<div class='blog-image-caption'>Using Distinct Databases Per Log</div>
<p>With the original specifications for the Oak log, this would require allocating a significant amount of data I/O resources. However, years of experience running the Testflume log showed that Trillian in AWS did not require the highest possible disk performance.</p>
<h2 id="tuning-iops">Tuning IOPS</h2>
<p>We launched Oak using the highest performance AWS Elastic Block Storage available at the time: <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html">Provisioned IOPS SSDs (type io1)</a>. Because of the strict performance requirements on CT logs, we worried that without the best possible performance for disk I/O that latency issues might crop up that could lead to disqualification. As we called out in our blog post <a href="/2019/11/20/how-le-runs-ct-logs.html">How Let&rsquo;s Encrypt Runs CT Logs</a>, we hoped that we could use a simpler storage type in the future.</p>
<p>To test that, we used <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html">General Purpose SSD storage type</a> (type gp2) for our testing CT log, Testflume, and obtained nominal results over the lifespan of the log. In practice higher performance was unnecessary because Trillian makes good use of database indices. Downloading the whole log tree from the first leaf entry is the most significant demand of disk I/O, and that manner of operation is easily managed via rate limits at the load balancer layer.</p>
<p>Our 2022 and 2023 Oak shards now use type gp2 storage and are performing well.</p>
<p>Synergistically, the earlier change to run a distinct RDS instance for each temporal log shard has also further reduced Trillian&rsquo;s I/O load: A larger percentage of the trimmed-down data fits in MariaDB&rsquo;s in-memory buffer pool.</p>
<h1 id="more-future-improvements">More Future Improvements</h1>
<p>It&rsquo;s clear that CT logs will continue to accelerate their rate of growth. Eventually, if we remain on this architecture, even a single year&rsquo;s CT log will exceed the 16 TB table size limit. In advance of that, we&rsquo;ll have to take further actions. Some of those might be:</p>
<ul>
<li>
<p>Change our temporal log sharding strategy to shorter-than-year intervals, perhaps every 3 or 6 months.</p>
</li>
<li>
<p>Reduce the absolute storage requirements for Trillian&rsquo;s MySQL-compatible storage backend by de-duplicating intermediate certificates.</p>
</li>
<li>
<p>Contribute a patch to add table sharding to Trillian&rsquo;s MySQL-compatible storage backend.</p>
</li>
<li>
<p>Change storage backends entirely, perhaps to a sharding-aware middleware, or another more horizontally-scalable open-source system.</p>
</li>
</ul>
<p>We&rsquo;ve also <a href="https://groups.google.com/a/chromium.org/g/ct-policy/c/CLBlt5rSsAk/m/DDDpvM4dAQAJ">uprooted our current Testflume CT log</a> and brought online a replacement which we&rsquo;ve named Sapling. As before, this test-only log will evaluate more aggressive configurations that might bear fruit in the future.</p>
<h1 id="as-always-scaling-data-is-the-hard-part">As Always, Scaling Data Is The Hard Part</h1>
<p>Though the performance requirements for CT logs are strict, the bulk of the scalability difficulty has to do with the large amount of data and the high and ever-increasing rate of growth; this is the way of relational databases. Horizontal scaling continues to be the solution, and is straightforward to apply to the open source Trillian and MariaDB stack.</p>
<h2 id="supporting-let-s-encrypt">Supporting Let’s Encrypt</h2>
<p>As a nonprofit project, 100% of our funding comes from contributions from our community of users and supporters. We depend on their support in order to provide our services for the public benefit. If your
company or organization would like to <a href="https://www.abetterinternet.org/sponsor/">sponsor</a> Let’s Encrypt please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>. If you can support us with a <a href="/donate/">donation</a>, we ask that you make an individual contribution.</p>
<br />
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>Chrome and Safari check that certificates include evidence that certificates were submitted to CT logs. If a certificate is lacking that evidence, it won&rsquo;t be trusted. <a href="https://certificate.transparency.dev/useragents/">https://certificate.transparency.dev/useragents/</a>&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>As of publication, these organizations have logs Google Chrome considers qualified for Certificate Authorities to embed their signed timestamps: Cloudflare, DigiCert, Google, Let&rsquo;s Encrypt, Sectigo, and TrustAsia. <a href="https://ct.cloudflare.com/logs">https://ct.cloudflare.com/logs</a> and <a href="https://twitter.com/__agwa/status/1527407151660122114">https://twitter.com/__agwa/status/1527407151660122114</a>&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:3">
<p>DigiCert&rsquo;s Yeti CT log deployment at AWS <a href="https://groups.google.com/a/chromium.org/g/ct-policy/c/EKB9ycLsMk0/m/zMq4Kmd_BgAJ">uses a custom Apache Cassandra backend</a>; Oak is the only production log using the Trillian project&rsquo;s MySQL-compatible backend. SSLMate maintains a list of known log software at <a href="https://sslmate.com/labs/ct_ecosystem/ecosystem.html">https://sslmate.com/labs/ct_ecosystem/ecosystem.html</a>&#160;<a href="#fnref:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:4">
<p>In the recent past, a cosmic ray event led to the disqualification of a CT log. Andrew Ayer has a good discussion of this in his post &ldquo;How Certificate Transparency Logs Fail and Why It&rsquo;s OK&rdquo; <a href="https://www.agwa.name/blog/post/how_ct_logs_fail">https://www.agwa.name/blog/post/how_ct_logs_fail</a>, which references the discovery on the ct-policy list <a href="https://groups.google.com/a/chromium.org/g/ct-policy/c/PCkKU357M2Q/m/xbxgEXWbAQAJ">https://groups.google.com/a/chromium.org/g/ct-policy/c/PCkKU357M2Q/m/xbxgEXWbAQAJ</a>\&#160;<a href="#fnref:4" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:5">
<p>Logs remain online for a period after they stop accepting new entries to give a grace period for mirrors and archive activity.&#160;<a href="#fnref:5" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2022/05/19/nurturing-ct-log-growth.html</guid>
      </item><item>
        <title>TLS Beyond the Web: How MongoDB Uses Let’s Encrypt for Database-to-Application Security</title>
        <link>https://letsencrypt.org/2022/04/28/database-to-app-tls.html</link>
        <pubDate>Thu, 28 Apr 2022 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Most of the time, people think about using Let&rsquo;s Encrypt certificates to encrypt the communication between a website and server. But connections that need TLS are everywhere! In order for us to have an Internet that is 100% encrypted, we need to think beyond the website.</p>
<p>MongoDB&rsquo;s managed multicloud database service, called Atlas, uses Let&rsquo;s Encrypt certificates to secure the connection between customers&rsquo; applications and MongoDB databases, and between service points inside the platform. We spoke with Kenn White, Security Principal at MongoDB, about how his team uses Let&rsquo;s Encrypt certificates for over two million databases, across 200 datacenters and three cloud providers.</p>
<p>&quot;Let&rsquo;s Encrypt has become a core part of our infrastructure stack,&quot; said Kenn. Interestingly, our relationship didn&rsquo;t start out that way. MongoDB became a financial sponsor of Let&rsquo;s Encrypt years earlier simply to support our mission to pursue security and privacy. MongoDB Atlas began to take off and it became clear that TLS would continue to be a priority as they brought on customers like currency exchanges, treasury platforms and retail payment networks. &quot;The whole notion of high automation and no human touch all really appealed to us,&quot; said Kenn of MongoDB&rsquo;s decision to use Let&rsquo;s Encrypt.</p>
<p>MongoDB&rsquo;s diverse customer roster means they support a wide variety of languages, libraries, and operating systems. Consequently, their monitoring is quite robust. Over the years, MongoDB has become a helpful resource for Let&rsquo;s Encrypt engineers to identify edge case implementation bugs. Their ability to accurately identify issues early helps us respond efficiently; this is a benefit that ripples out across our diverse subscribers all over the Web.</p>
<p>The open sharing of information is a core part of how Let&rsquo;s Encrypt operates. In fact, &quot;transparency&quot; is one of our <a href="/about/">key operating principles</a>. The ability to see and understand how Let&rsquo;s Encrypt is changing helped MongoDB gain trust and confidence in our operations. &quot;I don&rsquo;t think you can really put a price on the experience we&rsquo;ve had working with the Let&rsquo;s Encrypt engineering team,&quot; said Kenn. &quot;One thing that I appreciate about Let&rsquo;s Encrypt is that you&rsquo;ve always been extremely transparent on your priorities and your roadmap vision. In terms of the technology and your telemetry, this is an evolution; where you are today is far better than where you were two years ago. And two years ago you were already head and shoulders above almost every peer in the industry.&quot;</p>
<p>Check out other blog posts in this series about how other large subscribers use Let&rsquo;s Encrypt certificates.</p>
<p><a href="/2021/10/28/tls-simply-and-automatically.html">TLS Simply and Automatically for Europe&rsquo;s Largest Cloud Customers</a></p>
<p><a href="/2021/09/14/speed-at-scale-shopify.html">Speed at scale: Let&rsquo;s Encrypt serving Shopify&rsquo;s 4.5 million domains</a></p>
<h2 id="supporting-let-s-encrypt">Supporting Let’s Encrypt</h2>
<p>As a nonprofit project, 100% of our funding comes from contributions from our community of users and supporters. We depend on their support in order to provide our services for the public benefit. If your
company or organization would like to <a href="https://www.abetterinternet.org/sponsor/">sponsor</a> Let’s Encrypt please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>. If you can support us with a <a href="/donate/">donation</a>, we ask that you make an individual contribution.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2022/04/28/database-to-app-tls.html</guid>
      </item><item>
        <title>Let’s Encrypt Receives the Levchin Prize for Real-World Cryptography</title>
        <link>https://letsencrypt.org/2022/04/13/receiving-the-levchin-prize.html</link>
        <pubDate>Wed, 13 Apr 2022 00:00:00 +0000</pubDate>
        <description><![CDATA[
<p>
  <em
    >On April 13, 2022, the Real World Crypto steering committee presented the
    Max Levchin Prize for Real-World Cryptography to Let’s Encrypt. The
    following is the speech delivered by our Executive Director, Josh Aas upon
    receiving the award. We’d like to
    <a href="https://abetterinternet.org/levchin-prize"
      >thank our community for supporting us and invite you to join us</a
    >
    in making the Internet more secure and privacy-respecting for everyone.</em
  >
</p>

<div class="main-article">
  <p>
    Thank you to the
    <a href="http://rwc.iacr.org/2022/">Real World Crypto</a> steering committee
    and to <a href="https://rwc.iacr.org/LevchinPrize/">Max Levchin</a> for this
    recognition. I couldn’t be more proud of what our team has accomplished
    since we started working on Let’s Encrypt back in 2013.
  </p>

  <p>
    My first temptation is to name some names, but there are so many people who
    have given a significant portion of their lives to this work over the years
    that the list would be too long. You know who you are. I hope you’re as
    proud as I am at this moment.
  </p>

  <p>
    Let’s Encrypt is currently used by more than
    <a href="https://letsencrypt.org/stats/#growth">280 million websites</a>,
    <a href="https://letsencrypt.org/stats/#daily-issuance"
      >issuing between two and three million certificates per day</a
    >. I often think about how we got here, looking for some nugget of wisdom
    that might be useful to others. I’m not sure I’ve really come up with
    anything particularly profound, but I’m going to give you my thoughts
    anyway. Generally speaking: we started with a pretty good idea, built a
    strong team, stayed focused on what’s important, and kept ease of use in
    mind every step of the way.
  </p>

  <p>
    Let’s Encrypt ultimately came from a group of people thinking about a pretty
    daunting challenge. The billions of people living increasingly large
    portions of their lives online deserved better privacy and security, but in
    order to do that we needed to convince hundreds of millions of websites to
    switch to HTTPS. Not only did we want them to make that change, we wanted
    most of them to make the change within the next three to five years.
  </p>

  <div class="card border-0 pic-quote-right">
    <img
      alt="Levchin Prize Trophy"
      class="rounded mx-auto img-fluid mb-4"
      src="/images/2022.04.13.Levchin-Prize.jpg"
    />
  </div>

  <p>
    We thought through a lot of options but in the end we just didn’t see any
    other way than to build what became Let’s Encrypt. In hindsight building
    Let’s Encrypt seems like it was a good and rewarding idea, but at the time
    it was a frustrating conclusion in many ways. It’s not an easy solution to
    commit to. It meant standing up a new organization, hiring at least a dozen
    people, understanding a lot of details about how to operate a CA, building
    some fairly intense technical systems, and setting all of it up to operate
    for decades. Many of us wanted to work on this interesting problem for a
    bit, solve it or at least put a big dent in it, and then move on to other
    interesting problems. I don’t know about you, but I certainly didn’t dream
    about building and operating a CA when I was younger.
  </p>

  <p>
    It needed to be done though, so we got to work. We built a great team that
    initially consisted of mostly volunteers and very few staff. Over time that
    ratio reversed itself such that most people working on Let’s Encrypt on a
    daily basis are staff, but we’re fortunate to continue to have a vibrant
    community of volunteers who do work ranging from translating our website and
    providing assistance on our community forums, to maintaining the dozens
    (maybe hundreds?) of client software options out there.
  </p>

  <p>
    Today there are just 11 engineers working on Let’s Encrypt, as well as a
    small team handling fundraising, communication, and administrative tasks.
    That’s not a lot of people for an organization serving hundreds of millions
    of websites in every country on the globe, subject to a fairly intense set
    of industry rules, audits, and high expectations for security and
    reliability. The team is preparing to serve as many as 1 billion websites.
    When that day comes to pass the team will be larger, but probably not much
    larger. Efficiency is important to us, for a couple of reasons. The first is
    principle - we believe it’s our obligation to do the most good we can with
    every dollar entrusted to us. The second reason is necessity - it’s not easy
    to raise money, and we need to do our best to accomplish our mission with
    what’s available to us.
  </p>

  <p>
    It probably doesn’t come as a surprise to anyone here at Real World Crypto
    that ease of use was critical to any success we’ve had in applying
    cryptography more widely. Let’s Encrypt has a fair amount of internal
    complexity, but we expose users to as little of that as possible. Ideally
    it’s a fully automated and forgettable background task even to the people
    running servers.
  </p>

  <p>
    The fact that Let’s Encrypt is free is a huge factor in ease of use. It
    isn’t even about how much money people might be willing or able to pay, but
    any financial transaction requirement would make it impossible to fully
    automate our service. At some point someone would have to get a credit card
    and manage payment information. That task ranges in complexity from finding
    your wallet to obtaining corporate approval. The existence of a payment in
    any amount would also greatly limit our geographic availability because of
    sanctions and financial logistics.
  </p>

  <p>
    All of these factors led to the decision to form
    <a href="https://abetterinternet.org/">ISRG, a nonprofit entity</a> to
    support Let’s Encrypt. Our ability to provide this global, reliable service
    is all thanks to the people and companies who believe in TLS everywhere and
    have supported us financially. I’m so grateful to all of our contributors
    for helping us.
  </p>

  <p>
    Our service is pretty easy to use under normal circumstances, but we’re not
    done yet. We can be better about handling exceptional circumstances such as
    large revocation events. Resiliency is good. Automated, smooth resiliency is
    even better. That’s why I’m so excited about the
    <a href="https://datatracker.ietf.org/doc/rfc9773/"
      >ACME Renewal Info</a
    >
    work we’re doing in the IETF now, which will go into production over the
    next year.
  </p>

  <p>
    Everyone here has heard it before, but I’ll say it again because we can’t
    afford to let it slip our minds. Ease of use is critical for widespread
    adoption of real world cryptography. As we look toward the future of ISRG,
    our new projects will have ease of use at their core. In fact, you can learn
    about our newest project related to privacy-preserving measurement at two of
    this afternoon’s sessions! Getting ease of use right is not just about the
    software though. It’s a sort of pas de trois, a dance for three, between
    software, legal, and finance, in order to achieve a great outcome.
  </p>

  <p>Thank you again. This recognition means so much to us.</p>
</div>

<hr class="h-px my-10 border-0 bg-[#e8e8e8]" />
<div>
  <h4>Supporting Let’s Encrypt</h4>
  <p>
    As a nonprofit project, 100% of our funding comes from contributions from
    our community of users and supporters. We depend on their support in order
    to provide our services for the public benefit. If your company or
    organization would like to
    <a href="https://www.abetterinternet.org/sponsor/">sponsor</a> Let’s Encrypt
    please email us at
    <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>. If you
    can support us with a
    <a href="https://letsencrypt.org/donate/">donation</a>, we ask that you make
    an individual contribution.
  </p>
</div>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2022/04/13/receiving-the-levchin-prize.html</guid>
      </item><item>
        <title>New Major Funding from the Ford Foundation</title>
        <link>https://letsencrypt.org/2022/02/25/ford-foundation.html</link>
        <pubDate>Fri, 25 Feb 2022 00:00:00 +0000</pubDate>
        <description><![CDATA[<div class="pull-quote-right">
  <blockquote class="blockquote">
    <span class="quote"></span>
    <div class="quote-text">
      <p class="quote-text-value">ISRG's pragmatic, public-interest approach to Internet security has fundamentally changed the web at an astonishing scale and pace.</p>
      <footer class="blockquote-footer"><span class="blockquote-mdash">&mdash;</span><cite title="Source Title">Michael Brennan</cite>, Ford Foundation</footer>
    </div>
  </blockquote>
</div>
<p>The Internet has considerable potential to help build a more just, equitable, and sustainable world for all people. Yet for everyone online—and indeed the billions not yet online—barriers to secure and privacy-respecting communication remain pervasive.</p>
<p>ISRG was founded in 2013 to find and eliminate these barriers. Today, we’re proud to announce a $1M grant from the <a href="https://www.fordfoundation.org/" target="_blank" rel="noopener noreferrer">Ford Foundation</a> to continue our efforts.</p>
<p>Our first project, Let’s Encrypt, leverages technology whose foundation has existed for nearly three decades—TLS certificates for securely communicating information via HTTP. Yet even for people well-versed in technology, adopting TLS proved daunting.</p>
<p>Before Let’s Encrypt, the growth rate for HTTPS page loads merely puttered along. As recently as 2013, just 25% of websites used HTTPS. In order for the Internet to reach its full potential, this glaring risk to people’s security and privacy needed to be mitigated.</p>
<p>Let’s Encrypt changed the paradigm. Today <a href="https://letsencrypt.org/stats/">81%</a> of website page loads use HTTPS. That means that you and the other 4.9 billion people online can leverage the Internet for your own pursuits with a greater degree of security and privacy than ever before.</p>
<p>But TLS adoption was just one hurdle. Much can be done to further improve the Internet’s most critical pieces of technology to be more secure; much can be done to further improve the privacy of everyone using the Internet today.</p>
<p><em>Building our efforts thanks to transformational support</em></p>
<p>Ford Foundation’s commitment recognizes that the Internet can be a technological tool to build a more just, equitable, and sustainable world, but that it will take organizations like ISRG to help build it.</p>
<p>“Ford Foundation is one of the most respected grantmaking institutions in the world,” Josh Aas, ISRG Executive Director, said. “We are proud that Ford believes in the impact we’ve created and the potential of our efforts to continue benefiting everyone using the Internet.”</p>
<p>This support, which began in 2021, will help ISRG continue to invest in Let’s Encrypt and our other projects, Prossimo and Divvi Up.</p>
<p>Launched in late 2020, <a href="https://www.memorysafety.org/">Prossimo</a> intends to move the Internet's most critical security-sensitive software infrastructure to memory safe code. Society pays the price for these vulnerabilities with privacy violations, staggering financial losses, denial of public services (e.g., hospitals, power grids), and human rights violations. Meaningful effort will be required to bring about such change, but the Internet will be around for a long time. There is time for ambitious efforts to pay off.</p>
<p><a href="https://www.abetterinternet.org/divviup/">Divvi Up</a> is a system for privacy-preserving metrics analysis. With Divvi Up, organizations can analyze and share data to further their aims without sacrificing their users’ privacy. Divvi Up is currently used for COVID-19 Exposure Notification apps and has processed over 14 billion metrics to aid Public Health Authorities to better hone their app to be responsive to their local populations.</p>
<p>&quot;ISRG's pragmatic, public-interest approach to Internet security has fundamentally changed the web at an astonishing scale and pace,” Michael Brennan of the Ford Foundation said. &quot;I believe their new projects have the same potential and I am eager to see what they turn their sights to next.&quot;</p>
<p>We’re grateful to Ford for their support of our efforts, and to all of you who have contributed time and resources to our projects. For more information on ISRG and our projects, take a read through our <a href="https://www.abetterinternet.org/documents/2021-ISRG-Annual-Report.pdf">2021 Annual Report</a>. 100% of ISRG’s funding comes from contributed sources. If you or your organization are interested in helping advance our mission, consider <a href="https://www.abetterinternet.org/sponsor/">becoming a sponsor</a>, making a <a href="https://www.abetterinternet.org/donate/">one-time contribution</a>, or reaching out with your idea on how you can help financially support our mission at <a href="mailto:sponsor@abetterinternet.org">sponsor@abetterinternet.org</a>.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2022/02/25/ford-foundation.html</guid>
      </item><item>
        <title>A Year-End Letter from our Executive Director</title>
        <link>https://letsencrypt.org/2021/12/16/ed-letter-2021.html</link>
        <pubDate>Thu, 16 Dec 2021 00:00:00 +0000</pubDate>
        <description><![CDATA[<p><em>This letter was originally published in our <a href="https://www.abetterinternet.org/annual-reports/">2021 annual report</a>.</em></p>
<p>We can do a lot to improve security and privacy on the Internet by taking existing ideas and applying them in ways that benefit the general public at scale. Our work certainly does involve some research, as our name implies, but the success that we’ve had in pursuing our mission largely comes from our ability to go from ideas to implementations that improve the lives of billions of people around the world.</p>
<p>Our first major project, <a href="https://letsencrypt.org/">Let’s Encrypt</a>, now helps to protect more than <a href="https://letsencrypt.org/stats/">260 million websites</a> by offering free and fully automated TLS certificate issuance and management. Since it launched in 2015, encrypted page loads have gone from under 40% to 92% in the U.S. and 83% globally.</p>
<p>We didn’t invent certificate authorities. We didn’t invent automated issuance and management. We refined those ideas and applied them in ways that benefit the general public at scale.</p>
<p>We launched our <a href="https://www.memorysafety.org/">Prossimo</a> project in late 2020. Our hope is that this project will greatly improve security and privacy on the Internet by making memory safety vulnerabilities in the Internet’s most critical software a thing of the past. We’re bringing a healthy dose of ambition to the table and we’re backing it up with effective strategies and strong partnerships.</p>
<p>Again, we didn’t invent any memory safe languages or techniques, and we certainly didn’t invent memory safety itself. We’re simply taking existing ideas and applying them in ways that benefit the general public at scale. We’re getting the work done.</p>
<p>With our latest project, <a href="https://www.abetterinternet.org/divviup/">Divvi Up</a> for Privacy Preserving Metrics (PPM), the core ideas are a bit newer than the ideas behind our other projects, but we didn’t invent them either. Over the past decade or so some bright people have come up with a way to resolve the tension between <em>wanting</em> to collect metrics about populations and <em>needing</em> to collect data about individuals.</p>
<p>We believe those ideas have matured enough that it’s time to deploy them to the public’s benefit. We started by building and <a href="https://www.abetterinternet.org/post/prio-services-for-covid-en/">deploying a PPM service</a> for Covid-19 Exposure Notification applications in late 2020, in partnership with Apple, Google, the Bill &amp; Melinda Gates Foundation and the Linux Foundation. We’re expanding that service so any application can collect metrics in a privacy-preserving way.</p>
<p>Being ready to bring ideas to life means a few different things.</p>
<p>We need to have an excellent engineering team that knows how to build services at scale. It’s not enough to just build something that works - the quality and reliability of our work needs to inspire confidence. People need to be able to rely on us.</p>
<p>We also need to have the experience, perspective, and capacity to effectively consider ideas. We are not an organization that “throws things at the wall to see what sticks.” Between our staff, our board of directors, our partners, and our community, we’re able to do a great job evaluating opportunities to understand technical feasibility, potential impact, and alignment with our public benefit mission—to reduce financial, technological, and educational barriers to secure communication over the Internet.</p>
<p>Administrative and communications capabilities are essential. From fundraising and accounting to legal and social media, our administrative teams exist in order to support and amplify the critical work that we do. We&rsquo;re proud to run a financially efficient organization that provides services for billions of people on only a few million dollars each year.</p>
<p>Finally, it means having the financial resources we need to function. As a nonprofit, 100% of our funding comes from charitable contributions from people like you and <a href="https://www.abetterinternet.org/sponsors/">organizations</a> around the world. But global impact doesn’t necessarily require million dollar checks: since 2015 tens of thousands of people have given to our work. They’ve made a case for <a href="https://www.abetterinternet.org/sponsor/">corporate sponsorship</a>, given through their DAFs, or set up recurring <a href="https://www.abetterinternet.org/donate/">donations</a>, sometimes to give $3 a month. That’s all added up to $17M that we’ve used to change the Internet for nearly everyone using it. I hope you’ll join these people and support us financially if you can.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2021/12/16/ed-letter-2021.html</guid>
      </item><item>
        <title>TLS Simply and Automatically for Europe’s Largest Cloud Customers</title>
        <link>https://letsencrypt.org/2021/10/28/tls-simply-and-automatically.html</link>
        <pubDate>Thu, 28 Oct 2021 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>OVHcloud, the largest hosting provider in Europe, has used Let’s Encrypt for TLS certificates since 2016. Since then, they’ve provisioned tens of millions of certificates for their shared hosting customers. We often get asked about how large integrations work and their best practices so this will be the first in a series of blog posts we’ll publish on the topic.</p>
<p><a href="https://ovhcloud.com/">OVHcloud</a> first started looking into using Let’s Encrypt certificates because the team saw a need for the protection provided by TLS for every customer (remember, way back five years ago, when that wasn’t just a thing everybody did?). “Our goal was to deliver TLS simply. We didn’t want to have to write a tutorial for our customers to upload a cert, but instead just click and it works,” said Guillaume Marchand, OVHcloud’s Technical Team Lead.</p>
<p>They considered building their own CA but determined the cost and complexity of doing so would be impractical. Instead, they built an ACME client to prepare for using Let’s Encrypt. It took about six months, “we simply followed the RFC and did a bit of reverse engineering of Certbot,” said Guillaume. In addition to a custom client, OVHcloud automated their Certificate Signing Request (CSR) process and certificate installation process.</p>
<p class="text-center"><img src="/images/2021.10.28-OVHcloud-schematic.png" alt="Schematic of how OVHcloud automatically and simply gets Let's Encrypt certificates"></p>
<p>Getting a TLS certificate is on the critical path to onboarding a shared hosting client, so monitoring is a big part of OVHcloud’s success with Let’s Encrypt. They set up monitoring at every step in the delivery process: requesting the certificate, asking for challenges, waiting for validation, and requesting certificate creation. They also keep an eye on how long it takes to get a certificate (“it’s really fast”). OVHcloud also monitors our <a href="https://letsencrypt.status.io/">status page</a> to stay apprised of our operational status.</p>
<p>Over 10,000 certificates are issued from Let’s Encrypt to OVHcloud every day. As the company continues to expand into North America, they predict that number will grow. The initial and ongoing work done by the OVHcloud team ensures that TLS will be a simple and reliable aspect of their service.</p>
<p>OVHcloud is a longtime sponsor of ISRG so we’d like to close by thanking them for not just being great technical collaborators, but also financial supporters.</p>
<p>Check out our blog post about <a href="https://letsencrypt.org/2021/09/14/speed-at-scale-shopify.html">how Shopify uses Let’s Encrypt certificates</a> for another example of how our certificates are used in the enterprise.</p>
<h2 id="supporting-let-s-encrypt">Supporting Let’s Encrypt</h2>
<p>As a nonprofit project, 100% of our funding comes from contributions from our community of users and supporters. We depend on their support in order to provide our services for the public benefit. If your company or organization would like to <a href="https://www.abetterinternet.org/sponsor/">sponsor</a> Let’s Encrypt please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>. If you can support us with a <a href="https://letsencrypt.org/donate/">donation</a>, we ask that you make an individual contribution.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2021/10/28/tls-simply-and-automatically.html</guid>
      </item><item>
        <title>Making the Web safer and more secure for everyone</title>
        <link>https://letsencrypt.org/2021/10/21/celebrating-encryption-globally.html</link>
        <pubDate>Thu, 21 Oct 2021 00:00:00 +0000</pubDate>
        <description><![CDATA[<blockquote>
<p>The Internet Society has supported our work toward a 100% encrypted Web since before we’d even issued our first certificate. Their commitment to helping us execute our vision has been a substantial help over the years. Today, I’m excited to invite Christine Runnegar, Senior Director at The Internet Society and member of ISRG’s Board of Directors, to share her thoughts.</p>
<p>-Josh Aas, Executive Director, ISRG &amp; Let’s Encrypt</p></blockquote>
<p>Today, across the world, communities, organizations, and individuals are celebrating <a href="https://ged.globalencryption.org/">Global Encryption Day</a>. Organized by the Global Encryption Coalition (GEC), it’s a day to take stock of the crucial role that encryption plays in securing our communications on the Internet.</p>
<p>The Internet Society is a GEC Steering Committee member because access to encryption is a key tool for us to realize our mission of keeping the Internet a force for good. That’s why the Internet Society is also a proud financial sponsor of <a href="https://www.abetterinternet.org/about/">Internet Security Research Group (ISRG)</a>, which founded and operates Let’s Encrypt. Let’s Encrypt provides digital certificates to more than 260 million websites, making a more secure and privacy-respecting Web for users all over the world. In just five years, the percentage of Web pages loaded over HTTPS has risen from under 50% to more than 85% and climbing, principally because of the community that has coalesced around the importance of encryption everywhere. Encrypted Web traffic protects the confidentiality and integrity of information users share with, or learn from, websites. It makes us all safer online.</p>
<p>Let’s Encrypt is a great success story, and an outstanding example of how supporting public interest infrastructure, such as a certificate authority operated for the public’s benefit, helps ensure everyone has access to the benefits of encryption.</p>
<p>We depend on contributions from our community of users and supporters in order to provide our services. If your company or organization would like to <a href="https://www.abetterinternet.org/sponsor/">sponsor</a> Let’s Encrypt please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>. We ask that you make an <a href="https://letsencrypt.org/donate/">individual contribution</a> if it is within your means.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2021/10/21/celebrating-encryption-globally.html</guid>
      </item><item>
        <title>Resources for Certificate Chaining Help</title>
        <link>https://letsencrypt.org/2021/10/01/cert-chaining-help.html</link>
        <pubDate>Fri, 01 Oct 2021 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>As planned, the DST Root CA X3 has <a href="https://letsencrypt.org/docs/dst-root-ca-x3-expiration-september-2021/">expired</a> and we&rsquo;re now using our own ISRG Root X1 for trust. We used a cross-sign with DST Root CA X3 to gain broad trust for our certificates when we were just starting out. Now our own root is widely trusted.</p>
<p>For most websites, it was just another day on the Internet, but inevitably with such a big change some sites and configurations have issues. Our <a href="https://letsencrypt.org/docs/dst-root-ca-x3-expiration-september-2021/">overview of the planned expiration</a> is here. You can read about <a href="https://letsencrypt.org/2020/12/21/extending-android-compatibility.html">what we&rsquo;ve done to make the process smoother</a>. Most problems can be solved by updating the software on the machine that is having trouble.</p>
<p>You may also find these links helpful:</p>
<p><a href="https://letsencrypt.org/docs/certificate-compatibility/">Our certificate compatibility page.</a></p>
<p><a href="https://openssl-library.org/post/2021-09-13-letsencryptrootcertexpire/">Workarounds for OpenSSL 1.0.2.</a></p>
<p>Whenever there is a significant change to our API, we post in the <a href="https://community.letsencrypt.org/c/api-announcements/18">API Announcements</a> category in our community forum. Sign in and click the bell for notifications to be sent to your email! If you want to hear even more from Let’s Encrypt and the nonprofit team behind it, <a href="https://outreach.abetterinternet.org/l/1011011/2023-02-16/6l51">subscribe to our newsletter</a>. You’ll only receive a handful of emails each year.</p>
<p>We (and our community) are here for you! If you have any questions about this change, search on our community forum or post on the <a href="https://community.letsencrypt.org/t/help-thread-for-dst-root-ca-x3-expiration-september-2021/149190/361">thread</a> we have to help you with this very topic.</p>
<h2 id="supporting-let-s-encrypt">Supporting Let’s Encrypt</h2>
<p>As a nonprofit project, 100% of our funding comes from contributions from our community of users and supporters. We depend on their support in order to provide our services for the public benefit. If your company or organization would like to <a href="https://www.abetterinternet.org/sponsor/">sponsor</a> Let’s Encrypt please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>. If you can support us with a <a href="https://letsencrypt.org/donate/">donation</a>, we ask that you make an individual contribution.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2021/10/01/cert-chaining-help.html</guid>
      </item><item>
        <title>Speed at scale: Let’s Encrypt serving Shopify’s 4.5 million domains</title>
        <link>https://letsencrypt.org/2021/09/14/speed-at-scale-shopify.html</link>
        <pubDate>Tue, 14 Sep 2021 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>What does it take to manage TLS certificates at a leading e-commerce company? Before Let’s Encrypt, it took the security team at Shopify weeks to manually obtain certificates for their websites. Doing this once is unpleasant enough, but if an incident were to happen that necessitated renewing all of their certificates, Shopify estimated it would take them 100+ days without automated issuance and management.</p>
<p>Today, Let’s Encrypt provides TLS for 4.5 million Shopify domains. We sat down with Charles Barbier, Development Manager at Shopify, to hear why Let’s Encrypt is their choice for reliable, free, and automated TLS at scale.</p>
<p>“In 2016, the TLS team started transitioning all of our merchants&rsquo; stores to HTTPS through Let’s Encrypt,” Charles said. “And when we started exploring the concept a few years earlier, it was a daunting task.”  Implementing TLS for 680,000+ domains wasn’t just daunting, Charles and the team needed automated management, something that simply didn’t exist. “We didn’t want to have TLS be the merchant’s responsibility,” Charles said.</p>
<p>Back in 2016, although Let’s Encrypt had been making noise, it wasn’t Shopify’s first choice for a CA. “We ended up going with a different option that turned out to be problematic because the API was so slow,” Charles said. “We did some napkin math and realized it was going to take us around 100 days to provision all of our certs for our merchants. If this solution had been just for regular issuance, it would have been fine, but an emergency would be very problematic.”</p>
<p>That realization led Charles and the team to give Let’s Encrypt a try, making them one of the first single Let’s Encrypt subscribers to request and provision certs at a X00,000 scale. “We were able to roll out all of our domains in a couple of hours,” Charles said. “And to be frank, I think it was our ordering process that caused issuance to take even that long. It was very encouraging.”</p>
<p>The speed of Let’s Encrypt helped Shopify realize their goal of provisioning certs for all of their domains and automating management. Since Let’s Encrypt uses the <a href="https://datatracker.ietf.org/doc/html/rfc8555">IETF-standardized ACME protocol</a>, Shopify felt confident that if they needed to, they could roll over to a different ACME CA. “We knew in the future, if things went well with the ACME standard, we’d be able to add a different ACME provider with the exact same implementation,” Charles said.</p>
<p>Of course, “things going well” doesn’t just mean technically. It means ensuring the nonprofit behind Let’s Encrypt is sound as well—which is why Shopify has financially supported Let’s Encrypt since they began using it in 2016. This year, they increased their support. “For us, using Let’s Encrypt has been a great experience,” Charles said.</p>
<p>Today, Let’s Encrypt certificates cover 4.5 million domains for Shopify. That means a more secure and privacy-respecting Web for all of Shopify’s merchants who, in 2020, created $307 billion in economic impact around the world. And it means a more secure Web for everyone visiting and engaging with a Shopify merchant.</p>
<p>We’re proud to serve Shopify with a reliable, speedy, and free service, and grateful for their longtime support of our work by being a sponsor. Together, we’re helping bolster a Web that’s free, open and more secure for everyone, everywhere.</p>
<p>We depend on contributions from our community of users and supporters in order to provide our services. If your company or organization would like to <a href="https://www.abetterinternet.org/sponsor/">sponsor</a> Let’s Encrypt please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>. We ask that you make an <a href="https://letsencrypt.org/donate/">individual contribution</a> if it is within your means.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2021/09/14/speed-at-scale-shopify.html</guid>
      </item><item>
        <title>Preparing to Issue 200 Million Certificates in 24 Hours</title>
        <link>https://letsencrypt.org/2021/02/10/200m-certs-24hrs.html</link>
        <pubDate>Wed, 10 Feb 2021 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>On a normal day Let’s Encrypt issues nearly <a href="https://letsencrypt.org/stats/">two million certificates</a>. When we think about what essential infrastructure for the Internet needs to be prepared for though, we’re not thinking about normal days. We want to be prepared to respond as best we can to the most difficult situations that might arise. In some of the worst scenarios, we might want to re-issue all of our certificates in a 24 hour period in order to avoid widespread disruptions. That means being prepared to issue 200 million certificates in a day, something no publicly trusted CA has ever done.</p>
<p>We recently completed most of the work and investments needed to issue 200 million certificates in a day and we thought we’d let people know what was involved. All of this was made possible by our <a href="https://letsencrypt.org/sponsors/">sponsors</a> and funders, including major hardware contributions from <a href="https://www.cisco.com/">Cisco</a>, <a href="https://www.thalesgroup.com/en">Thales</a>, and <a href="https://www.fortinet.com/">Fortinet</a>.</p>
<h2 id="scenarios">Scenarios</h2>
<p>Security and compliance events are a certainty in our industry. We obviously try to minimize them, but since we anticipate they will happen, we spend a lot of time preparing to respond in the best ways possible.</p>
<p>In February of 2020 <a href="https://community.letsencrypt.org/t/2020-02-29-caa-rechecking-bug/114591/">a bug affecting our compliance</a> caused us to need to revoke and replace three million active certificates. That was approximately 2.6% of all active certificates.</p>
<p>What if that bug had affected all of our certificates? That’s more than 150 million certificates covering more than 240 million domains. What if it had also been a more serious bug, requiring us to revoke and replace all certificates within 24 hours? That’s the kind of worst case scenario we need to be prepared for.</p>
<p>To make matters worse, during an incident it takes some time to evaluate the problem and make decisions, so we would be starting revocation and reissuance somewhat after the beginning of the 24-hour clock. That means we would actually have less time once the momentous decision has been made to revoke and replace 150 million or more certificates.</p>
<h2 id="infrastructure-improvements">Infrastructure Improvements</h2>
<p>After reviewing our systems, we determined that there were four primary bottlenecks that would prevent us from replacing 200 million certificates in a day. Database performance, internal networking speed, cryptographic signing module (HSM) performance, and bandwidth.</p>
<h3 id="database-performance">Database Performance</h3>
<p>Let’s Encrypt has a primary certificate authority database at the heart of the service we offer. This tracks the status of certificate issuance and the associated accounts. It is write heavy, with plenty of reads as well. At any given time a single database server is the writer, with some reads directed at identical machines with replicas. The single writer non-clustered strategy helps with consistency and reduces complexity, but it means that writes and some reads must operate within the performance constraints of a single machine.</p>
<p>Our previous generation of database servers had dual Intel Xeon E5-2650 v4 CPUs, 24 physical cores in total. They had 1TB memory with 24 3.8TB SSDs connected via SATA in a RAID 10 configuration. These worked fine for daily issuance but would not be able to handle replacing all of our certificates in a single day.</p>
<p>We have replaced them with <a href="https://letsencrypt.org/2021/01/21/next-gen-database-servers.html">a new generation of database server</a> from Dell featuring dual AMD EPYC 7542 CPUs, 64 physical cores in total. These machines have 2TB of faster RAM. Much faster CPUs and double the memory is great, but the really interesting thing about these machines is that the EPYC CPUs provide 128 PCIe4 lanes each. This means we could pack in 24 6.4TB NVME drives for massive I/O performance. There is no viable hardware RAID for NVME, so we’ve switched to ZFS to provide the data protection we need.</p>
<h3 id="internal-networking">Internal Networking</h3>
<p>Let’s Encrypt infrastructure was originally built with 1G copper networking. Between bonding multiple connections for 2G performance, and use of the very limited number of 10G ports available on our switches, it served us pretty well until 2020.</p>
<p>By 2020 the volume of data we were moving around internally was too much to handle efficiently with 1G copper. Some normal operations were significantly slower than we’d like (e.g. backups, replicas), and during incidents the 1G network could cause significant delays in our response.</p>
<p>We originally looked into upgrading to 10G, but learned that upgrading to 25G fiber wasn’t much more expensive. Cisco ended up generously donating most of the switches and equipment we needed for this upgrade, and after replacing a lot of server NICs Let’s Encrypt is now running on a 25G fiber network!</p>
<p>Funny story - back in 2014 Cisco had donated really nice 10G fiber switches to use in building the original Let’s Encrypt infrastructure. Our cabinets at the time had an unusually short depth though, and the 10G switches didn’t physically fit. We had to return them for physically smaller 1G switches. 1G seemed like plenty at the time. We have since moved to new cabinets with standard depth!</p>
<h3 id="hsm-performance">HSM Performance</h3>
<p>Each Let’s Encrypt data center has a pair of Luna HSMs that sign all certificates and their OCSP responses. If we want to revoke and reissue 200 million certificates, we need the Luna HSMs to perform the following cryptographic signing operations:</p>
<ul>
<li>200 million OCSP response signatures for revocation</li>
<li>200 million certificate signatures for replacement certificates</li>
<li>200 million OCSP response signatures for the new certificates</li>
</ul>
<p>That means we need to perform 600 million cryptographic signatures in 24 hours or less, with some performance overhead to account for request clustering.</p>
<p>We need to assume that during incidents we might only have one data center online, so when we’re thinking about HSM performance we’re thinking about what we can do with just one pair. Our previous HSMs could perform approximately 1,100 signing operations each per second, 2,200 between the pair. That’s 190,080,000 signatures in 24 hours, working at full capacity. That isn&rsquo;t enough.</p>
<p>In order to get to where we need to be Thales generously donated new <a href="https://cpl.thalesgroup.com/encryption/hardware-security-modules">HSMs</a> with about 10x the performance - approximately 10,000 signing operations per second, 20,000 between the pair. That means we can now perform 864,000,000 signing operations in 24 hours from a single data center.</p>
<h3 id="bandwidth">Bandwidth</h3>
<p>Issuing a certificate is not particularly bandwidth intensive, but during an incident we typically use a lot more bandwidth for systems recovery and analysis. We move large volumes of logs and other files between data centers and the cloud for analysis and forensic purposes. We may need to synchronize large databases. We create copies and additional back-ups. If the connections in our data centers are slow, it slows down our response.</p>
<p>After determining that data center connection speed could add significantly to our response time, we increased bandwidth accordingly. Fortinet helped provide hardware that helps us protect and manage these higher capacity connections.</p>
<h2 id="api-extension">API Extension</h2>
<p>In order to get all those certificates replaced, we need an efficient and automated way to notify ACME clients that they should perform early renewal. Normally ACME clients renew their certificates when one third of their lifetime is remaining, and don&rsquo;t contact our servers otherwise. We <a href="https://mailarchive.ietf.org/arch/msg/acme/b-RddSX8TdGYvO3f9c7Lzg6I2I4/">published a draft extension to ACME</a> last year that describes a way for clients to regularly poll ACME servers to find out about early-renewal events. We plan to polish up that draft, implement, and collaborate with clients and large integrators to get it implemented on the client side.</p>
<h2 id="supporting-let-s-encrypt">Supporting Let’s Encrypt</h2>
<p>We depend on contributions from our community of users and supporters in order to provide our services. If your company or organization would like to <a href="https://www.abetterinternet.org/sponsor/">sponsor</a> Let’s Encrypt please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>. We ask that you make an <a href="https://letsencrypt.org/donate/">individual contribution</a> if it is within your means.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2021/02/10/200m-certs-24hrs.html</guid>
      </item><item>
        <title>The Next Gen Database Servers Powering Let&#39;s Encrypt</title>
        <link>https://letsencrypt.org/2021/01/21/next-gen-database-servers.html</link>
        <pubDate>Thu, 21 Jan 2021 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Let’s Encrypt helps to protect a huge portion of the Web by providing TLS certificates to more than <a href="https://letsencrypt.org/stats/">235 million websites</a>. A database is at the heart of how Let’s Encrypt manages certificate issuance. If this database isn’t performing well enough, it can cause API errors and timeouts for our subscribers. Database performance is the single most critical factor in our ability to scale while meeting service level objectives. In late 2020, we upgraded our database servers and we’ve been very happy with the results.</p>
<h2 id="what-exactly-are-we-doing-with-these-servers">What exactly are we doing with these servers?</h2>
<p>Our CA software, <a href="https://github.com/letsencrypt/boulder">Boulder</a>, uses MySQL-style schemas and queries to manage subscriber accounts and the entire certificate issuance process. It&rsquo;s designed to work with a single MySQL, MariaDB, or Percona database. We currently use MariaDB, with the InnoDB database engine.</p>
<p>We run the CA against a single database in order to minimize complexity. Minimizing complexity is good for security, reliability, and reducing maintenance burden. We have a number of replicas of the database active at any given time, and we direct some read operations to replica database servers to reduce load on the primary.</p>
<p>One consequence of this design is that our database machines need to be pretty powerful. Eventually we may need to shard or break the single database into multiple databases, but hardware advancements have allowed us to avoid that so far.</p>
<h2 id="hardware-specifications">Hardware Specifications</h2>
<p>The previous generation of database hardware was powerful but it was regularly being pushed to its limits. For the next generation, we wanted to more than double almost every performance metric in the same 2U form factor. In order to pull that off, we needed AMD EPYC chips and Dell’s <a href="https://www.dell.com/en-us/work/shop/cty/pdp/spd/poweredge-r7525/">PowerEdge R7525</a> was ideal. Here are the specifications:</p>
<div class="flex flex-col items-center">
<table>
	<tr>
		<td class="p-[10px]"></td>
		<td class="p-[10px]"><b>Previous Generation</b></td>
		<td class="p-[10px]"><b>Next Generation</b></td>
	</tr>
	<tr>
		<td class="p-[10px] align-top"><b>CPU</b></td>
		<td class="p-[10px]">2x Intel Xeon E5-2650<br>Total 24 cores / 48 threads</td>
		<td class="p-[10px]">2x <a href="https://www.amd.com/en/products/cpu/amd-epyc-7452">AMD EPYC 7542</a><br>Total 64 cores / 128 threads
</td>
	</tr>
	<tr>
		<td class="p-[10px] align-top"><b>Memory</b></td>
		<td class="p-[10px]">1TB 2400MT/s</td>
		<td class="p-[10px]">2TB 3200MT/s</td>
	</tr>
	<tr>
		<td class="p-[10px] align-top"><b>Storage</b></td>
		<td class="p-[10px]">24x 3.8TB Samsung PM883<br>SATA SSD<br>560/540 MB/s read/write</td>
		<td class="p-[10px]">24x 6.4TB Intel P4610<br>NVMe SSD<br>3200/3200 MB/s read/write</td>
	</tr>
</table>
</div>
<figure class="flex flex-col items-center text-center">
<img src="/images/2021.01.21-next-gen-db-chassis.jpg" width="600" alt="Dell PowerEdge R7525 Chassis">
<figcaption>Dell PowerEdge R7525 internals. The two silver rectangles in the middle are the CPUs. The RAM sticks, each 64GB, are above and below the CPUs. The 24x NVMe drives are in the front of the server, on the far left.</figcaption>
</figure>
<p>By going with AMD EPYC, we were able to get 64 physical CPU cores while keeping clock speeds high: 2.9GHz base with 3.4GHz boost. More importantly, EPYC provides 128 PCIe v4.0 lanes, which allows us to put 24 NVMe drives in a single machine. NVMe is incredibly fast (~5.7x faster than the SATA SSDs in our previous-gen database servers) because it uses PCIe instead of SATA. However, PCIe lanes are typically very limited: modern consumer chips typically have only 16 lanes, and Intel’s Xeon chips have 48. By providing 128 PCI lanes per chip (v4.0, no less), AMD EPYC has made it possible to pack large numbers of NVMe drives into a single machine. We’ll talk more about NVMe later.</p>
<h2 id="performance-impact">Performance Impact</h2>
<p>We’ll start by looking at our median time to process a request because it best reflects subscribers’ experience. Before the upgrade, we turned around the median API request in ~90 ms. The upgrade decimated that metric to ~9 ms!</p>
<p class="text-center"><img src="/images/2021.01.21-next-gen-db-api-latency.png" alt="API Latency"></p>
<p>We can clearly see how our old CPUs were reaching their limit. In the week before we upgraded our primary database server, its CPU usage (from /proc/stat) averaged over 90%:</p>
<p class="text-center"><img src="/images/2021.01.21-next-gen-db-cpu-before.png" alt="CPU Usage Before Upgrade"></p>
<p>The new AMD EPYC CPUs sit at about 25%. You can see in this graph where we promoted the new database server from replica (read-only) to primary (read/write) on September 15.</p>
<p class="text-center"><img src="/images/2021.01.21-next-gen-db-cpu-after.png" alt="CPU Usage After Upgrade"></p>
<p>The upgrade greatly reduced our overall database latency. The average query response time (from INFORMATION_SCHEMA) used to be ~0.45ms.</p>
<p class="text-center"><img src="/images/2021.01.21-next-gen-db-db-latency-before.png" alt="Database Latency Before Upgrade"></p>
<p>Queries now average <em>three times faster</em>, about 0.15ms.</p>
<p class="text-center"><img src="/images/2021.01.21-next-gen-db-db-latency-after.png" alt="Database Latency After Upgrade"></p>
<h2 id="openzfs-and-nvme">OpenZFS and NVMe</h2>
<p>NVMe drives are becoming increasingly popular because of their incredible performance. Up until recently, though, it was nearly impossible to get many of them in a single machine because NVMe uses PCIe lanes. Those were very limited: Intel’s Xeon processors come with just 48 PCIe v3 lanes, and a number of those are used up by the chipset and add-on cards such as network adapters and GPUs. You can’t fit many NVMe drives in the remaining lanes.</p>
<p>AMD’s latest generation of EPYC processors come with 128 PCIe lanes - more than double what Intel offers - and they’re PCIe v4! This is enough to pack a 2U server full of NVMe drives (24 in our case).</p>
<p>Once you have a server full of NVMe drives, you have to decide how to manage them. Our previous generation of database servers used hardware RAID in a RAID-10 configuration, but there is no effective hardware RAID for NVMe, so we needed another solution. One option was software RAID (Linux mdraid), but we got several recommendations for OpenZFS and decided to give it a shot. We’ve been very happy with it!</p>
<p>There wasn’t a lot of information out there about how best to set up and optimize OpenZFS for a pool of NVMe drives and a database workload, so we want to share what we learned. You can find detailed information about our setup in <a href="https://github.com/letsencrypt/openzfs-nvme-databases">this GitHub repository</a>.</p>
<h2 id="conclusion">Conclusion</h2>
<p>This database upgrade was necessary as more people rely on Let’s Encrypt for the security and privacy that TLS/SSL provides. The equipment is quite expensive and it was a sizable undertaking for our SRE team to plan and execute the transition, but we gained a lot through the process.</p>
<h2 id="support-let-s-encrypt">Support Let&rsquo;s Encrypt</h2>
<p>We depend on contributions from our supporters in order to provide our services. If your company or organization would like to <a href="https://www.abetterinternet.org/sponsor/">sponsor</a> Let’s Encrypt please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>. We ask that you make an <a href="https://letsencrypt.org/donate/">individual contribution</a> if it is within your means.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2021/01/21/next-gen-database-servers.html</guid>
      </item><item>
        <title>A Year-End Letter from the Executive Director of Let&#39;s Encrypt and ISRG</title>
        <link>https://letsencrypt.org/2020/12/28/executive-director-letter.html</link>
        <pubDate>Mon, 28 Dec 2020 00:00:00 +0000</pubDate>
        <description><![CDATA[<blockquote>
<p>This letter was originally published in our <a href="https://www.abetterinternet.org/annual-reports/">2020 annual report</a>.</p></blockquote>
<p>ISRG’s first project, Let’s Encrypt, has been wildly successful. We’re now helping to secure <a href="https://letsencrypt.org/stats/">more than 225 million websites</a> and the Web is making great progress towards 100% HTTPS. We’ve put in a lot of hard work and dealt with some challenges along the way, but at a high level the outlook is quite sunny. I’m incredibly proud to share some of what our organization has accomplished in 2020.</p>
<p>While I’m deeply appreciative of being in this position today, I don’t let it distract me, or our fantastic Board of Directors, from thinking diligently about the risks on the road ahead. A big part of our job is to look into the future, see threats and challenges, and prepare to face them as best we can. I’m sometimes asked what I view as the biggest threat to our organization and our ability to pursue our mission and my answer is simple: being taken for granted.</p>
<p>When digital security and privacy is your goal, ease of use has to be your focus. When we examine why real world systems aren’t secure, it usually isn’t because we don’t have the technological means to secure them. The problem is almost always that the solutions are not easy enough to use, either for implementers or consumers.</p>
<p>HTTPS has been around since the mid-90s but uptake was abysmally slow because SSL/TLS certificates weren’t easy to get or manage. Let’s Encrypt made getting and managing certificates easy and as a result HTTPS adoption rates shot up. Critically, the answer wasn’t to get people to think more about their certificates—we needed to make it possible for people to spend much less time thinking about certificates. Ideally we’d be invisible—server software should just get and manage certificates automatically.</p>
<p>Our next project after Let’s Encrypt is going live shortly: <a href="https://divviup.org/">Divvi Up</a>. It’s a system for collecting digital metrics that allows organizations to collect the information they need without any entity having the ability to access any individual user’s data. Much like Let’s Encrypt, it protects people without them having to know anything about it.</p>
<p>Despite 2020 being a year of unprecedented, global challenges, ISRG is well positioned for the years ahead. Our current momentum is possible through new major in-kind donations, nearly 90% of our existing sponsors renewing their support for 2020, funding from the Ford Foundation and the Bill &amp; Melinda Gates Foundation, and by welcoming new major sponsors, including AWS, Thales, and Avast.</p>
<p>When your strategy as a nonprofit is to get out of the way, to offer services that people don’t need to think about, you’re running a real risk that you’ll eventually be taken for granted. There is a tension between wanting your work to be invisible and the need for recognition of its value. If people aren’t aware of how valuable our services are then we may not get the support we need to continue providing them.</p>
<p>How are we going to mitigate this risk? The most important thing we can do is continue to communicate effectively with people who are in a position to understand our work and support it. The most important things you can do as a supporter include being an advocate for your company sponsoring us, making an individual donation, or going over this annual report with a few people that you think should know more about us.</p>
<p>On behalf of the hundreds of millions of people benefiting from Let’s Encrypt around the world and our team of sixteen dedicated to this work, thank you for your support.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2020/12/28/executive-director-letter.html</guid>
      </item><item>
        <title>Extending Android Device Compatibility for Let&#39;s Encrypt Certificates</title>
        <link>https://letsencrypt.org/2020/12/21/extending-android-compatibility.html</link>
        <pubDate>Mon, 21 Dec 2020 00:00:00 +0000</pubDate>
        <description><![CDATA[<blockquote>
<p><strong>Update, May 13, 2021</strong></p>
<p>Please visit <a href="https://community.letsencrypt.org/t/production-chain-changes/150739">this post</a> on our community forum for the latest information about chain changes as some information about the changes and dates in this blog post are outdated.</p></blockquote>
<p>We’re happy to announce that we have developed a way for older Android devices to retain their ability to visit sites that use Let&rsquo;s Encrypt certificates after our cross-signed intermediates expire. We are no longer planning any changes in January that may cause compatibility issues for Let’s Encrypt subscribers.</p>
<p>A recurring theme in <a href="https://letsencrypt.org/2020/11/06/own-two-feet.html">our posts</a> about our upcoming chain switch has been our concern over the effects on users of Android operating systems prior to 7.1.1, whose devices don’t trust our ISRG Root X1. Thanks to some innovative thinking from our community and our wonderful partners at IdenTrust, we now have a solution that allows us to maintain wide compatibility. Critical to our mission as a nonprofit is to help create a more secure and privacy-respecting Web for as many people as possible. This work brings us closer to that goal.</p>
<p>IdenTrust has agreed to issue a 3-year cross-sign for our ISRG Root X1 from their DST Root CA X3. The new cross-sign will be somewhat novel because it extends beyond the expiration of DST Root CA X3. This solution works because Android intentionally does not enforce the expiration dates of certificates used as trust anchors. ISRG and IdenTrust reached out to our auditors and root programs to review this plan and ensure there weren’t any compliance concerns.</p>
<p>As such, we will be able to provide subscribers with a chain which contains both ISRG Root X1 and DST Root CA X3, ensuring uninterrupted service to all users and avoiding the potential breakage we have been concerned about.</p>
<p>We will not be performing our previously-planned chain switch on January 11th, 2021. Instead, we will be switching to provide this new chain by default in late January or early February. The transition should have no impact on Let’s Encrypt subscribers, much like our switch to our R3 intermediate earlier this month.</p>
<p class="text-center"><img src="/images/2020.12.21-android-compat-cert-chain.png" alt="Let's Encrypt Issuance Chains" width="600"></p>
<p>Some additional technical details follow.</p>
<p><strong>I’m an ACME client developer, what do I need to do?</strong> If your client handled the X3 to R3 transition smoothly, then you shouldn’t need to take action. Ensure that your client correctly uses the intermediate certificate provided by the ACME API at the end of issuance, and doesn’t retrieve intermediates by other means (e.g. hardcoding them, reusing what is on disk already, or fetching from AIA URLs).</p>
<p><strong>I’m a Let’s Encrypt subscriber, what do I need to do?</strong> In the vast majority of cases, nothing. If you want to double check, please ensure that your ACME client is up-to-date.</p>
<p><strong>I use an old Android device, what do I need to do?</strong> Nothing! We’re trying to ensure that this change is completely invisible to end-users.</p>
<p><strong>What exactly is changing?</strong> Today, when a subscriber fetches their certificate from our API, we provide the following chain by default:
Subscriber Certificate &lt; &ndash; R3 &lt; &ndash; DST Root CA X3
After this change, we will instead provide this chain by default:
Subscriber Certificate &lt; &ndash; R3 &lt; &ndash; ISRG Root X1 &lt; &ndash; DST Root CA X3
This does mean that the default chain we provide to subscribers will be larger than before, because it contains two intermediates instead of just one. This will make TLS handshakes larger and slightly less efficient, but the tradeoff is worthwhile for the extra compatibility.</p>
<p><strong>But isn’t DST Root CA X3 expiring?</strong> The self-signed certificate which represents the DST Root CA X3 keypair is expiring. But browser and OS root stores don’t contain certificates per se, they contain “trust anchors”, and the standards for verifying certificates allow implementations to choose whether or not to use fields on trust anchors. Android has intentionally chosen not to use the notAfter field of trust anchors. Just as our ISRG Root X1 hasn’t been added to older Android trust stores, DST Root CA X3 hasn’t been removed. So it can issue a cross-sign whose validity extends beyond the expiration of its own self-signed certificate without any issues.</p>
<p><strong>What happens when the new cross-sign expires?</strong> This new cross-sign will expire in early 2024. Prior to that, perhaps as early as June 2021, we will be making a similar change to what we intended to make this January. When we make that change, subscribers will have the option to continue using DST Root CA X3 by configuring their ACME client to specifically request it. If you are a Let’s Encrypt subscriber who is already working to mitigate the chain switch (e.g. by configuring alternate chains or encouraging your users on old Android devices to install Firefox), continue that work so you’ll be well-positioned in the future.</p>
<p><strong>What about the alternate chain?</strong> Today, some ACME clients are able to instead request an alternate chain, if their user has configured it. We currently provide the option of getting the chain:
Subscriber Certificate &lt; &ndash; R3 &lt; &ndash; ISRG Root X1
We will continue to offer this same chain as an alternate. However, note that most ACME clients don&rsquo;t yet have a way to select this alternate chain (for example, Certbot selects chains by looking to see if they contain a given Issuer Name, but this chain doesn’t contain any Issuer Names which the high compatibility chain above doesn’t). We’ll be working with ACME client developers to create more flexible chain selection mechanisms going forward.</p>
<p><strong>What does this have to do with the upcoming ECDSA chain?</strong> This change is unrelated to our upcoming issuance from the ECDSA-based ISRG Root X2 and E1 intermediate. We look forward to using those to provide smaller, more efficient certificates and chains, but that future offering is not related to this change.</p>
<p><strong>I have more questions, how can I get them answered?</strong> Please refer your questions to our <a href="https://community.letsencrypt.org/">community forum</a>.</p>
<p>In the future we hope to share more technical details about how and why this plan works, demonstrate why the expiration of DST Root CA X3 doesn’t affect the security of the web, and what this plan means long-term for our subscribers and end-users on the web.</p>
<p>We depend on contributions from our supporters in order to provide our services. If your company or organization would like to <a href="https://www.abetterinternet.org/sponsor/">sponsor</a> Let’s Encrypt please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>. We ask that you make an <a href="https://letsencrypt.org/donate/">individual contribution</a> if it is within your means.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2020/12/21/extending-android-compatibility.html</guid>
      </item><item>
        <title>Standing on Our Own Two Feet [Updated]</title>
        <link>https://letsencrypt.org/2020/11/06/own-two-feet.html</link>
        <pubDate>Fri, 06 Nov 2020 00:00:00 +0000</pubDate>
        <description><![CDATA[<blockquote>
<p><strong>Update, July 10, 2023</strong></p>
<p>See our <a href="/2023/07/10/cross-sign-expiration.html">new blog post</a> for details on the September 2024 expiration of the newer ISRG Root X1 cross-sign from IdenTrust.</p></blockquote>
<blockquote>
<p><strong>Update, December 21, 2020</strong></p>
<p>Thanks to community feedback and our wonderful partners at IdenTrust, <a href="/2020/12/21/extending-android-compatibility.html">we will be able to continue to offer service without interruption</a> to people using older Android devices.  We flagged the content of this blog post that is no longer accurate. Please visit <a href="https://community.letsencrypt.org/t/production-chain-changes/150739">this post</a> on our community forum for the latest information about chain changes.</p></blockquote>
<p>When a new Certificate Authority (CA) comes on the scene, it faces a conundrum: In order to be useful to people, it needs its root certificate to be trusted by a wide variety of operating systems (OSes) and browsers. However, it can take years for the OSes and browsers to accept the new root certificate, and even longer for people to upgrade their devices to the newer versions that include that change. The common solution: a new CA will often ask an existing, trusted CA for a cross-signature, to quickly get it into being trusted by lots of devices.</p>
<p>Five years ago, when Let’s Encrypt launched, that’s exactly what we did. <a href="https://letsencrypt.org/2015/10/19/lets-encrypt-is-trusted.html">We got a cross-signature from IdenTrust</a>. Their “DST Root X3” had been around for a long time, and all the major software platforms trusted it already: Windows, Firefox, macOS, Android, iOS, and a variety of Linux distributions. That cross-signature allowed us to start issuing certificates right away, and have them be useful to a lot of people. Without IdenTrust, Let’s Encrypt may have never happened and we are grateful to them for their partnership. Meanwhile, we issued our own root certificate (“ISRG Root X1”) and applied for it to be trusted by the major software platforms.</p>
<p><strong>[This section out of date]</strong> Now, those software platforms have trusted our root certificate for years. <del>And the DST Root X3 root certificate that we relied on to get us off the ground is going to expire - on September 1, 2021.</del> Fortunately, we’re ready to stand on our own, and rely solely on our own root certificate.</p>
<p>However, this does introduce some compatibility woes. Some software that hasn’t been updated since 2016 (approximately when our root was accepted to many root programs) still doesn’t trust our root certificate, ISRG Root X1. Most notably, this includes versions of Android prior to 7.1.1. That means those older versions of Android will no longer trust certificates issued by Let’s Encrypt.</p>
<p>Android has a long-standing and well known issue with operating system updates. There are <a href="https://www.theverge.com/2019/9/4/20847758/google-android-update-problem-pie-q-treble-mainline">lots of Android devices in the world running out-of-date operating systems</a>. The causes are complex and hard to fix: for each phone, the core Android operating system is commonly modified by both the manufacturer and a mobile carrier before an end-user receives it. When there’s an update to Android, both the manufacturer and the mobile carrier have to incorporate those changes into their customized version before sending it out. Often manufacturers decide that’s not worth the effort. The result is bad for the people who buy these devices: many are stuck on operating systems that are years out of date.</p>
<p>Google no longer provides version numbers on its <a href="https://developer.android.com/about/dashboards">Distribution Dashboard</a>, but you can still get some data by downloading <a href="https://www.xda-developers.com/android-version-distribution-statistics-android-studio/">Android Studio</a>. Here’s what the numbers looked like as of September 2020:</p>
<p><img src="/images/2020.11.06-android-version-distribution.png" alt="Android Version Distribution as of September 2020" title="Android Version Distribution as of September 2020"></p>
<p>Currently, 66.2% of Android devices are running version 7.1 or above. The remaining 33.8% of Android devices will eventually start getting certificate errors when users visit sites that have a Let’s Encrypt certificate. In our communications with large integrators, we have found that this represents around 1-5% of traffic to their sites. Hopefully these numbers will be lower by the time DST Root X3 expires next year, but the change may not be very significant.</p>
<p>What can we do about this? Well, while we’d love to improve the Android update situation, there’s not much we can do there. We also can’t afford to buy the world a new phone. Can we get another cross-signature? We’ve explored this option and it seems unlikely. It’s a big risk for a CA to cross-sign another CA’s certificate, since they become responsible for everything that CA does. That also means the recipient of the cross-signature has to follow all the procedures laid out by the cross-signing CA. It’s important for us to be able to stand on our own. Also, the Android update problem doesn’t seem to be going away. If we commit ourselves to supporting old Android versions, we would commit ourselves to seeking cross-signatures from other CAs indefinitely.</p>
<p>It’s quite a bind. We’re committed to everybody on the planet having secure and privacy-respecting communications. And we know that the people most affected by the Android update problem are those we most want to help - people who may not be able to buy a new phone every four years. Unfortunately, we don’t expect the Android usage numbers to change much prior to DST Root X3’s expiration. By raising awareness of this change now, we hope to help our community to find the best path forward.</p>
<h2 id="this-section-out-of-date-if-you-are-a-site-owner">[This section out of date] If You Are a Site Owner</h2>
<p>As of <del>January 11, 2021</del>, <a href="https://community.letsencrypt.org/t/transition-to-isrgs-root-delayed-until-jan-11-2021/125516">we’re planning to make a change to our API</a> so that ACME clients will, by default, serve a certificate chain that leads to ISRG Root X1. However, it will also be possible to serve an alternate certificate chain for the same certificate that leads to DST Root X3 and offers broader compatibility. This is implemented via the <a href="https://tools.ietf.org/html/rfc8555#section-7.4.2">ACME “alternate” link relation</a>. This is <a href="https://community.letsencrypt.org/t/certbot-users-preparing-for-the-isrg-root-transition-january-11-2021/138059">supported by Certbot from version 1.6.0 onwards</a>. If you use a different ACME client, please check your client’s documentation to see if the “alternate” link relation is supported.</p>
<p>There will be site owners that receive complaints from users and we are empathetic to that being not ideal. We’re working hard to alert site owners so you can plan and prepare. We encourage site owners to deploy a temporary fix (switching to the alternate certificate chain) to keep your site working while you evaluate what you need for a long-term solution: whether you need to run a banner asking your Android users on older OSes to install Firefox, stop supporting older Android versions, drop back to HTTP for older Android versions, or switch to a CA that is installed on those older versions.</p>
<h2 id="this-section-out-of-date-if-you-get-let-s-encrypt-certificates-through-your-hosting-provider">[This section out of date] If You Get Let’s Encrypt Certificates Through Your Hosting Provider</h2>
<p>Your hosting provider may be serving the DST Root X3 until <del>September 2021</del>, or they may decide to switch to the certificate chain that leads to ISRG Root X1 after <del>January 11, 2021</del>. Please contact them if you have any questions!</p>
<h2 id="if-you-use-an-older-version-of-android">If You Use an Older Version of Android</h2>
<p>If you&rsquo;re on an older version of Android, we recommend you <a href="https://www.mozilla.org/en-US/firefox/mobile/">install Firefox Mobile</a>, which supports Android 5.0 and above as of the time of writing.</p>
<p>Why does installing Firefox help? For an Android phone’s built-in browser, the list of trusted root certificates comes from the operating system - which is out of date on these older phones. However, Firefox is currently unique among browsers - it ships with its own list of trusted root certificates. So anyone who installs the latest Firefox version gets the benefit of an up-to-date list of trusted certificate authorities, even if their operating system is out of date.</p>
<p>We appreciate your understanding and support both now and over the years as we continue to grow as a CA, making sure people everywhere have access to encryption. We will provide any future updates on how this root transition affects Android devices via <a href="https://community.letsencrypt.org/t/transition-to-isrgs-root-delayed-until-jan-11-2021/125516">our community forum post</a>. Our community is always ready to help should you have any questions about this change: <a href="https://community.letsencrypt.org">community.letsencrypt.org</a>.</p>
<p>We depend on contributions from our supporters in order to provide our services. If your company or organization would like to <a href="https://www.abetterinternet.org/sponsor/">sponsor</a> Let’s Encrypt please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>. We ask that you make an <a href="https://letsencrypt.org/donate/">individual contribution</a> if it is within your means.</p>
<h2 id="if-you-are-an-app-developer">If You Are an App Developer</h2>
<p>If you develop an Android app, you can ship an update that adds ISRG Root X1 as a trusted root within the context of your app. There is a discussion about ways to do so in <a href="https://community.letsencrypt.org/t/mobile-client-workarounds-for-isrg-issue/137807">this forum thread</a>, and <a href="https://github.com/square/okhttp/issues/6403">this GitHub issue</a> (on a third-party repository).</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2020/11/06/own-two-feet.html</guid>
      </item><item>
        <title>Let&#39;s Encrypt&#39;s New Root and Intermediate Certificates</title>
        <link>https://letsencrypt.org/2020/09/17/new-root-and-intermediates.html</link>
        <pubDate>Thu, 17 Sep 2020 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>On Thursday, September 3rd, 2020, Let’s Encrypt issued six new certificates:
one root, four intermediates, and one cross-sign. These new certificates are
part of our larger plan to improve privacy on the web, by making ECDSA
end-entity certificates widely available, and by making certificates smaller.</p>
<p>Given that we issue <a href="https://letsencrypt.org/stats/">1.5 million certificates every day</a>,
what makes these ones special? Why did we issue them? How did we issue them?
Let’s answer these questions, and in the process take a tour of how
Certificate Authorities think and work.</p>
<h1 id="the-backstory">The Backstory</h1>
<p>Every publicly-trusted Certificate Authority (such as Let’s Encrypt) has at
least one root certificate which is incorporated into various browser and OS
vendors’ (e.g. Mozilla, Google) trusted root stores. This is what allows
users who receive a certificate from a website to confirm that the
certificate was issued by an organization that their browser trusts. But root
certificates, by virtue of their widespread trust and long lives, must have
their corresponding private key carefully protected and stored offline, and
therefore can’t be used to sign things all the time. So every Certificate
Authority (CA) also has some number of “intermediates”, certificates which
are able to issue additional certificates but are not roots, which they use
for day-to-day issuance.</p>
<p>For the last <a href="https://letsencrypt.org/2015/06/04/isrg-ca-certs.html">five years</a>,
Let’s Encrypt has had one root: the <a href="https://crt.sh/?caid=7394">ISRG Root X1</a>,
which has a 4096-bit RSA key and is valid until 2035.</p>
<p>Over that same time, we’ve had four intermediates: the Let’s Encrypt
Authorities <a href="https://crt.sh/?caid=7395">X1</a>, <a href="https://crt.sh/?caid=9745">X2</a>,
<a href="https://crt.sh/?caid=16418">X3</a>, and <a href="https://crt.sh/?caid=16429">X4</a>. The
first two were issued when Let’s Encrypt first began operations in 2015, and
were valid for 5 years. The latter two were issued about a year later, in
2016, and are also valid for 5 years, expiring about this time next year. All
of these intermediates use 2048-bit RSA keys. In addition,
<a href="https://letsencrypt.org/2015/10/19/lets-encrypt-is-trusted.html">all of these intermediates are cross-signed</a>
by IdenTrust’s DST Root CA X3, another root certificate controlled by a
different certificate authority which is trusted by most root stores.</p>
<p>Finally, we also have the <a href="https://crt.sh/?id=2929281974">ISRG Root OCSP X1</a>
certificate. This one is a little different &ndash; it doesn’t issue any
certificates. Instead, it signs Online Certificate Status Protocol (OCSP)
responses that indicate the intermediate certificates have not been revoked.
This is important because the only other thing capable of signing such
statements is our root itself, and as mentioned above, the root needs to stay
offline and safely secured.</p>
<p><img src="/images/2020-09-17-hierarchy-pre-sept-2020.png" alt="Let’s Encrypt’s hierarchy as of August 2020" title="Let&#39;s Encrypt&#39;s hierarchy as of August 2020"></p>
<h1 id="the-new-certificates">The New Certificates</h1>
<p>For starters, we’ve issued two new 2048-bit RSA intermediates which we’re
calling <a href="https://crt.sh/?caid=183267">R3</a> and
<a href="https://crt.sh/?caid=183268">R4</a>. These are both issued by ISRG Root X1, and
have 5-year lifetimes. They will also be cross-signed by IdenTrust. They’re
basically direct replacements for our current X3 and X4, which are expiring
in a year. We expect to switch our primary issuance pipeline to use R3 later
this year, which won’t have any real effect on issuance or renewal.</p>
<p>The other new certificates are more interesting. First up, we have the new
<a href="https://crt.sh/?caid=183269">ISRG Root X2</a>, which has an ECDSA P-384 key
instead of RSA, and is valid until 2040. Issued from that, we have two new
intermediates, <a href="https://crt.sh/?caid=183283">E1</a> and
<a href="https://crt.sh/?caid=183284">E2</a>, which are both also ECDSA and are valid
for 5 years.</p>
<p>Notably, these ECDSA intermediates are not cross-signed by IdenTrust’s DST
Root CA X3. Instead, the ISRG Root X2 itself is
<a href="https://crt.sh/?id=3334561878">cross-signed by our existing ISRG Root X1</a>.
An astute observer might also notice that we have not issued an OCSP Signing
Certificate from ISRG Root X2.</p>
<p><img src="/images/2020-09-17-hierarchy-post-sept-2020.png" alt="Let’s Encrypt’s hierarchy as of September 2020" title="Let&#39;s Encrypt&#39;s hierarchy as of September 2020"></p>
<p>Now that we have the technical details out of the way, let’s dive in to <em>why</em>
the new hierarchy looks the way it does.</p>
<h1 id="why-we-issued-an-ecdsa-root-and-intermediates">Why We Issued an ECDSA Root and Intermediates</h1>
<p>There are lots of <a href="https://blog.cloudflare.com/ecdsa-the-digital-signature-algorithm-of-a-better-internet/">other articles</a>
you can read about the benefits of ECDSA (smaller key sizes for the same
level of security; correspondingly faster encryption, decryption, signing,
and verification operations; and more). But for us, the big benefit comes
from their smaller certificate sizes.</p>
<p>Every connection to a remote domain over https:// requires a TLS handshake.
Every TLS handshake requires that the server provide its certificate.
Validating that certificate requires a certificate chain (the list of all
intermediates up to but not including a trusted root), which is also usually
provided by the server. This means that every connection &ndash; and a page
covered in ads and tracking pixels might have dozens or hundreds &ndash; ends up
transmitting a large amount of certificate data. And every certificate
contains both its own public key and a signature provided by its issuer.</p>
<p>While a 2048-bit RSA public key is about 256 bytes long, an ECDSA P-384
public key is only about 48 bytes. Similarly, the RSA signature will be
another 256 bytes, while the ECDSA signature will only be 96 bytes. Factoring
in some additional overhead, that’s a savings of nearly 400 bytes per
certificate. Multiply that by how many certificates are in your chain, and
how many connections you get in a day, and the bandwidth savings add up fast.</p>
<p>These savings are a public benefit both for our subscribers – who can be
sites for which bandwidth can be a meaningful cost every month – and for
end-users, who may have limited or metered connections. Bringing privacy to
the whole Web doesn’t just mean making certificates available, it means
making them efficient, too.</p>
<p>As an aside: since we’re concerned about certificate sizes, we’ve also taken
a few other measures to save bytes in our new certificates. We’ve shortened
their Subject Common Names from “Let’s Encrypt Authority X3” to just “R3”,
relying on the previously-redundant Organization Name field to supply the
words “Let’s Encrypt”. We’ve shortened their Authority Information Access
Issuer and CRL Distribution Point URLs, and we’ve dropped their CPS and OCSP
URLs entirely. All of this adds up to another approximately 120 bytes of
savings without making any substantive change to the useful information in
the certificate.</p>
<h1 id="why-we-cross-signed-the-ecdsa-root">Why We Cross-Signed the ECDSA Root</h1>
<p>Cross-signing is an important step, bridging the gap between when a new root
certificate is issued and when that root is incorporated into various trust
stores. We know that it is going to take 5 years or so for our new ISRG Root
X2 to be widely trusted itself, so in order for certificates issued by the E1
intermediate to be trusted, there needs to be a cross-sign somewhere in the
chain.</p>
<p>We had basically two options: we could cross-sign the new ISRG Root X2 from
our existing ISRG Root X1, or we could cross-sign the new E1 and E2
intermediates from ISRG Root X1. Let’s examine the pros and cons of each.</p>
<p>Cross-signing the new ISRG Root X2 certificate means that, if a user has ISRG
Root X2 in their trust store, then their full certificate chain will be 100%
ECDSA, giving them fast validation, as discussed above. And over the next few
years, as ISRG Root X2 is incorporated into more and more trust stores,
validation of ECDSA end-entity certificates will get faster without users or
websites having to change anything. The tradeoff though is that, as long as
X2 isn’t in trust stores, user agents will have to validate a chain with two
intermediates: both E1 and X2 chaining up to the X1 root. This takes more
time during certificate validation.</p>
<p>Cross-signing the intermediates directly has the opposite tradeoff. On the
one hand, all of our chains will be the same length, with just one
intermediate between the subscriber certificate and the widely-trusted ISRG
Root X1. But on the other hand, when the ISRG Root X2 does become widely
trusted, we’d have to <a href="https://letsencrypt.org/2019/04/15/transitioning-to-isrg-root.html">go through another chain switch</a>
in order for anyone to gain the benefits of an all-ECDSA chain.</p>
<p>In the end, we decided that providing the option of all-ECDSA chains was more
important, and so opted to go with the first option, and cross-sign the ISRG
Root X2 itself.</p>
<h1 id="why-we-didn-t-issue-an-ocsp-responder">Why We Didn’t Issue an OCSP Responder</h1>
<p>The Online Certificate Status Protocol is a way for user agents to discover,
in real time, whether or not a certificate they’re validating has been
revoked. Whenever a browser wants to know if a certificate is still valid, it
can simply hit a URL contained within the certificate itself and get a yes or
no response, which is signed by another certificate and can be similarly
validated. This is great for end-entity certificates, because the responses
are small and fast, and any given user might care about (and therefore have
to fetch) the validity of wildly different sets of certificates, depending on
what sites they visit.</p>
<p>But intermediate certificates are a tiny subset of all certificates in the
wild, are generally well-known, and are rarely revoked. Because of this, it
can be much more efficient to simply maintain a Certificate Revocation List
(CRL) containing validity information for all well-known intermediates. Our
intermediate certificates all contain a URL from which a browser can fetch
their CRL, and in fact some browsers even aggregate these into their own CRLs
which they distribute with each update. This means that checking the
revocation status of intermediates doesn’t require an extra network round
trip before you can load a site, resulting in a better experience for
everyone.</p>
<p>In fact, a recent change (<a href="https://cabforum.org/2020/07/16/ballot-sc31-browser-alignment/">ballot SC31</a>)
to the Baseline Requirements, which govern CAs, has made it so intermediate
certificates are no longer required to include an OCSP URL; they can now have
their revocation status served solely by CRL. And as noted above, we have
removed the OCSP URL from our new intermediates. As a result, we didn’t need
to issue an OCSP responder signed by ISRG Root X2.</p>
<h1 id="putting-it-all-together">Putting It All Together</h1>
<p>Now that we&rsquo;ve shared why our new certificates look the way they do, there’s one
last thing we’d like to mention: how we actually went about issuing them.</p>
<p>The creation of new root and intermediate certificates is a big deal, since
their contents are so regulated and their private keys have to be so
carefully protected. So much so that the act of issuing new ones is called a
“ceremony”. Let’s Encrypt <a href="https://letsencrypt.org/about/">believes strongly in automation</a>,
so we wanted our ceremony to require as little human involvement as possible.</p>
<p>Over the last few months we’ve built a <a href="https://github.com/letsencrypt/boulder/tree/main/cmd/ceremony">ceremony tool</a>
which, given appropriate configuration, can produce all of the desired keys,
certificates, and requests for cross-signs. We also built a
<a href="https://github.com/letsencrypt/2020-hierarchy-demo">demo</a> of our ceremony,
showing what our configuration files would be, and allowing anyone to run it
themselves and examine the resulting output. Our SREs put together a replica
network, complete with Hardware Security Modules, and practiced the ceremony
multiple times to ensure it would work flawlessly. We shared this demo with
our technical advisory board, our community, and various mailing lists, and
in the process received valuable feedback that actually influenced some of
the decisions we’ve talked about above! Finally, on September 3rd, our
Executive Director met with SREs at a secure datacenter to execute the whole
ceremony, and record it for future audits.</p>
<p>And now the ceremony is complete. We’ve updated <a href="https://letsencrypt.org/certificates">our certificates page</a>
to include details about all of our new certificates, and are beginning the
process of requesting that our new root be incorporated into various trust
stores. We intend to begin issuing with our new intermediates over the coming
weeks, and will post further announcements in our <a href="https://community.letsencrypt.org/">community forum</a>
when we do.</p>
<p>We hope that this has been an interesting and informative tour around our
hierarchy, and we look forward to continuing to improve the internet one
certificate at a time. We’d like to thank IdenTrust for their early and
ongoing support of our vision to change security on the Web for the better.</p>
<p>We depend on contributions from our community of users and supporters in
order to provide our services. If your company or organization would like to
<a href="https://www.abetterinternet.org/sponsor/">sponsor</a> Let’s Encrypt please
email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>. We ask that you make an
<a href="https://letsencrypt.org/donate/">individual contribution</a> if it is within your
means.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2020/09/17/new-root-and-intermediates.html</guid>
      </item><item>
        <title>Let&#39;s Encrypt Has Issued a Billion Certificates</title>
        <link>https://letsencrypt.org/2020/02/27/one-billion-certs.html</link>
        <pubDate>Thu, 27 Feb 2020 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>We issued our billionth certificate on February 27, 2020. We’re going to use this big round number as an opportunity to reflect on what has changed for us, and for the Internet, leading up to this event. In particular, we want to talk about what has happened since the last time we talked about a big round number of certificates - <a href="https://letsencrypt.org/2017/06/28/hundred-million-certs.html">one hundred million</a>.</p>
<p>One thing that’s different now is that the Web is much more encrypted than it was. In June of 2017 approximately 58% of page loads used HTTPS globally, 64% in the United States. Today 81% of page loads use HTTPS globally, and we’re at 91% in the United States! This is an incredible achievement. That’s a lot more privacy and security for everybody.</p>
<p>Another thing that’s different is that our organization has grown a bit, but not by much! In June of 2017 we were serving approximately 46M websites, and we did so with 11 full time staff and an annual budget of $2.61M. Today we serve nearly 192M websites with 13 full time staff and an annual budget of approximately $3.35M. This means we’re serving more than 4x the websites with only two additional staff and a 28% increase in budget. The additional staff and budget did more than just improve our ability to scale though - we’ve made improvements across the board to provide even more secure and reliable service.</p>
<p>Nothing drives adoption like ease of use, and the foundation for ease of use in the certificate space is our ACME protocol. ACME allows for extensive automation, which means computers can do most of the work. It was also <a href="https://letsencrypt.org/2019/03/11/acme-protocol-ietf-standard.html">standardized as RFC 8555 in 2019</a>, which allows the Web community to confidently build an <a href="https://letsencrypt.org/docs/client-options/">even richer ecosystem of software</a> around it. Today, thanks to our incredible community, there is an ACME client for just about every deployment environment. Certbot is one of our favorites, and they’ve been working hard to make it <a href="https://www.eff.org/deeplinks/2019/10/certbot-usability-case-study-making-it-easier-get-https-certificates">even easier for people to use</a>.</p>
<p>When you combine ease of use with incentives, that’s when adoption really takes off. Since 2017 browsers have started requiring HTTPS for more features, and they’ve greatly improved the ways in which they <a href="https://www.blog.google/products/chrome/milestone-chrome-security-marking-http-not-secure/">communicate</a> <a href="https://blog.mozilla.org/security/2019/10/15/improved-security-and-privacy-indicators-in-firefox-70/">to their users</a> <a href="https://support.apple.com/en-us/HT209084#122">about the risks</a> of not using HTTPS. When websites put their users at risk by not using HTTPS, major browsers now show stronger warnings. Many sites have responded by deploying HTTPS.</p>
<p>Thanks for taking the time to reflect on this milestone with us. As a community we’ve done incredible things to protect people on the Web. Having issued one billion certificates is affirmation of all the progress we’ve made as a community, and we’re excited to keep working with you to create an even more secure and privacy-respecting Web for everyone.</p>
<p>We depend on contributions from our community of users and supporters in order to provide our services. If your company or organization would like to <a href="https://www.abetterinternet.org/sponsor/">sponsor</a> Let’s Encrypt please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>. We ask that you make an <a href="https://letsencrypt.org/donate/">individual contribution</a> if it is within your means.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2020/02/27/one-billion-certs.html</guid>
      </item><item>
        <title>Multi-Perspective Validation Improves Domain Validation Security</title>
        <link>https://letsencrypt.org/2020/02/19/multi-perspective-validation.html</link>
        <pubDate>Wed, 19 Feb 2020 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>At Let’s Encrypt we’re always looking for ways to improve the security and integrity of the Web PKI. We’re proud to launch multi-perspective domain validation today because we believe it’s an important step forward for the domain validation process. To our knowledge we are the first CA to deploy multi-perspective validation at scale.</p>
<p>Domain validation is a process that all CAs use to ensure that a certificate applicant actually controls the domain they want a certificate for. Typically the domain validation process involves asking the applicant to place a particular file or token at a controlled location for the domain, such as a particular path or a DNS entry. Then the CA will check that the applicant was able to do so. Historically it looks something like this:</p>
<p><img src="/images/2020-02-19-single-perspective-validation.png" alt="System Architecture Diagram"></p>
<p>A potential issue with this process is that if a network attacker can hijack or redirect network traffic along the validation path (for the challenge request, or associated DNS queries), then the attacker can trick a CA into incorrectly issuing a certificate. This is precisely what a research team from Princeton demonstrated <a href="https://www.princeton.edu/~pmittal/publications/bgp-tls-usenix18.pdf">can be done with an attack on BGP</a>. Such attacks are rare today, but we are concerned that these attacks will become more numerous in the future.</p>
<p>The Border Gateway Protocol (BGP) and most deployments of it are not secure. While there are ongoing efforts to secure BGP, such as RPKI and BGPsec, it may be a long time until BGP hijacking is a thing of the past. We don’t want to wait until we can depend on BGP being secure, so we’ve worked with the research team from Princeton to devise a way to make such attacks more difficult. Instead of validating from one network perspective, we now validate from multiple perspectives as well as from our own data centers:</p>
<p><img src="/images/2020-02-19-multiple-perspective-validation.png" alt="System Architecture Diagram"></p>
<p>Today we are validating from multiple regions within a single cloud provider. We plan to diversify network perspectives to other cloud providers in the future.</p>
<p>This makes the kind of attack described earlier more difficult because an attacker must successfully compromise three different network paths at the same time (the primary path from our data center, and at least two of the three remote paths). It also increases the likelihood that such an attack will be detected by the Internet topology community.</p>
<p>We’d like to thank the research groups of Prof. Prateek Mittal and Prof. Jennifer Rexford at Princeton University for their partnership in developing this work. We will continue to work with them to refine the effectiveness of our multiple perspective validation design and implementation. We’d also like to thank <a href="https://www.opentech.fund/">Open Technology Fund</a> for supporting this work.</p>
<p>We depend on contributions from our community of users and supporters in order to provide our services. If your company or organization would like to <a href="https://www.abetterinternet.org/sponsor/">sponsor</a> Let’s Encrypt please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>. We ask that you make an <a href="https://letsencrypt.org/donate/">individual contribution</a> if it is within your means.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2020/02/19/multi-perspective-validation.html</guid>
      </item><item>
        <title>How Let&#39;s Encrypt Runs CT Logs</title>
        <link>https://letsencrypt.org/2019/11/20/how-le-runs-ct-logs.html</link>
        <pubDate>Wed, 20 Nov 2019 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Let’s Encrypt <a href="https://letsencrypt.org/2019/05/15/introducing-oak-ct-log.html">launched a Certificate Transparency (CT) log</a> this past spring. We’re excited to share how we built it in hopes that others can learn from what we did. CT has quickly become an important piece of Internet security infrastructure, but unfortunately it’s not trivial to run a good log. The more the CT community can share about what has been done, the better the ecosystem will be.</p>
<p><a href="https://sectigo.com/">Sectigo</a> and <a href="https://aws.amazon.com/">Amazon Web Services</a> have generously provided support to cover a significant portion of the cost of running our CT log. “Sectigo is proud to sponsor the Let’s Encrypt CT Log. We believe this initiative will provide much-needed reinforcement of the CT ecosystem,” said Ed Giaquinto, Sectigo’s CIO.</p>
<p>For more background information about CT and how it works, we recommend reading “<a href="https://www.certificate-transparency.org/how-ct-works">How Certificate Transparency Works</a>.”</p>
<p>If you have questions about any of what we’ve written here, feel free to ask on our <a href="https://community.letsencrypt.org/">community forums</a>.</p>
<h1 id="objectives">Objectives</h1>
<ol>
<li><em>Scale:</em> Let’s Encrypt issues over <a href="https://letsencrypt.org/stats/#daily-issuance">1 million certificates per day</a>, and that number grows each month. We want our log to consume our certificates as well as those from other CAs, so we need to be able to handle as many as 2 million or more certificates per day. To support this ever-increasing number of certificates, CT software and infrastructure need to be architected for scale.</li>
<li><em>Stability and Compliance:</em> We target 99% uptime, with no outage lasting longer than 24 hours, in compliance with the <a href="https://github.com/chromium/ct-policy/blob/master/log_policy.md">Chromium</a> and <a href="https://support.apple.com/en-gb/HT205280">Apple</a> CT policies.</li>
<li><em>Sharding:</em> Best practice for a CT log is to break it into several temporal shards. For more information on temporal sharding, check out these <a href="https://www.digicert.com/blog/scaling-certificate-transparency-logs-temporal-sharding/">blog</a> <a href="https://www.venafi.com/blog/how-temporal-sharding-helps-ease-challenge-growing-log-scale">posts</a>.</li>
<li><em>Low Maintenance:</em> Staff time is expensive, we want to minimize the amount of time spent maintaining infrastructure.</li>
</ol>
<h1 id="system-architecture">System Architecture</h1>
<p><img src="/images/2019-11-20-ct-architecture.png" alt="System Architecture Diagram"></p>
<h1 id="staging-and-production-logs">Staging and Production Logs</h1>
<p>We run two equivalent logs, one for staging and one for production. Any changes we plan to make to the production log are first deployed to the staging log. This is critical for making sure that updates and upgrades don’t cause problems before being deployed to production. You can find access details for these logs in our <a href="https://letsencrypt.org/docs/ct-logs/">documentation</a>.</p>
<p>We keep the staging log continually under production-level load so that any scale-related problems manifest there first. We also use the staging CT log to submit certificates from our staging CA environment, and make it available for use by other CAs’ staging environments.</p>
<p>As a point of clarification, we consider a log to be comprised of several temporal shards. While each shard is technically a separate log, it makes sense to conceptualize the shards as belonging to a single log.</p>
<h1 id="amazon-web-services-aws">Amazon Web Services (AWS)</h1>
<p>We decided to run our CT logs on AWS for two reasons.</p>
<p>One consideration for us was cloud provider diversity. Since there are relatively few trusted logs in the ecosystem, we don’t want multiple logs to go down due to a single cloud provider outage. At the time we made the decision there were logs running on Google and Digital Ocean infrastructure, as well as self-hosted. We were not aware of any on AWS (in hindsight we may have missed the fact that Digicert had started using AWS for logs). If you’re thinking about setting up a trusted log for CAs to use, please consider cloud provider diversity.</p>
<p>Additionally, AWS provides a solid set of features and our team has experience using it for other purposes. We had little doubt that AWS was up to the task.</p>
<h1 id="terraform">Terraform</h1>
<p>Let’s Encrypt uses Hashicorp <a href="https://www.terraform.io/">Terraform</a> for a number of cloud-based projects. We were able to bootstrap our CT log infrastructure by reusing our existing Terraform code. There are roughly 50 components in our CT deployments; including EC2, RDS, EKS, IAM, security groups, and routing. Centrally managing this code allows our small team to reproduce a CT infrastructure in any Amazon region of the globe, prevent configuration drift, and easily test infrastructure changes.</p>
<h1 id="database">Database</h1>
<p>We chose to use MariaDB for our CT log database because we have extensive experience using it to run our certificate authority. MariaDB has scaled well on our journey to becoming the largest publicly trusted certificate authority.</p>
<p>We chose to have our MariaDB instances managed by Amazon RDS because RDS provides synchronous writes to standby cluster members. This allows for automatic database failover and ensures database consistency. Synchronous writes to database replicas are essential for a CT log. One missed write during a database failover can mean a certificate was not included as promised, and could lead to the log being disqualified. Having RDS manage this for us reduces complexity and saves staff time. We are still responsible for managing the database performance, tuning, and monitoring.</p>
<p>It’s important to calculate the necessary amount of storage for a CT log database carefully. Too little storage can result in needing to undertake time-consuming and potentially risky storage migrations. Too much storage can result in unnecessarily high costs.</p>
<p>A back of the napkin storage estimation is 1TB per 100 million entries. We expect to need to store 1 billion certificates and precertificates per annual temporal shard, for which we would need 10TB. We considered having separate database storage per annual temporal shard, with approximately 10TB allocated to each, but that was cost prohibitive. We decided to create a 12TB storage block per log (10TB plus some breathing room), which is duplicated for redundancy by RDS. Each year we plan to freeze the previous year’s shard and move it to a less expensive serving infrastructure, reclaiming its storage for our live shards.</p>
<p>We use 2x db.r5.4xlarge instances for RDS for each CT log. Each of these instances contains 8 CPU cores and 128GB of RAM.</p>
<h1 id="kubernetes">Kubernetes</h1>
<p>After trying a few different strategies for managing application instances, we decided to use Kubernetes. There is a hefty learning curve for Kubernetes and the decision was not made lightly. This was our first project making use of Kubernetes, and part of the reason we went with it was to gain experience and possibly apply that knowledge to other parts of our infrastructure in the future.</p>
<p>Kubernetes provides abstractions for operators such as <a href="https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#use-case">deployments</a>, <a href="https://kubernetes.io/docs/tutorials/kubernetes-basics/scale/">scaling</a>, and <a href="https://kubernetes.io/docs/concepts/services-networking/service/#motivation">service discovery</a> that we would not have to build ourselves. We utilized the example Kubernetes deployment manifests in the <a href="https://github.com/google/trillian/">Trillian repository</a> to assist with our deployment.</p>
<p>A Kubernetes cluster is comprised of two main components: the control plane which handles the Kubernetes APIs, and worker nodes where containerized applications run. We chose to have Amazon EKS manage our Kubernetes control plane.</p>
<p>We use 4x c5.2xlarge EC2 instances for the worker node pool for each CT log. Each of these instances contains 8 CPU cores and 16GB of RAM.</p>
<h1 id="application-software">Application Software</h1>
<p>There are three main CT components that we run in a Kubernetes cluster.</p>
<p>The certificate transparency front end, or <a href="https://github.com/google/certificate-transparency-go">CTFE</a>, provides <a href="https://tools.ietf.org/html/rfc6962">RFC 6962</a> endpoints and translates them to gRPC API requests for the Trillian backend.</p>
<p><a href="https://github.com/google/trillian">Trillian</a> describes itself as a “transparent, highly scalable and cryptographically verifiable data store.” Essentially, Trillian implements a generalized verifiable data store via a Merkle tree that can be used as the back-end for a CT log via the CTFE. Trillian consists of two components; the log signer and log server. The <a href="https://github.com/google/trillian/blob/master/docs/images/LogDesign.png">log signer’s function</a> is to periodically process incoming leaf data (certificates in the case of CT) and incorporate them into a Merkle tree. The log server retrieves objects from a Merkle tree in order to fulfill CT API monitoring requests.</p>
<h1 id="load-balancing">Load Balancing</h1>
<p>Traffic enters the CT log through an Amazon ELB which is mapped to a Kubernetes Nginx ingress service. The ingress service balances traffic amongst multiple Nginx pods. The Nginx pods proxy traffic to the CTFE service which balance that traffic to CTFE pods.</p>
<p>We employ IP and user agent based rate limiting at this Nginx layer.</p>
<h1 id="logging-and-monitoring">Logging and Monitoring</h1>
<p>Trillian and the CTFE expose <a href="https://prometheus.io/">Prometheus</a> metrics which we transform into monitoring dashboards and alerts. It is essential to set a <a href="https://en.wikipedia.org/wiki/Service-level_objective">Service Level Objective</a> for the CT log endpoints above the 99% uptime dictated by CT policy to ensure that your log is trusted. A FluentD pod running in a DaemonSet ships logs to centralized storage for further analysis.</p>
<p>We developed a free and open source tool named <a href="https://github.com/letsencrypt/ct-woodpecker">ct-woodpecker</a> that is used to monitor various aspects of log stability and correctness. This tool is an important part of how we ensure we’re meeting our service level objectives. Each ct-woodpecker instance runs externally from Amazon VPCs containing CT logs.</p>
<h1 id="future-efficiency-improvements">Future Efficiency Improvements</h1>
<p>Here are some ways we may be able to improve the efficiency of our system in the future:</p>
<ul>
<li>Trillian stores a copy of each certificate chain, including many duplicate copies of the same intermediate certificates. Being able to de-duplicate these in Trillian would significantly reduce storage costs. We’re planning to look into whether this is possible and reasonable.</li>
<li>See if we can successfully use a cheaper form of storage than IO1 block storage and provisioned IOPs.</li>
<li>See if we can reduce the Kubernetes worker EC2 instance size or use fewer EC2 instances.</li>
</ul>
<h1 id="support-let-s-encrypt">Support Let’s Encrypt</h1>
<p>We depend on contributions from our community of users and supporters in order to provide our services. If your company or organization is interested in learning more about <a href="https://www.abetterinternet.org/sponsor/">sponsorship</a>, please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>. We ask that you make an <a href="https://letsencrypt.org/donate/">individual contribution</a> if it is within your means.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2019/11/20/how-le-runs-ct-logs.html</guid>
      </item><item>
        <title>Onboarding Your Customers with Let&#39;s Encrypt and ACME</title>
        <link>https://letsencrypt.org/2019/10/09/onboarding-your-customers-with-lets-encrypt-and-acme.html</link>
        <pubDate>Wed, 09 Oct 2019 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>If you work at a hosting provider or CDN, ACME’s DNS-01 validation
method can make it a lot easier to onboard new customers who have an
existing HTTPS website at another provider. Before your new customer
points their domain name at your servers, you need to have a certificate
already installed for them. Otherwise visitors to the customer’s site
will see an outage for a few minutes while you issue and install a
certificate. To fix this, you and your new customer should use the
DNS-01 validation method to issue a certificate before the customer
switches over DNS for their site.</p>
<h1 id="how-the-dns-validation-method-works">How the DNS Validation Method Works</h1>
<p>The DNS-01 validation method <a href="https://letsencrypt.org/docs/challenge-types/#dns-01-challenge">works like
this</a>: to prove that you control
<code>www.example.com</code>, you create a TXT record at
<code>_acme-challenge.www.example.com</code> with a “digest value” as specified by
ACME (your ACME client should take care of creating this digest value
for you). When the TXT record is ready, your ACME client informs the ACME server (for
instance, Let’s Encrypt) that the domain is ready for validation. The
ACME server looks up the TXT record, compares it to the expected digest
value, and if the result is correct, considers your account authorized
to issue for <code>www.example.com</code>. Your new customer can set up this TXT
record (or a CNAME) without interfering with normal website operations.</p>
<h1 id="the-advantages-of-a-cname">The Advantages of a CNAME</h1>
<p>There’s an additional trick that I recommend for hosting providers and
CDNs: Instead of giving the digest value to your new customer and
telling them to make a TXT record with it, tell your customer to
configure a CNAME from <code>_acme-challenge.www.example.com</code> to a domain
name that you control and that is unique to the domain being validated.
For instance, you might use <code>www.example.com.validationserver.example.net</code>.
Then, once your
software has verified that this CNAME is set up (accounting for
propagation delay and anycast), your ACME client should
begin the validation process for <code>www.example.com</code>, provisioning a TXT
record at <code>www.example.com.validationserver.example.net</code>. Because the
ACME server’s TXT lookup follows CNAMEs (as do all DNS lookups), it will
see the value you provisioned, and consider your account authorized.</p>
<p>This approach is preferable to handing your customers a raw digest value
for a few reasons. First, it gives your customers all the time they need to set
up the CNAME. If you create a pending authorization up front and give
your customer a digest value to deploy themselves, it has a fixed
lifetime before it expires (for Let’s Encrypt this lifetime is 7 days).
If your customer doesn&rsquo;t complete the process in that time,
you’ll have to create a new pending authorization and give
your customer a new digest value. That&rsquo;s annoying and time consuming for
both you and your customer. The CNAME method means even if it
takes your new customer a month to make the needed changes to their DNS,
you can get things up and running as soon as they do.</p>
<p>Another reason to prefer the CNAME method over having new customers
directly provision their TXT records is to support the best practice of
periodically rotating your ACME account key. Because the digest value
used for DNS-01 validation is computed based on your current ACME
account key, it will change whenever you rotate your account key. If you
asked customers to provision their TXT record manually, that means
notifying potential new customers that the value you asked them to put
in DNS isn&rsquo;t valid anymore, and they need to use a different one. That’s pretty
inconvenient! If you use the CNAME method instead, there’s only one
ACME-related value you’ll ever need to have your new customers put in
DNS, and it won’t change as you change your account key.</p>
<h1 id="cleaning-up-unused-cnames">Cleaning Up Unused CNAMES</h1>
<p>One last note: This is a good way to onboard customers, but you also
need to detect when customers offboard themselves. They may simply
change their A records to point at a different CDN, without telling you
that their plans have changed. You should monitor for this situation and
stop attempting to issue certificates. If the customer has left behind a
CNAMEd <code>_acme-challenge</code> subdomain that points at you, you should
contact that and remind them to delete it. The CNAMEd subdomain
represents a delegated authorization to issue certificates, and cleaning
up that delegation improves both the customer’s security posture and
your own. Similarly, if a customer sets up the CNAME and you issue a
certificate on their behalf, but they never point their A records at
your servers, you should not reissue new certificates indefinitely
without further intervention from the customer.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2019/10/09/onboarding-your-customers-with-lets-encrypt-and-acme.html</guid>
      </item><item>
        <title>Introducing Oak, a Free and Open Certificate Transparency Log</title>
        <link>https://letsencrypt.org/2019/05/15/introducing-oak-ct-log.html</link>
        <pubDate>Wed, 15 May 2019 00:00:00 +0000</pubDate>
        <description><![CDATA[<blockquote>
<p><strong>Update: Feb. 5 2020</strong></p>
<p>The Let’s Encrypt CT logs are now included in approved log lists and are usable by all publicly-trusted certificate authorities.</p></blockquote>
<p>Today we are announcing a new <a href="https://letsencrypt.org/docs/ct-logs">Certificate Transparency log called Oak</a>. The Oak log will be operated by Let’s Encrypt and all publicly trusted certificate authorities will be welcome to submit certificates.</p>
<p><a href="https://sectigo.com/">Sectigo</a> generously provided funding to cover a significant portion of our costs to run our CT log. “Sectigo is proud to sponsor the Let’s Encrypt CT Log.  We believe this initiative will provide much-needed reinforcement of the CT ecosystem,” said Ed Giaquinto, Sectigo’s CIO. We thank them for their collaboration to improve Internet security.</p>
<p><a href="https://www.certificate-transparency.org/what-is-ct">Certificate Transparency (CT)</a> is a system for logging and monitoring certificate issuance. It greatly enhances everyone’s ability to monitor and study certificate issuance, and these capabilities have led to numerous improvements to the CA ecosystem and Web security. As a result, it is rapidly becoming critical Internet infrastructure. Let’s Encrypt accelerated the adoption of CT by logging every certificate since we started issuing in 2015 - approximately half a billion certificates at this point.</p>
<p>We decided to create and operate a CT log for a few reasons. First, operating a log is consistent with our mission to create a more secure and privacy-respecting Web. We believe transparency increases security and empowers people to make well-informed decisions. Second, operating a log helps us take control of our destiny. Google Chrome requires all new certificates to be submitted to two separate logs, so multiple log options are imperative to our operation. Finally, Let’s Encrypt often issues <a href="https://letsencrypt.org/stats/">more than 1M certificates each day</a>, so we wanted to design a CT log that is optimized for high volume. We’ve designed our log to be able to handle submissions from all other publicly trusted Certificate Authorities so they can use Oak to fulfill their logging requirements as well.</p>
<p>Our log uses Google’s <a href="https://github.com/google/trillian/">Trillian software</a> running on AWS infrastructure. We use Kubernetes for container orchestration and job scheduling and AWS RDS for database management.</p>
<p>We are submitting our log for inclusion in the approved log lists for <a href="https://cs.chromium.org/chromium/src/components/certificate_transparency/data/log_list.json">Google Chrome</a> and <a href="https://valid.apple.com/ct/log_list/current_log_list.json">Apple Safari</a>. Following 90 days of successful monitoring, we anticipate our log will be added to these trusted lists and that change will propagate to people’s browsers with subsequent browser version releases.</p>
<p>Continuing the forest theme, we are also announcing the launch of our open source CT monitoring tool, <a href="https://github.com/letsencrypt/ct-woodpecker">CT Woodpecker</a>. We use it to monitor and ensure compliance for our log and we’ve made it open source so others in the CT ecosystem can use it as well.</p>
<p>We’d like to thank Google, Sectigo, Cloudflare, and DigiCert for also running open logs, and we look forward to contributing to better transparency in Web security!</p>
<p>We depend on contributions from our community of users and supporters in order to provide our services. If your company or organization would like to <a href="https://www.abetterinternet.org/sponsor/">sponsor</a> Let’s Encrypt please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>. We ask that you make an <a href="https://letsencrypt.org/donate/">individual contribution</a> if it is within your means.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2019/05/15/introducing-oak-ct-log.html</guid>
      </item><item>
        <title>Transitioning to ISRG&#39;s Root</title>
        <link>https://letsencrypt.org/2019/04/15/transitioning-to-isrg-root.html</link>
        <pubDate>Mon, 15 Apr 2019 00:00:00 +0000</pubDate>
        <description><![CDATA[<blockquote>
<p><strong>Update, September 17, 2020</strong></p>
<p>Due to concerns about insufficient ISRG root propagation on Android devices we have <a href="https://community.letsencrypt.org/t/transitioning-to-isrgs-root/94056">decided to move the date on which we will start serving a chain to our own root</a> to <strong>January 11, 2021</strong>. We had originally delayed this change until September 29, 2020.</p></blockquote>
<blockquote>
<p><strong>Update, June 11, 2020</strong></p>
<p>In an effort to provide more time for our community to prepare for this transition, we have <a href="https://community.letsencrypt.org/t/transition-to-isrgs-root-delayed-until-jan-11-2020/125516/2">moved back the date on which we will start serving a chain to our own root</a> to September 29, 2020.</p></blockquote>
<p>On January 11, 2021, we will change the default intermediate certificate we provide via ACME. Most subscribers don’t need to do anything. Subscribers who support <a href="https://letsencrypt.org/docs/certificate-compatibility/#known-incompatible">very old TLS/SSL clients</a> may want to manually configure the older intermediate to increase backwards compatibility.</p>
<p>Since Let’s Encrypt launched, our certificates have been trusted by browsers via a cross-signature from another Certificate Authority (CA) named <a href="https://www.identrust.com/">IdenTrust</a>. A cross-signature from IdenTrust was necessary because our own root was not yet widely trusted. It takes time for a new CA to demonstrate that it is trustworthy, then it takes more time for trusted status to propagate via software updates.</p>
<p>Now that our own root, <a href="https://letsencrypt.org/certificates/">ISRG Root X1</a>, is <a href="https://letsencrypt.org/2018/08/06/trusted-by-all-major-root-programs.html">widely trusted by browsers</a> we’d like to transition our subscribers to using our root directly, without a cross-sign.</p>
<p>On <strong>January 11, 2021</strong>, Let’s Encrypt will start serving a certificate chain via the ACME protocol which leads directly to our root, with no cross-signature. Most subscribers don’t need to take any action because their ACME client will handle everything automatically. Subscribers who need to support very old TLS/SSL clients may wish to manually configure their servers to continue using the cross-signature from IdenTrust. You can test whether a given client will work with the newer intermediate by accessing our <a href="https://valid-isrgrootx1.letsencrypt.org/">test site</a>.</p>
<p>Our current cross-signature from IdenTrust expires on March 17, 2021. The IdenTrust root that we are cross-signed from expires on September 30, 2021. Within the next year we will obtain a new cross-signature that is valid until September 29, 2021. This means that our subscribers will have the option to manually configure a certificate chain that uses IdenTrust until <strong>September 29, 2021</strong>.</p>
<p>We’d like to thank IdenTrust for providing a cross-signature while we worked to get our own root trusted. They have been wonderful partners. IdenTrust believed in our mission to encrypt the entire Web when it seemed like a long-term dream. Together, in less than five years, we have helped to raise the percentage of encrypted page loads on the Web from <a href="https://letsencrypt.org/stats/#percent-pageloads">39% to 78%</a>.</p>
<p>Let’s Encrypt is currently providing certificates for more than 160 million websites. We look forward to being able to serve even more websites as efforts like this make deploying HTTPS with Let’s Encrypt even easier. If you’re as excited about the potential for a 100% HTTPS Web as we are, please consider <a href="https://letsencrypt.org/getinvolved/">getting involved</a>, <a href="https://letsencrypt.org/donate/">making a donation</a>, or <a href="https://www.abetterinternet.org/sponsor/">sponsoring Let’s Encrypt</a>.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2019/04/15/transitioning-to-isrg-root.html</guid>
      </item><item>
        <title>The ACME Protocol is an IETF Standard</title>
        <link>https://letsencrypt.org/2019/03/11/acme-protocol-ietf-standard.html</link>
        <pubDate>Mon, 11 Mar 2019 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>It has long been a dream of ours for there to be a standardized protocol for certificate issuance and management. That dream has become a reality now that the IETF has standardized the ACME protocol as <a href="https://tools.ietf.org/html/rfc8555">RFC 8555</a>. I’d like to thank everyone involved in that effort, including Let’s Encrypt staff and other IETF contributors.</p>
<p>Having a standardized protocol for certificate issuance and management is important for two reasons. First, it improves the quality of the software ecosystem because developers can focus on developing great software for a single protocol, instead of having many pieces of less well maintained software for bespoke APIs. Second, a standardized protocol makes switching from one CA to another easier by minimizing technical dependency lock-in.</p>
<p>We consider the standardized version of the ACME protocol to be the second major version of ACME, so we refer to it as ACMEv2. The first version, which we call ACMEv1, is the version of ACME that Let’s Encrypt has used since our launch in 2015. Now that ACMEv2 is standardized, <a href="https://community.letsencrypt.org/t/end-of-life-plan-for-acmev1/88430">we are announcing an end-of-life plan for our ACMEv1 support</a>.</p>
<p>Let’s Encrypt is currently providing certificates for more than 150 million websites. We look forward to being able to serve even more websites as efforts like this make deploying HTTPS with Let’s Encrypt even easier. If you’re as excited about the potential for a 100% HTTPS Web as we are, please consider <a href="https://letsencrypt.org/getinvolved/">getting involved</a>, <a href="https://letsencrypt.org/donate/">making a donation</a>, or <a href="https://www.abetterinternet.org/sponsor/">sponsoring Let’s Encrypt</a>.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2019/03/11/acme-protocol-ietf-standard.html</guid>
      </item><item>
        <title>Facebook Expands Support for Let’s Encrypt</title>
        <link>https://letsencrypt.org/2019/02/12/facebook-expands-support-for-letsencrypt.html</link>
        <pubDate>Tue, 12 Feb 2019 00:00:00 +0000</pubDate>
        <description><![CDATA[<blockquote>
<p>We’re excited that Facebook is supporting our work through a three-year Platinum sponsorship! We asked them to share their thoughts on HTTPS adoption here. Please join us in thanking Facebook for their support of Let’s Encrypt and our mission to encrypt the Web! - Josh Aas, Executive Director, ISRG / Let’s Encrypt</p></blockquote>
<p>If the web is more secure, everybody wins. A key technology for making this happen is HTTPS, which enables encrypted connections between people and the websites that they visit. Among its many benefits, HTTPS helps to prevent sensitive data from leaking over the network, and from connections being censored or otherwise maliciously manipulated. The more widely it is deployed, the more secure and private the web becomes for everyone.</p>
<p>We have long worked to protect Facebook users from <a href="https://www.facebook.com/notes/facebook-security/link-shim-protecting-the-people-who-use-facebook-from-malicious-urls/10150492832835766/">spammy or malicious content</a> when navigating away from our platform, and last year we extended this protection to <a href="https://www.facebook.com/notes/facebook-security/upgrades-to-facebooks-link-security/10155158540455766/">upgrading outbound HTTP links to HTTPS</a> where possible. In this way we can help improve people&rsquo;s security and privacy as they leave our platform. While we take these steps to improve the security and safety of Facebook users, ultimately we hope to see more websites allowing HTTPS connections.</p>
<p>Enabling HTTPS was historically a non-trivial task for any site. It required investment in buying and installing a TLS certificate, which verifies control over the website so that HTTPS can work. The technical difficulty and cost used to serve as barriers to expanding the use of HTTPS across the web. However, things have recently started to change, largely thanks to Let’s Encrypt, a non-profit certificate authority, launched in 2015.</p>
<p>Let’s Encrypt provides free TLS certificates, which are often installed using a tool maintained by the Electronic Frontier Foundation, to massively simplify enabling HTTPS. With that, Let’s Encrypt is effectively upgrading the security and privacy of the web, at no cost to <a href="https://letsencrypt.org/stats/">over 150 million websites</a>, including those frequented by Facebook users.</p>
<p>We&rsquo;re excited to see the continuous increase in HTTPS adoption across the internet. More websites are choosing to enable secure connections which provide the security and privacy benefits and enable a better browsing experience. For example, navigating from Facebook to another site can be faster over encrypted connections than HTTP, and an increasing number of browser features will only work when sites use HTTPS.</p>
<p>We have sponsored Let&rsquo;s Encrypt from the start, and are proud to share that we are increasing that support as a platinum sponsor. We believe that Let&rsquo;s Encrypt has played a significant and important role in bringing encryption into the mainstream and raising the number of secure sites across the internet.</p>
<p>As we automatically <a href="https://developers.facebook.com/docs/sharing/webmasters/crawler/">crawl</a> web content on Facebook (for example, to generate link previews), about 38% of HTTPS domains we observe use Let&rsquo;s Encrypt, making it the top certificate authority. Over 19% of outbound clicks from Facebook to HTTPS-enabled websites go to sites that use certificates from Let&rsquo;s Encrypt. Overall, more than 72% of outbound clicks from Facebook are now destined for HTTPS-enabled websites, including the links that we <a href="https://www.facebook.com/notes/protect-the-graph/upgrades-to-facebooks-link-security/2015650322008442/">upgrade</a> to HTTPS in real time.</p>
<p>We&rsquo;re proud to continue to collaborate with Let&rsquo;s Encrypt on helping to improve web security. To any website owners who haven&rsquo;t yet enabled encryption, we strongly encourage you to use Let&rsquo;s Encrypt to protect your users and allow HTTPS connections.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2019/02/12/facebook-expands-support-for-letsencrypt.html</guid>
      </item><item>
        <title>Looking Forward to 2019</title>
        <link>https://letsencrypt.org/2018/12/31/looking-forward-to-2019.html</link>
        <pubDate>Mon, 31 Dec 2018 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Let’s Encrypt had a great year in 2018. We’re now serving more than 150 million websites while maintaining a stellar security and compliance track record.</p>
<p>Most importantly though, the Web went from 67% encrypted page loads to 77% in 2018, according to statistics from Mozilla. This is an incredible rate of change!</p>
<p>We&rsquo;d like to thank all of the people and organizations who worked hard to create a more secure and privacy-respecting Web.</p>
<p>This year we created a new website for the legal entity behind Let&rsquo;s Encrypt, <a href="https://www.abetterinternet.org/">Internet Security Research Group (ISRG)</a>, because we believe there will be other instances beyond Let&rsquo;s Encrypt in which ISRG might be able to help to build, or improve access to, a better Internet.</p>
<p>While we’re proud of what we accomplished in 2018, we spend most of our time looking forward rather than back. As we wrap up our own planning process for 2019, we&rsquo;d like to share some of our plans with you, including both the things we’re excited about and the challenges we’ll face. We’ll cover service growth, new features, infrastructure, and finances.</p>
<h2 id="service-growth">Service Growth</h2>
<p>Let’s Encrypt helps to drive HTTPS adoption by offering a free, easy to use, and globally available option for obtaining the certificates required to enable HTTPS. HTTPS adoption on the Web took off at an unprecedented rate from the day Let’s Encrypt launched to the public.</p>
<p>The number of certificates and unique domains we support continues to grow rapidly:</p>
<div class="figure">
  <div id="activeUsage" title="Let's Encrypt Growth" class="statsgraph"></div>
</div>

<link rel="stylesheet" href="/css/plotly.css?v=3.4.0" />
<div id="plotly.js-style-global" class="no-inline-styles"></div>
<span id="plot-translations"
    data-issued="Issued"
    data-certificates_active="Certificates Active"
    data-fully_qualified_domains_active="Fully-Qualified Domains Active"
    data-registered_domains_active="Registered Domains Active"
    data-active_count="Active Count"
    data-issued_per_day="Issued Per Day"
    data-all_users="All users"
    data-usa_users="USA users"
    data-japan_users="Japan users"
    data-percent_https="Percent of Pageloads over HTTPS (14 day moving average)"
></span>

<script src="/js/plotly-min.js?v=3.4.0" defer></script>


    

<script src="/js/stats.js" defer></script>

<p>We expect strong growth again in 2019, likely up to 120M active certificates and 215M fully qualified domains. You can view our recently revamped <a href="https://letsencrypt.org/stats/">stats page</a> for more information.</p>
<p>One of the reasons Let’s Encrypt is so easy to use is that our community has done great work making client software that works well for a wide variety of platforms. We’d like to thank everyone involved in the development of more than 85 <a href="https://letsencrypt.org/docs/client-options/">client software options</a> for Let’s Encrypt. Support for our protocol, ACME, is <a href="https://letsencrypt.org/2017/10/17/acme-support-in-apache-httpd.html">built in to Apache</a> and we’re hoping 2019 will be the year that it comes to Nginx.</p>
<p>Other organizations and communities are also doing great work to promote HTTPS adoption, and thus stimulate demand for our services. For example, browsers are starting to make their users more aware of the risks associated with unencrypted HTTP (e.g. <a href="https://blog.mozilla.org/security/2018/01/15/secure-contexts-everywhere/">Firefox</a>, <a href="https://www.blog.google/products/chrome/milestone-chrome-security-marking-http-not-secure/">Chrome</a>). Many hosting providers and CDNs are making it easier than ever for all of their customers to use HTTPS. <a href="https://https.cio.gov/">Government agencies</a> are waking up to the need for stronger security to protect constituents. The media community is working to <a href="https://securethe.news/">Secure the News</a>.</p>
<h2 id="new-features">New Features</h2>
<p>In 2018 we introduced <a href="https://letsencrypt.org/upcoming-features/">several new features</a>, including ACMEv2 support and wildcard certificates. We’ve got some exciting features planned for 2019.</p>
<p>The feature we’re most excited about is multi-perspective validation. Currently, when a subscriber requests a certificate, we validate domain control from a single network perspective. This is standard practice for CAs. If an attacker along the network path for the validation check can interfere with traffic they can potentially cause certificates to be issued that should not be issued. We’re most concerned about this <a href="https://www.princeton.edu/~pmittal/publications/bgp-tls-usenix18.pdf">happening via BGP hijacking</a>, and since BGP is not going to be secured any time soon, we needed to find another mitigation. The solution we intend to deploy in 2019 is multi-perspective validation, in which we will check from multiple network perspectives (distinct Autonomous Systems). This means that potential BGP hijackers would need to hijack multiple routes at the same time in order to pull off a successful attack, which is significantly more difficult than hijacking a single route. We are working with a talented research team at Princeton to design the most effective multi-perspective validation system we can, and have already turned parts of this feature on in our staging environment.</p>
<p>We are also planning to introduce a <a href="https://www.certificate-transparency.org/">Certificate Transparency (CT) log</a> in 2019. All certificate authorities like Let’s Encrypt are required to submit certificates to CT logs but there are not enough stable logs in the ecosystem. As such, we are moving forward with plans to run a log which all CAs will be able to submit to.</p>
<p>We had planned to add ECDSA root and intermediate certificates in 2018 but other priorities ultimately took precedence. We hope to do this in 2019. ECDSA is generally considered to be the future of digital signature algorithms on the Web due to the fact that it is more efficient than RSA. Let’s Encrypt will currently sign ECDSA keys from subscribers, but we sign with the RSA key from one of our intermediate certificates. Once we have an ECDSA root and intermediates, our subscribers will be able to deploy certificate chains which are entirely ECDSA.</p>
<h2 id="infrastructure">Infrastructure</h2>
<p>Our CA infrastructure is capable of issuing millions of certificates per day with redundancy for stability and a wide variety of security safeguards, both physical and logical. Our infrastructure also generates and signs around 40 million OCSP responses daily, and serves those responses approximately 5.5 billion times per day. We expect these numbers to grow approximately 40% in 2019.</p>
<p>Our physical CA infrastructure currently occupies approximately 55 units of rack space, split between two datacenters, consisting primarily of compute servers, storage, HSMs, switches, and firewalls. When we issue more certificates it puts the most stress on storage for our databases. We regularly invest in more and faster storage for our database servers, and that will continue in 2019.</p>
<p>All of our infrastructure is managed by our Site Reliability Engineering (SRE) team, which is comprised of six people. SRE staff are responsible for building and maintaining all physical and logical CA infrastructure. These staff are largely responsible for our high standards for security and compliance. The team also manages a 24/7/365 on-call schedule and they are primary participants in both security and compliance audits.</p>
<h2 id="finances">Finances</h2>
<p>We pride ourselves on being an efficient organization. In 2019 Let’s Encrypt will secure a massive portion of the Web with a budget of only $3.6M. We believe this represents an incredible value and that contributing to Let’s Encrypt is one of the most effective ways to help create a more secure and privacy-respecting Web.</p>
<p>Our 2019 fundraising efforts are off to a strong start with Platinum sponsorships from Cisco, OVH, Mozilla, Google Chrome, Electronic Frontier Foundation, and Internet Society, as well as <a href="https://letsencrypt.org/sponsors/">many other Gold and Silver sponsors</a>. The Ford Foundation has renewed their grant to Let’s Encrypt as well. We are seeking additional sponsorship and grant assistance to meet our full needs for 2019.</p>
<h2 id="support-let-s-encrypt">Support Let’s Encrypt</h2>
<p>We depend on contributions from our community of users and supporters in order to provide our services. If your company or organization would like to <a href="https://www.abetterinternet.org/sponsor/">sponsor</a> Let’s Encrypt please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>. We ask that you make an <a href="https://letsencrypt.org/donate/">individual contribution</a> if it is within your means.</p>
<p>We’re grateful for the industry and community support that we receive, and we look forward to continuing to create a more secure and privacy-respecting Web!</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2018/12/31/looking-forward-to-2019.html</guid>
      </item><item>
        <title>Let&#39;s Encrypt Root Trusted By All Major Root Programs</title>
        <link>https://letsencrypt.org/2018/08/06/trusted-by-all-major-root-programs.html</link>
        <pubDate>Mon, 06 Aug 2018 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>As of the end of July 2018, the Let’s Encrypt root, <a href="https://letsencrypt.org/certificates/">ISRG Root X1</a>, is directly trusted by Microsoft products. Our root is now trusted by all major root programs, including Microsoft, Google, Apple, Mozilla, Oracle, and Blackberry.</p>
<p>Today’s announcement that we’re trusted by all major root programs represents a major milestone for us, but it’s not the conclusion of our journey towards being directly trusted everywhere.</p>
<p>Certificates from Let’s Encrypt have been widely trusted <a href="https://letsencrypt.org/2015/10/19/lets-encrypt-is-trusted.html">since our first issuance</a> because of a cross-signature from another CA called IdenTrust. Browsers and operating systems have not, by default, directly trusted Let’s Encrypt certificates, but they trust IdenTrust, and IdenTrust trusts us, so we are trusted indirectly. IdenTrust is a critical partner in our effort to secure the Web, as they have allowed us to provide widely trusted certificates from day one.</p>
<p>While Let’s Encrypt is now directly trusted by almost all newer versions of operating systems, browsers, and devices, there are still many older versions in the world that do not directly trust Let’s Encrypt. Some of those older systems will eventually be updated to trust Let’s Encrypt directly. Some will not, and we’ll need to wait for the vast majority of those to cycle out of the Web ecosystem. We expect this will take at least five more years, so we plan to use a cross signature until then.</p>
<p>As a subscriber of Let’s Encrypt, today’s milestone does not require any action on your part.  Just continue to use best practices, including making sure that your ACME client (e.g. Certbot or an alternative) is regularly receiving software updates.</p>
<p>Let’s Encrypt is currently providing certificates for more than 115 million websites. We look forward to being able to serve even more websites as efforts like this make deploying HTTPS with Let’s Encrypt even easier. If you’re as excited about the potential for a 100% HTTPS Web as we are, please consider <a href="https://letsencrypt.org/getinvolved/">getting involved</a>, <a href="https://letsencrypt.org/donate/">making a donation</a>, or <a href="https://www.abetterinternet.org/sponsor/">sponsoring Let’s Encrypt</a>.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2018/08/06/trusted-by-all-major-root-programs.html</guid>
      </item><item>
        <title>Engineering deep dive: Encoding of SCTs in certificates</title>
        <link>https://letsencrypt.org/2018/04/04/sct-encoding.html</link>
        <pubDate>Wed, 04 Apr 2018 16:00:00 +0000</pubDate>
        <description><![CDATA[<p>Let&rsquo;s Encrypt recently <a href="https://community.letsencrypt.org/t/signed-certificate-timestamps-embedded-in-certificates/57187">launched SCT embedding in
certificates</a>.
This feature allows browsers to check that a certificate was submitted to a
<a href="https://en.wikipedia.org/wiki/Certificate_Transparency">Certificate Transparency</a>
log. As part of the launch, we did a thorough review
that the encoding of Signed Certificate Timestamps (SCTs) in our certificates
matches the relevant specifications. In this post, I&rsquo;ll dive into the details.
You&rsquo;ll learn more about X.509, ASN.1, DER, and TLS encoding, with references to
the relevant RFCs.</p>
<p>Certificate Transparency offers three ways to deliver SCTs to a browser: In a
TLS extension, in stapled OCSP, or embedded in a certificate. We chose to
implement the embedding method because it would just work for Let&rsquo;s Encrypt
subscribers without additional work. In the SCT embedding method, we submit
a &ldquo;precertificate&rdquo; with a <a href="/2018/04/04/sct-encoding.html#poison">poison extension</a> to a set of
CT logs, and get back SCTs. We then issue a real certificate based on the
precertificate, with two changes: The poison extension is removed, and the SCTs
obtained earlier are added in another extension.</p>
<p>Given a certificate, let&rsquo;s first look for the SCT list extension. According to CT (<a href="https://tools.ietf.org/html/rfc6962#section-3.3">RFC 6962
section 3.3</a>),
the extension OID for a list of SCTs is <code>1.3.6.1.4.1.11129.2.4.2</code>. An <a href="https://www.hl7.org/Oid/information.cfm">OID (object
ID)</a> is a series of integers, hierarchically
assigned and globally unique. They are used extensively in X.509, for instance
to uniquely identify extensions.</p>
<p>We can <a href="https://acme-v01.api.letsencrypt.org/acme/cert/031f2484307c9bc511b3123cb236a480d451">download an example certificate</a>,
and view it using OpenSSL (if your OpenSSL is old, it may not display the
detailed information):</p>
<pre tabindex="0"><code>$ openssl x509 -noout -text -inform der -in Downloads/031f2484307c9bc511b3123cb236a480d451
...
CT Precertificate SCTs:
    Signed Certificate Timestamp:
        Version   : v1(0)
        Log ID    : DB:74:AF:EE:CB:29:EC:B1:FE:CA:3E:71:6D:2C:E5:B9:
                    AA:BB:36:F7:84:71:83:C7:5D:9D:4F:37:B6:1F:BF:64
        Timestamp : Mar 29 18:45:07.993 2018 GMT
        Extensions: none
        Signature : ecdsa-with-SHA256
                    30:44:02:20:7E:1F:CD:1E:9A:2B:D2:A5:0A:0C:81:E7:
                    13:03:3A:07:62:34:0D:A8:F9:1E:F2:7A:48:B3:81:76:
                    40:15:9C:D3:02:20:65:9F:E9:F1:D8:80:E2:E8:F6:B3:
                    25:BE:9F:18:95:6D:17:C6:CA:8A:6F:2B:12:CB:0F:55:
                    FB:70:F7:59:A4:19
    Signed Certificate Timestamp:
        Version   : v1(0)
        Log ID    : 29:3C:51:96:54:C8:39:65:BA:AA:50:FC:58:07:D4:B7:
                    6F:BF:58:7A:29:72:DC:A4:C3:0C:F4:E5:45:47:F4:78
        Timestamp : Mar 29 18:45:08.010 2018 GMT
        Extensions: none
        Signature : ecdsa-with-SHA256
                    30:46:02:21:00:AB:72:F1:E4:D6:22:3E:F8:7F:C6:84:
                    91:C2:08:D2:9D:4D:57:EB:F4:75:88:BB:75:44:D3:2F:
                    95:37:E2:CE:C1:02:21:00:8A:FF:C4:0C:C6:C4:E3:B2:
                    45:78:DA:DE:4F:81:5E:CB:CE:2D:57:A5:79:34:21:19:
                    A1:E6:5B:C7:E5:E6:9C:E2
</code></pre><p>Now let&rsquo;s go a little deeper. How is that extension represented in
the certificate? Certificates are expressed in
<a href="https://en.wikipedia.org/wiki/Abstract_Syntax_Notation_One">ASN.1</a>,
which generally refers to both a language for expressing data structures
and a set of formats for encoding them. The most common format,
<a href="https://en.wikipedia.org/wiki/X.690#DER_encoding">DER</a>,
is a tag-length-value format. That is, to encode an object, first you write
down a tag representing its type (usually one byte), then you write
down a number expressing how long the object is, then you write down
the object contents. This is recursive: An object can contain multiple
objects within it, each of which has its own tag, length, and value.</p>
<p>One of the cool things about DER and other tag-length-value formats is that you
can decode them to some degree without knowing what they mean. For instance, I
can tell you that 0x30 means the data type &ldquo;SEQUENCE&rdquo; (a struct, in ASN.1
terms), and 0x02 means &ldquo;INTEGER&rdquo;, then give you this hex byte sequence to
decode:</p>
<pre tabindex="0"><code>30 06 02 01 03 02 01 0A
</code></pre><p>You could tell me right away that decodes to:</p>
<pre tabindex="0"><code>SEQUENCE
  INTEGER 3
  INTEGER 10
</code></pre><p>Try it yourself with this great <a href="https://lapo.it/asn1js/#300602010302010A">JavaScript ASN.1
decoder</a>. However, you wouldn&rsquo;t know
what those integers represent without the corresponding ASN.1 schema (or
&ldquo;module&rdquo;). For instance, if you knew that this was a piece of DogData, and the
schema was:</p>
<pre tabindex="0"><code>DogData ::= SEQUENCE {
    legs           INTEGER,
    cutenessLevel  INTEGER
}
</code></pre><p>You&rsquo;d know this referred to a three-legged dog with a cuteness level of 10.</p>
<p>We can take some of this knowledge and apply it to our certificates. As a first
step, convert the above certificate to hex with
<code>xxd -ps &lt; Downloads/031f2484307c9bc511b3123cb236a480d451</code>. You can then copy
and paste the result into
<a href="https://lapo.it/asn1js">lapo.it/asn1js</a> (or use <a href="https://lapo.it/asn1js/#3082062F30820517A0030201020212031F2484307C9BC511B3123CB236A480D451300D06092A864886F70D01010B0500304A310B300906035504061302555331163014060355040A130D4C6574277320456E6372797074312330210603550403131A4C6574277320456E637279707420417574686F72697479205833301E170D3138303332393137343530375A170D3138303632373137343530375A302D312B3029060355040313223563396137662E6C652D746573742E686F66666D616E2D616E64726577732E636F6D30820122300D06092A864886F70D01010105000382010F003082010A0282010100BCEAE8F504D9D91FCFC69DB943254A7FED7C6A3C04E2D5C7DDD010CBBC555887274489CA4F432DCE6D7AB83D0D7BDB49C466FBCA93102DC63E0EB1FB2A0C50654FD90B81A6CB357F58E26E50F752BF7BFE9B56190126A47409814F59583BDD337DFB89283BE22E81E6DCE13B4E21FA6009FC8A7F903A17AB05C8BED85A715356837E849E571960A8999701EAE9CE0544EAAB936B790C3C35C375DB18E9AA627D5FA3579A0FB5F8079E4A5C9BE31C2B91A7F3A63AFDFEDB9BD4EA6668902417D286BE4BBE5E43CD9FE1B8954C06F21F5C5594FD3AB7D7A9CBD6ABF19774D652FD35C5718C25A3BA1967846CED70CDBA95831CF1E09FF7B8014E63030CE7A776750203010001A382032A30820326300E0603551D0F0101FF0404030205A0301D0603551D250416301406082B0601050507030106082B06010505070302300C0603551D130101FF04023000301D0603551D0E041604148B3A21ABADF50C4B30DCCD822724D2C4B9BA29E3301F0603551D23041830168014A84A6A63047DDDBAE6D139B7A64565EFF3A8ECA1306F06082B0601050507010104633061302E06082B060105050730018622687474703A2F2F6F6373702E696E742D78332E6C657473656E63727970742E6F7267302F06082B060105050730028623687474703A2F2F636572742E696E742D78332E6C657473656E63727970742E6F72672F302D0603551D110426302482223563396137662E6C652D746573742E686F66666D616E2D616E64726577732E636F6D3081FE0603551D200481F63081F33008060667810C0102013081E6060B2B0601040182DF130101013081D6302606082B06010505070201161A687474703A2F2F6370732E6C657473656E63727970742E6F72673081AB06082B0601050507020230819E0C819B54686973204365727469666963617465206D6179206F6E6C792062652072656C6965642075706F6E2062792052656C79696E67205061727469657320616E64206F6E6C7920696E206163636F7264616E636520776974682074686520436572746966696361746520506F6C69637920666F756E642061742068747470733A2F2F6C657473656E63727970742E6F72672F7265706F7369746F72792F30820104060A2B06010401D6790204020481F50481F200F0007500DB74AFEECB29ECB1FECA3E716D2CE5B9AABB36F7847183C75D9D4F37B61FBF64000001627313EB19000004030046304402207E1FCD1E9A2BD2A50A0C81E713033A0762340DA8F91EF27A48B3817640159CD30220659FE9F1D880E2E8F6B325BE9F18956D17C6CA8A6F2B12CB0F55FB70F759A419007700293C519654C83965BAAA50FC5807D4B76FBF587A2972DCA4C30CF4E54547F478000001627313EB2A0000040300483046022100AB72F1E4D6223EF87FC68491C208D29D4D57EBF47588BB7544D32F9537E2CEC10221008AFFC40CC6C4E3B24578DADE4F815ECBCE2D57A579342119A1E65BC7E5E69CE2300D06092A864886F70D01010B0500038201010095F87B663176776502F792DDD232C216943C7803876FCBEB46393A36354958134482E0AFEED39011618327C2F0203351758FEB420B73CE6C797B98F88076F409F3903F343D1F5D9540F41EF47EB39BD61B62873A44F00B7C8B593C6A416458CF4B5318F35235BC88EABBAA34F3E3F81BD3B047E982EE1363885E84F76F2F079F2B6EEB4ECB58EFE74C8DE7D54DE5C89C4FB5BB0694B837BD6F02BAFD5A6C007D1B93D25007BDA9B2BDBF82201FE1B76B628CE34E2D974E8E623EC57A5CB53B435DD4B9993ADF6BA3972F2B29D259594A94E17BBE06F34AAE5CF0F50297548C4DFFC5566136F78A3D3B324EAE931A14EB6BE6DA1D538E48CF077583C67B52E7E8">this handy link</a>). You can also run <code>openssl asn1parse -i -inform der -in Downloads/031f2484307c9bc511b3123cb236a480d451</code> to use OpenSSL&rsquo;s parser, which is less easy to use in some ways, but easier to copy and paste.</p>
<p>In the decoded data, we can find the OID <code>1.3.6.1.4.1.11129.2.4.2</code>, indicating
the SCT list extension. Per <a href="https://tools.ietf.org/html/rfc5280#page-17">RFC 5280, section
4.1</a>, an extension is defined:</p>
<pre tabindex="0"><code>Extension  ::=  SEQUENCE  {
      extnID      OBJECT IDENTIFIER,
      critical    BOOLEAN DEFAULT FALSE,
      extnValue   OCTET STRING
                  -- contains the DER encoding of an ASN.1 value
                  -- corresponding to the extension type identified
                  -- by extnID
      }
</code></pre><p>We&rsquo;ve found the <code>extnID</code>. The &ldquo;critical&rdquo; field is omitted because it has the
default value (false). Next up is the <code>extnValue</code>. This has the type
<code>OCTET STRING</code>, which has the tag &ldquo;0x04&rdquo;. <code>OCTET STRING</code> means &ldquo;here&rsquo;s
a bunch of bytes!&rdquo; In this case, as described by the spec, those bytes
happen to contain more DER. This is a fairly common pattern in X.509
to deal with parameterized data. For instance, this allows defining a
structure for extensions without knowing ahead of time all the structures
that a future extension might want to carry in its value. If you&rsquo;re a C
programmer, think of it as a <code>void*</code> for data structures. If you prefer Go,
think of it as an <code>interface{}</code>.</p>
<p>Here&rsquo;s that <code>extnValue</code>:</p>
<pre tabindex="0"><code>04 81 F5 0481F200F0007500DB74AFEECB29ECB1FECA3E716D2CE5B9AABB36F7847183C75D9D4F37B61FBF64000001627313EB19000004030046304402207E1FCD1E9A2BD2A50A0C81E713033A0762340DA8F91EF27A48B3817640159CD30220659FE9F1D880E2E8F6B325BE9F18956D17C6CA8A6F2B12CB0F55FB70F759A419007700293C519654C83965BAAA50FC5807D4B76FBF587A2972DCA4C30CF4E54547F478000001627313EB2A0000040300483046022100AB72F1E4D6223EF87FC68491C208D29D4D57EBF47588BB7544D32F9537E2CEC10221008AFFC40CC6C4E3B24578DADE4F815ECBCE2D57A579342119A1E65BC7E5E69CE2
</code></pre><p>That&rsquo;s tag &ldquo;0x04&rdquo;, meaning <code>OCTET STRING</code>, followed by &ldquo;0x81 0xF5&rdquo;, meaning
&ldquo;this string is 245 bytes long&rdquo; (the 0x81 prefix is part of <a href="/2018/04/04/sct-encoding.html#variable-length">variable length
number encoding</a>).</p>
<p>According to <a href="https://tools.ietf.org/html/rfc6962#section-3.3">RFC 6962, section
3.3</a>, &ldquo;obtained SCTs
can be directly embedded in the final certificate, by encoding the
SignedCertificateTimestampList structure as an ASN.1 <code>OCTET STRING</code>
and inserting the resulting data in the TBSCertificate as an X.509v3
certificate extension&rdquo;</p>
<p>So, we have an <code>OCTET STRING</code>, all&rsquo;s good, right? Except if you remove the
tag and length from extnValue to get its value, you&rsquo;re left with:</p>
<pre tabindex="0"><code>04 81 F2 00F0007500DB74AFEEC...
</code></pre><p>There&rsquo;s that &ldquo;0x04&rdquo; tag again, but with a shorter length. Why
do we nest one <code>OCTET STRING</code> inside another?  It&rsquo;s because the
contents of extnValue are required by RFC 5280 to be valid DER, but a
SignedCertificateTimestampList is not encoded using DER (more on that
in a minute). So, by RFC 6962, a SignedCertificateTimestampList is wrapped in an
<code>OCTET STRING</code>, which is wrapped in another <code>OCTET STRING</code> (the extnValue).</p>
<p>Once we decode that second <code>OCTET STRING</code>, we&rsquo;re left with the contents:</p>
<pre tabindex="0"><code>00F0007500DB74AFEEC...
</code></pre><p>&ldquo;0x00&rdquo; isn&rsquo;t a valid tag in DER. What is this? It&rsquo;s TLS encoding. This is
defined in <a href="https://tools.ietf.org/html/rfc5246#section-4">RFC 5246, section 4</a>
(the TLS 1.2 RFC). TLS encoding, like ASN.1, has both a way to define data
structures and a way to encode those structures. TLS encoding differs
from DER in that there are no tags, and lengths are only encoded when necessary for
variable-length arrays. Within an encoded structure, the type of a field is determined by
its position, rather than by a tag. This means that TLS-encoded structures are
more compact than DER structures, but also that they can&rsquo;t be processed without
knowing the corresponding schema. For instance, here&rsquo;s the top-level schema from
<a href="https://tools.ietf.org/html/rfc6962#section-3.3">RFC 6962, section 3.3</a>:</p>
<pre tabindex="0"><code>   The contents of the ASN.1 OCTET STRING embedded in an OCSP extension
   or X509v3 certificate extension are as follows:

        opaque SerializedSCT&lt;1..2^16-1&gt;;

        struct {
            SerializedSCT sct_list &lt;1..2^16-1&gt;;
        } SignedCertificateTimestampList;

   Here, &#34;SerializedSCT&#34; is an opaque byte string that contains the
   serialized TLS structure.
</code></pre><p>Right away, we&rsquo;ve found one of those variable-length arrays. The length of such
an array (in bytes) is always represented by a length field just big enough to
hold the max array size. The max size of an <code>sct_list</code> is 65535 bytes, so the
length field is two bytes wide. Sure enough, those first two bytes are &ldquo;0x00
0xF0&rdquo;, or 240 in decimal. In other words, this <code>sct_list</code> will have 240 bytes. We
don&rsquo;t yet know how many SCTs will be in it. That will become clear only by
continuing to parse the encoded data and seeing where each struct ends (spoiler
alert: there are two SCTs!).</p>
<p>Now we know the first SerializedSCT starts with <code>0075...</code>. SerializedSCT
is itself a variable-length field, this time containing <code>opaque</code> bytes (much like <code>OCTET STRING</code>
back in the ASN.1 world). Like SignedCertificateTimestampList, it has a max size
of 65535 bytes, so we pull off the first two bytes and discover that the first
SerializedSCT is 0x0075 (117 decimal) bytes long. Here&rsquo;s the whole thing, in
hex:</p>
<pre tabindex="0"><code>00DB74AFEECB29ECB1FECA3E716D2CE5B9AABB36F7847183C75D9D4F37B61FBF64000001627313EB19000004030046304402207E1FCD1E9A2BD2A50A0C81E713033A0762340DA8F91EF27A48B3817640159CD30220659FE9F1D880E2E8F6B325BE9F18956D17C6CA8A6F2B12CB0F55FB70F759A419
</code></pre><p>This can be decoded using the TLS encoding struct defined in <a href="https://tools.ietf.org/html/rfc6962#page-13">RFC 6962, section
3.2</a>:</p>
<pre tabindex="0"><code>enum { v1(0), (255) }
 Version;

struct {
   opaque key_id[32];
} LogID;

opaque CtExtensions&lt;0..2^16-1&gt;;
...

struct {
   Version sct_version;
   LogID id;
   uint64 timestamp;
   CtExtensions extensions;
   digitally-signed struct {
       Version sct_version;
       SignatureType signature_type = certificate_timestamp;
       uint64 timestamp;
       LogEntryType entry_type;
       select(entry_type) {
           case x509_entry: ASN.1Cert;
           case precert_entry: PreCert;
       } signed_entry;
      CtExtensions extensions;
   };
} SignedCertificateTimestamp;
</code></pre><p>Breaking that down:</p>
<pre tabindex="0"><code># Version sct_version v1(0)
00
# LogID id (aka opaque key_id[32])
DB74AFEECB29ECB1FECA3E716D2CE5B9AABB36F7847183C75D9D4F37B61FBF64
# uint64 timestamp (milliseconds since the epoch)
000001627313EB19
# CtExtensions extensions (zero-length array)
0000
# digitally-signed struct
04030046304402207E1FCD1E9A2BD2A50A0C81E713033A0762340DA8F91EF27A48B3817640159CD30220659FE9F1D880E2E8F6B325BE9F18956D17C6CA8A6F2B12CB0F55FB70F759A419
</code></pre><p>To understand the &ldquo;digitally-signed struct,&rdquo; we need to turn back to <a href="https://tools.ietf.org/html/rfc5246#section-4.7">RFC 5246,
section 4.7</a>. It says:</p>
<pre tabindex="0"><code>A digitally-signed element is encoded as a struct DigitallySigned:

struct {
   SignatureAndHashAlgorithm algorithm;
   opaque signature&lt;0..2^16-1&gt;;
} DigitallySigned;
</code></pre><p>And in <a href="https://tools.ietf.org/html/rfc5246#section-7.4.1.4.1">section
7.4.1.4.1</a>:</p>
<pre tabindex="0"><code>enum {
    none(0), md5(1), sha1(2), sha224(3), sha256(4), sha384(5),
    sha512(6), (255)
} HashAlgorithm;

enum { anonymous(0), rsa(1), dsa(2), ecdsa(3), (255) }
  SignatureAlgorithm;

struct {
      HashAlgorithm hash;
      SignatureAlgorithm signature;
} SignatureAndHashAlgorithm;
</code></pre><p>We have &ldquo;0x0403&rdquo;, which corresponds to sha256(4) and ecdsa(3). The next two
bytes, &ldquo;0x0046&rdquo;, tell us the length of the &ldquo;opaque signature&rdquo; field, 70 bytes in
decimal. To decode the signature, we reference <a href="https://tools.ietf.org/html/rfc4492#page-20">RFC 4492 section
5.4</a>, which says:</p>
<pre tabindex="0"><code>The digitally-signed element is encoded as an opaque vector &lt;0..2^16-1&gt;, the
contents of which are the DER encoding corresponding to the
following ASN.1 notation.

Ecdsa-Sig-Value ::= SEQUENCE {
   r       INTEGER,
   s       INTEGER
}
</code></pre><p>Having dived through two layers of TLS encoding, we are now back in ASN.1 land!
We
<a href="https://lapo.it/asn1js/#304402207E1FCD1E9A2BD2A50A0C81E713033A0762340DA8F91EF27A48B3817640159CD30220659FE9F1D880E2E8F6B325BE9F18956D17C6CA8A6F2B12CB0F55FB70F759A419">decode</a>
the remaining bytes into a SEQUENCE containing two INTEGERS. And we&rsquo;re done! Here&rsquo;s the whole
extension decoded:</p>
<pre tabindex="0"><code># Extension SEQUENCE - RFC 5280
30
# length 0x0104 bytes (260 decimal)
820104
  # OBJECT IDENTIFIER
  06
  # length 0x0A bytes (10 decimal)
  0A
    # value (1.3.6.1.4.1.11129.2.4.2)
    2B06010401D679020402
  # OCTET STRING
  04
  # length 0xF5 bytes (245 decimal)
  81F5
    # OCTET STRING (embedded) - RFC 6962
    04
    # length 0xF2 bytes (242 decimal)
    81F2
    # Beginning of TLS encoded SignedCertificateTimestampList - RFC 5246 / 6962
    # length 0xF0 bytes
    00F0
      # opaque SerializedSCT&lt;1..2^16-1&gt;
      # length 0x75 bytes
      0075
      # Version sct_version v1(0)
      00
      # LogID id (aka opaque key_id[32])
      DB74AFEECB29ECB1FECA3E716D2CE5B9AABB36F7847183C75D9D4F37B61FBF64
      # uint64 timestamp (milliseconds since the epoch)
      000001627313EB19
      # CtExtensions extensions (zero-length array)
      0000
      # digitally-signed struct - RFC 5426
      # SignatureAndHashAlgorithm (ecdsa-sha256)
      0403
      # opaque signature&lt;0..2^16-1&gt;;
      # length 0x0046
      0046
        # DER-encoded Ecdsa-Sig-Value - RFC 4492
        30 # SEQUENCE
        44 # length 0x44 bytes
          02 # r INTEGER
          20 # length 0x20 bytes
            # value
            7E1FCD1E9A2BD2A50A0C81E713033A0762340DA8F91EF27A48B3817640159CD3
          02 # s INTEGER
          20 # length 0x20 bytes
            # value
            659FE9F1D880E2E8F6B325BE9F18956D17C6CA8A6F2B12CB0F55FB70F759A419
      # opaque SerializedSCT&lt;1..2^16-1&gt;
      # length 0x77 bytes
      0077
      # Version sct_version v1(0)
      00
      # LogID id (aka opaque key_id[32])
      293C519654C83965BAAA50FC5807D4B76FBF587A2972DCA4C30CF4E54547F478
      # uint64 timestamp (milliseconds since the epoch)
      000001627313EB2A
      # CtExtensions extensions (zero-length array)
      0000
      # digitally-signed struct - RFC 5426
      # SignatureAndHashAlgorithm (ecdsa-sha256)
      0403
      # opaque signature&lt;0..2^16-1&gt;;
      # length 0x0048
      0048
        # DER-encoded Ecdsa-Sig-Value - RFC 4492
        30 # SEQUENCE
        46 # length 0x46 bytes
          02 # r INTEGER
          21 # length 0x21 bytes
            # value
            00AB72F1E4D6223EF87FC68491C208D29D4D57EBF47588BB7544D32F9537E2CEC1
          02 # s INTEGER
          21 # length 0x21 bytes
            # value
            008AFFC40CC6C4E3B24578DADE4F815ECBCE2D57A579342119A1E65BC7E5E69CE2
</code></pre><p>One surprising thing you might notice: In the first SCT, <code>r</code> and <code>s</code> are 32 (0x20)
bytes long. In the second SCT, they are both 33 (0x21) bytes long, and have a
leading zero. Integers in DER are two&rsquo;s complement, so if the leftmost bit is
set, they are interpreted as negative. Since <code>r</code> and <code>s</code> are positive, if the
leftmost bit would be a 1, an extra byte has to be added so that the leftmost
bit can be 0.</p>
<p>This is a little taste of what goes into encoding a certificate. I hope it was
informative! If you&rsquo;d like to learn more, I recommend &ldquo;<a href="http://luca.ntop.org/Teaching/Appunti/asn1.html">A Layman&rsquo;s Guide to a
Subset of ASN.1, BER, and DER</a>.&rdquo;</p>
<p><a id="poison"></a>Footnote 1: A &ldquo;poison extension&rdquo; is defined by <a href="https://tools.ietf.org/html/rfc6962#section-3.1">RFC 6962
section 3.1</a>:</p>
<pre tabindex="0"><code>The Precertificate is constructed from the certificate to be issued by adding a special
critical poison extension (OID `1.3.6.1.4.1.11129.2.4.3`, whose
extnValue OCTET STRING contains ASN.1 NULL data (0x05 0x00))
</code></pre><p>In other words, it&rsquo;s an empty extension whose only purpose is to ensure that
certificate processors will not accept precertificates as valid certificates. The
specification ensures this by setting the &ldquo;critical&rdquo; bit on the extension, which
ensures that code that doesn&rsquo;t recognize the extension will reject the whole
certificate. Code that does recognize the extension specifically as poison
will also reject the certificate.</p>
<p><a id="variable-length"></a>Footnote 2: Lengths from 0-127 are represented by
a single byte (short form). To express longer lengths, more bytes are used (long form).
The high bit (0x80) on the first byte is set to distinguish long form from short
form. The remaining bits are used to express how many more bytes to read for the
length. For instance, 0x81F5 means &ldquo;this is long form because the length is
greater than 127, but there&rsquo;s still only one byte of length (0xF5) to decode.&rdquo;</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2018/04/04/sct-encoding.html</guid>
      </item><item>
        <title>Looking Forward to 2018</title>
        <link>https://letsencrypt.org/2017/12/07/looking-forward-to-2018.html</link>
        <pubDate>Thu, 07 Dec 2017 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Let’s Encrypt had a great year in 2017. We more than doubled the number of active (unexpired) certificates we service to 46 million, we just about tripled the number of unique domains we service to 61 million, and we did it all while maintaining a stellar security and compliance track record. Most importantly though, <a href="https://letsencrypt.org/stats/">the Web went from 46% encrypted page loads to 67%</a> according to statistics from Mozilla - a gain of 21 percentage points in a single year - incredible. We’re proud to have contributed to that, and we’d like to thank all of the other people and organizations who also worked hard to create a more secure and privacy-respecting Web.</p>
<p>While we’re proud of what we accomplished in 2017, we are spending most of the final quarter of the year looking forward rather than back. As we wrap up our own planning process for 2018, I’d like to share some of our plans with you, including both the things we’re excited about and the challenges we’ll face. We’ll cover service growth, new features, infrastructure, and finances.</p>
<h1 id="service-growth">Service Growth</h1>
<p>We are planning to double the number of active certificates and unique domains we service in 2018, to 90 million and 120 million, respectively. This anticipated growth is due to continuing high expectations for HTTPS growth in general in 2018.</p>
<p>Let’s Encrypt helps to drive HTTPS adoption by offering a free, easy to use, and globally available option for obtaining the certificates required to enable HTTPS. HTTPS adoption on the Web took off at an unprecedented rate from the day Let’s Encrypt launched to the public.</p>
<p>One of the reasons Let’s Encrypt is so easy to use is that our community has done great work making client software that works well for a wide variety of platforms. We’d like to thank everyone involved in the development of over 60 <a href="https://letsencrypt.org/docs/client-options/">client software options for Let’s Encrypt</a>. We’re particularly excited that support for the ACME protocol and Let’s Encrypt is <a href="https://letsencrypt.org/2017/10/17/acme-support-in-apache-httpd.html">being added to the Apache httpd server</a>.</p>
<p>Other organizations and communities are also doing great work to promote HTTPS adoption, and thus stimulate demand for our services. For example, browsers are starting to make their users more aware of the risks associated with unencrypted HTTP (e.g. <a href="https://blog.mozilla.org/security/2017/01/20/communicating-the-dangers-of-non-secure-http/">Firefox</a>, <a href="https://security.googleblog.com/2017/04/next-steps-toward-more-connection.html">Chrome</a>). Many hosting providers and CDNs are making it easier than ever for all of their customers to use HTTPS. <a href="https://https.cio.gov/">Government</a> <a href="https://www.canada.ca/en/treasury-board-secretariat/services/information-technology/strategic-plan-2017-2021.html#toc8-3-2">agencies</a> are waking up to the need for stronger security to protect constituents. The media community is working to <a href="https://securethe.news/">Secure the News</a>.</p>
<h1 id="new-features">New Features</h1>
<p>We’ve got some exciting features planned for 2018.</p>
<p>First, we’re planning to introduce an ACME v2 protocol API endpoint and <a href="https://letsencrypt.org/2017/07/06/wildcard-certificates-coming-jan-2018.html">support for wildcard certificates</a> along with it. Wildcard certificates will be free and available globally just like our other certificates. We are planning to have a public test API endpoint up by January 4, and we’ve set a date for the full launch: <del>Tuesday, February 27</del> Update: <a href="https://community.letsencrypt.org/t/acme-v2-and-wildcard-certificate-support-is-live/55579/">these features are live!</a></p>
<p>Later in 2018 we plan to introduce ECDSA root and intermediate certificates. ECDSA is generally considered to be the future of digital signature algorithms on the Web due to the fact that it is more efficient than RSA. Let’s Encrypt will currently sign ECDSA keys from subscribers, but we sign with the RSA key from one of our intermediate certificates. Once we have an ECDSA root and intermediates, our subscribers will be able to deploy certificate chains which are entirely ECDSA.</p>
<h1 id="infrastructure">Infrastructure</h1>
<p>Our CA infrastructure is capable of issuing millions of certificates per day with multiple redundancy for stability and a wide variety of security safeguards, both physical and logical. Our infrastructure also generates and signs nearly 20 million OCSP responses daily, and serves those responses nearly 2 billion times per day. We expect issuance and OCSP numbers to double in 2018.</p>
<p>Our physical CA infrastructure currently occupies approximately 70 units of rack space, split between two datacenters, consisting primarily of compute servers, storage, HSMs, switches, and firewalls.</p>
<p>When we issue more certificates it puts the most stress on storage for our databases. We regularly invest in more and faster storage for our database servers, and that will continue in 2018.</p>
<p>We’ll need to add a few additional compute servers in 2018, and we’ll also start aging out hardware in 2018 for the first time since we launched. We’ll age out about ten 2u compute servers and replace them with new 1u servers, which will save space and be more energy efficient while providing better reliability and performance.</p>
<p>We’ll also add another infrastructure operations staff member, bringing that team to a total of six people. This is necessary in order to make sure we can keep up with demand while maintaining a high standard for security and compliance. Infrastructure operations staff are systems administrators responsible for building and maintaining all physical and logical CA infrastructure. The team also manages a 24/7/365 on-call schedule and they are primary participants in both security and compliance audits.</p>
<h1 id="finances">Finances</h1>
<p>We pride ourselves on being an efficient organization. In 2018 Let’s Encrypt will secure a large portion of the Web with a budget of only $3.0M. For an overall increase in our budget of only 13%, we will be able to issue and service twice as many certificates as we did in 2017. We believe this represents an incredible value and that contributing to Let’s Encrypt is one of the most effective ways to help create a more secure and privacy-respecting Web.</p>
<p>Our 2018 fundraising efforts are off to a strong start with Platinum sponsorships from Mozilla, Akamai, OVH, Cisco, Google Chrome and the Electronic Frontier Foundation. The Ford Foundation has renewed their grant to Let’s Encrypt as well. We are seeking additional sponsorship and grant assistance to meet our full needs for 2018.</p>
<p>We had originally budgeted $2.91M for 2017 but we’ll likely come in under budget for the year at around $2.65M. The difference between our 2017 expenses of $2.65M and the 2018 budget of $3.0M consists primarily of the additional infrastructure operations costs previously mentioned.</p>
<h1 id="support-let-s-encrypt">Support Let’s Encrypt</h1>
<p>We depend on contributions from our community of users and supporters in order to provide our services. If your company or organization would like to <a href="https://www.abetterinternet.org/sponsor/">sponsor</a> Let’s Encrypt please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>. We ask that you make an <a href="https://letsencrypt.org/donate/">individual contribution</a> if it is within your means.</p>
<p>We’re grateful for the industry and community support that we receive, and we look forward to continuing to create a more secure and privacy-respecting Web!</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2017/12/07/looking-forward-to-2018.html</guid>
      </item><item>
        <title>ACME Support in Apache HTTP Server Project</title>
        <link>https://letsencrypt.org/2017/10/17/acme-support-in-apache-httpd.html</link>
        <pubDate>Tue, 17 Oct 2017 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>We’re excited that support for getting and managing TLS certificates via the <a href="https://datatracker.ietf.org/doc/html/rfc8555">ACME protocol</a> is coming to the <a href="https://httpd.apache.org/">Apache HTTP Server Project (httpd)</a>. ACME is the protocol used by Let’s Encrypt, and hopefully other Certificate Authorities in the future. We anticipate this feature will significantly aid the adoption of HTTPS for new and existing websites.</p>
<p>We created Let’s Encrypt in order to make getting and managing TLS certificates as simple as possible. For Let’s Encrypt subscribers, this usually means obtaining an ACME client and executing some simple commands. Ultimately though, we’d like for most Let’s Encrypt subscribers to have ACME clients built in to their server software so that obtaining an additional piece of software is not necessary. The less work people have to do to deploy HTTPS the better!</p>
<p>ACME support being built in to one of the world’s most popular Web servers, Apache httpd, is great because it means that deploying HTTPS will be even easier for millions of websites. It’s a huge step towards delivering the ideal certificate issuance and management experience to as many people as possible.</p>
<p>The Apache httpd ACME module is called mod_md. It’s currently in the <a href="https://svn.apache.org/viewvc/httpd/httpd/trunk/modules/md/">development version of httpd</a> and a plan is being formulated to backport it to an httpd 2.4.x stable release. The mod_md code is also <a href="https://github.com/icing/mod_md">available on GitHub</a>.</p>
<div style="text-align: center;"><iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/gNJUpzNNWMw?rel=0" style="border: none;" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
<p>It’s also worth mentioning that the development version of Apache httpd now includes support for an <a href="https://httpd.apache.org/docs/trunk/mod/mod_ssl.html#sslpolicy">SSLPolicy directive</a>. Properly configuring TLS has traditionally involved making a large number of complex choices. With the SSLPolicy directive, admins simply select a modern, intermediate, or old TLS configuration, and sensible choices will be made for them.</p>
<p>Development of mod_md and the SSLPolicy directive has been <a href="https://blog.mozilla.org/blog/2017/10/03/mozilla-awards-half-million-open-source-projects/">funded by Mozilla</a> and carried out primarily by Stefan Eissing of <a href="https://www.greenbytes.de/">greenbytes</a>. Thank you Mozilla and Stefan!</p>
<p>Let’s Encrypt is currently providing certificates for more than 55 million websites. We look forward to being able to serve even more websites as efforts like this make deploying HTTPS with Let’s Encrypt even easier. If you’re as excited about the potential for a 100% HTTPS Web as we are, please consider <a href="https://letsencrypt.org/getinvolved/">getting involved</a>, <a href="https://letsencrypt.org/donate/">making a donation</a>, or <a href="https://www.abetterinternet.org/sponsor/">sponsoring</a> Let’s Encrypt.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2017/10/17/acme-support-in-apache-httpd.html</guid>
      </item><item>
        <title>Wildcard Certificates Coming January 2018</title>
        <link>https://letsencrypt.org/2017/07/06/wildcard-certificates-coming-jan-2018.html</link>
        <pubDate>Thu, 06 Jul 2017 00:00:00 +0000</pubDate>
        <description><![CDATA[<blockquote>
<p><strong>Update, March 13, 2018</strong></p>
<p>Wildcard certificate support <a href="https://community.letsencrypt.org/t/acme-v2-and-wildcard-certificate-support-is-live/55579/">is live</a>.</p></blockquote>
<p>Let’s Encrypt will begin issuing wildcard certificates in January of 2018. Wildcard certificates are a commonly requested feature and we understand that there are some use cases where they make HTTPS deployment easier. Our hope is that offering wildcards will help to accelerate the Web’s progress towards 100% HTTPS.</p>
<p>Let’s Encrypt is currently securing 47 million domains via our fully automated DV certificate issuance and management API. This has contributed heavily to the Web going from 40% to 58% encrypted page loads since Let’s Encrypt’s service became available in December 2015. If you’re excited about wildcard availability and our mission to get to a 100% encrypted Web, we ask that you contribute to our <a href="https://letsencrypt.org/donate/">summer fundraising campaign</a>.</p>
<p>A wildcard certificate can secure any number of subdomains of a base domain (e.g. *.example.com). This allows administrators to use a single certificate and key pair for a domain and all of its subdomains, which can make HTTPS deployment significantly easier.</p>
<p>Wildcard certificates will be offered free of charge via our <a href="https://letsencrypt.org/2017/06/14/acme-v2-api.html">upcoming ACME v2 API endpoint</a>. We will initially only support base domain validation via DNS for wildcard certificates, but may explore additional validation options over time. We encourage people to ask any questions they might have about wildcard certificate support on our <a href="https://community.letsencrypt.org/">community forums</a>.</p>
<p>We decided to announce this exciting development during our summer fundraising campaign because we are a nonprofit that exists thanks to the generous support of the community that uses our services. If you’d like to support a more secure and privacy-respecting Web, <a href="https://letsencrypt.org/donate/">donate today</a>!</p>
<p>We’d like to thank our <a href="https://letsencrypt.org/getinvolved/">community</a> and our <a href="https://letsencrypt.org/sponsors/">sponsors</a> for making everything we’ve done possible. If your company or organization is able to sponsor Let’s Encrypt please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2017/07/06/wildcard-certificates-coming-jan-2018.html</guid>
      </item><item>
        <title>Milestone: 100 Million Certificates Issued</title>
        <link>https://letsencrypt.org/2017/06/28/hundred-million-certs.html</link>
        <pubDate>Wed, 28 Jun 2017 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Let’s Encrypt has reached a milestone: we’ve now issued more than 100,000,000 certificates. This number reflects at least a few things:</p>
<p>First, it illustrates the strong demand for our services. We’d like to thank all of the sysadmins, web developers, and everyone else managing servers for prioritizing protecting your visitors with HTTPS.</p>
<p>Second, it illustrates our ability to scale. I’m incredibly proud of the work our engineering teams have done to make this volume of issuance possible. I’m also very grateful to our operational partners, including <a href="https://www.identrust.com/">IdenTrust</a>, <a href="https://www.akamai.com/">Akamai</a>, and <a href="https://www.sumologic.com/">Sumo Logic</a>.</p>
<p>Third, it illustrates the power of automated certificate management. If getting and managing certificates from Let’s Encrypt always required manual steps there is simply no way we’d be able to serve as many sites as we do. We’d like to thank our community for creating a <a href="https://letsencrypt.org/docs/client-options/">wide range of clients</a> for automating certificate issuance and management.</p>
<p>The total number of certificates we’ve issued is an interesting number, but it doesn’t reflect much about tangible progress towards our primary goal: a 100% HTTPS Web. To understand that progress we need to look at this graph:</p>
<p class="text-center"><img src="/images/2017.06.28-https-percentage.png" alt="Percentage of HTTPS Page Loads in Firefox." style="width: 650px; margin-bottom: 17px;"/></p>
<p>When Let’s Encrypt’s service first became available, less than 40% of page loads on the Web used HTTPS. It took the Web 20 years to get to that point. In the 19 months since we launched, encrypted page loads have gone up by 18%, to nearly 58%. That’s an incredible rate of change for the Web. Contributing to this trend is what we’re most proud of.</p>
<p>If you’re as excited about the potential for a 100% HTTPS Web as we are, please consider <a href="https://letsencrypt.org/getinvolved/">getting involved</a>, <a href="https://letsencrypt.org/donate/">making a donation</a>, or <a href="https://www.abetterinternet.org/sponsor/">sponsoring</a> Let’s Encrypt.</p>
<p>Here’s to the next 100,000,000 certificates, and a more secure and privacy-respecting Web for everyone!</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2017/06/28/hundred-million-certs.html</guid>
      </item><item>
        <title>ACME v2 API Endpoint Coming January 2018</title>
        <link>https://letsencrypt.org/2017/06/14/acme-v2-api.html</link>
        <pubDate>Wed, 14 Jun 2017 00:00:00 +0000</pubDate>
        <description><![CDATA[<blockquote>
<p><strong>Update, April 27, 2018</strong></p>
<p>ACME v2 and wildcard support are fully available since March 13, 2018.</p></blockquote>
<blockquote>
<p><strong>Update, January 4, 2018</strong></p>
<p>We introduced a public test API endpoint for the ACME v2 protocol and wildcard support on January 4, 2018. ACME v2 and wildcard support will be fully available on February 27, 2018.</p></blockquote>
<p>Let’s Encrypt will add support for the IETF-standardized ACME v2 protocol in January of 2018. We will be adding a new ACME v2 API endpoint alongside our existing ACME v1 protocol API endpoint. We are not setting an end-of-life date for our ACME v1 API at this time, though we recommend that people move to the ACME v2 endpoint as soon as possible once it’s available. For most subscribers, this will happen automatically via a hosting provider or normal ACME client software update.</p>
<p>The ACME protocol, initially developed by the team behind Let’s Encrypt, is at the very heart of the CA service we provide. It’s the primary way in which we interact with our subscribers so that they can get and manage certificates. The ACME v1 protocol we use today was designed to ensure that our validation, issuance, and management methods are fully automated, consistent, compliant, and secure. In these respects, the current ACME v1 protocol has served us well.</p>
<p>There are three primary reasons why we’re starting a transition to ACME v2.</p>
<p>First, ACME v2 will be an IETF standard, and it’s important to us that we support true standards. While ACME v1 is a well-documented public specification, developed in a relatively open manner by individuals from a number of different organizations (including Mozilla, the Electronic Frontier Foundation, and the University of Michigan), it did not benefit from having been developed within a standards body with a greater diversity of inputs and procedures based on years of experience. It was always our intent for ACME v1 to form the basis for an IETF standardization process.</p>
<p>Second, ACME v2 was designed with additional input from other CAs besides Let’s Encrypt, so it should be easier for other CAs to use. We want a standardized ACME to work for many CAs, and ACME v1, while usable by other CAs, was designed with Let’s Encrypt in particular in mind. ACME v2 should meet more needs.</p>
<p>Third, ACME v2 brings some technical improvements that will allow us to better serve our subscribers going forward.</p>
<p>We are not setting an end-of-life date for the ACME v1 protocol because we don’t yet have enough data to determine when would be an appropriate date. Once we’re confident that we can predict an appropriate end-of-life date for our ACME v1 API endpoint we’ll announce one.</p>
<p>ACME v2 is the result of great work by the ACME IETF working group. In particular, we were happy to see the ACME working group take into account the needs of other organizations that may use ACME in the future. Certificate issuance and management protocols are a critical component of the Web’s trust model, and the Web will be better off if CAs can use a standardized public protocol that has been thoroughly vetted.</p>
<p>We’d like to thank our community, including our <a href="https://letsencrypt.org/sponsors/">sponsors</a>, for making everything we did this past year possible. Please consider <a href="https://letsencrypt.org/getinvolved/">getting involved</a> or making a <a href="https://letsencrypt.org/donate/">donation</a>. If your company or organization would like to sponsor Let’s Encrypt please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2017/06/14/acme-v2-api.html</guid>
      </item><item>
        <title>OVH Renews Platinum Sponsorship of Let&#39;s Encrypt</title>
        <link>https://letsencrypt.org/2017/03/23/ovh-platinum-renewal.html</link>
        <pubDate>Thu, 23 Mar 2017 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>We’re pleased to announce that <a href="https://www.ovh.com/">OVH</a> has renewed their support for Let’s Encrypt as a <a href="https://letsencrypt.org/sponsors/">Platinum sponsor</a> for the next three years. OVH’s strong support for Let’s Encrypt will go a long way towards creating a more secure and privacy-respecting Web.</p>
<p>OVH initially got in touch with Let’s Encrypt to become a Platinum sponsor shortly after our public launch in December of 2015. It was clear that they understood the need for Let’s Encrypt and our potential impact on the Web.</p>
<p>&ldquo;Over a year ago, when Let’s Encrypt came out of beta, it was an obvious choice for OVH to support this new certificate authority, and become a Platinum sponsor,&rdquo; said Octave Klaba, Founder, CTO and Chairman. &ldquo;We provided free Let’s Encrypt certificates to all our Web customers. At OVH today, over 2.2 million websites can be reached over a secure connection, and a total of 3.6 million certificates were created for our customers during the first year.&rdquo;</p>
<p>In the past year, Let’s Encrypt has grown to provide <a href="https://letsencrypt.org/stats/">28 million certificates to more than 31 million websites</a>. The Web went from around 40% HTTPS page loads at the end of 2015 to 50% HTTPS page loads at the start of 2017. This is phenomenal growth for the Web, and Let’s Encrypt is proud to have been a driving force behind it.</p>
<p>Of course, it wouldn’t have been possible without major hosting providers like OVH making it easier for their customers to enable HTTPS with Let’s Encrypt. OVH was one of the first major hosting providers to make HTTPS available to a large number of their customers, and they are continuing to expand the scope of services that are secure by default.</p>
<p>&ldquo;We then wanted to go one step further,&rdquo; continues Octave Klaba. &ldquo;We decided to launch <a href="https://www.ovh.com/ca/en/ssl-gateway/">SSL Gateway</a>, powered by Let’s Encrypt. It’s an all-in-one front-end for your infrastructure with HTTPS encryption and anti-DDOS capability. It makes the Web even more secure and reliable. This service is now available to everyone, for free.&rdquo;</p>
<p>Financial and product commitments like these from OVH are moving the Web toward our goal of 100% encryption. We depend on support from organizations like OVH to continue operating. If your company or organization would like to sponsor Let’s Encrypt please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2017/03/23/ovh-platinum-renewal.html</guid>
      </item><item>
        <title>Let’s Encrypt 2016 In Review</title>
        <link>https://letsencrypt.org/2017/01/06/le-2016-in-review.html</link>
        <pubDate>Fri, 06 Jan 2017 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Our first full year as a live CA was an exciting one. I’m incredibly proud of what our team and community accomplished during 2016. I’d like to share some thoughts about how we’ve changed, what we’ve accomplished, and what we’ve learned.</p>
<p>At the start of 2016, Let’s Encrypt certificates had been available to the public for less than a month and we were supporting approximately 240,000 active (unexpired) certificates. That seemed like a lot at the time! Now we’re frequently issuing that many new certificates in a single day while supporting more than 20,000,000 active certificates in total. We’ve issued more than a million certificates in a single day a few times recently. We’re currently serving an average of 6,700 OCSP responses per second. We’ve done a lot of optimization work, we’ve had to add some hardware, and there have been some long nights for our staff, but we’ve been able to keep up and we’re ready for another year of <a href="https://letsencrypt.org/stats/">strong growth</a>.</p>
<p class="text-center"><img src="/images/Jan-6-2017-Cert-Stats.png" alt="Let's Encrypt certificate issuance statistics." style="width: 650px; margin-bottom: 17px;"/></p>
<p>We added a number of <a href="https://letsencrypt.org/upcoming-features/">new features</a> during the past year, including support for the ACME DNS challenge, ECDSA signing, IPv6, and Internationalized Domain Names.</p>
<p>When 2016 started, our root certificate had not been accepted into any major root programs. Today we’ve been accepted into the Mozilla, Apple, and Google root programs. We’re close to announcing acceptance into another major root program. These are major steps towards being able to operate as an independent CA. You can read more about why <a href="https://letsencrypt.org/2016/08/05/le-root-to-be-trusted-by-mozilla.html">here</a>.</p>
<p>The ACME protocol for issuing and managing certificates is at the heart of how Let’s Encrypt works. Having a well-defined and heavily audited specification developed in public on a standards track has been a major contributor to our growth and the growth of our client ecosystem. Great progress was made in 2016 towards standardizing ACME in the <a href="https://datatracker.ietf.org/wg/acme/charter/">IETF ACME working group</a>. We’re hoping for a final document around the end of Q2 2017, and we’ll announce plans for implementation of the updated protocol around that time as well.</p>
<p>Supporting the kind of growth we saw in 2016 meant adding staff, and during the past year Internet Security Research Group (ISRG), the non-profit entity behind Let’s Encrypt, went from four full-time employees to nine. We’re still a pretty small crew given that we’re now one of the largest CAs in the world (if not the largest), but it works because of our intense focus on automation, the fact that we’ve been able to hire great people, and because of the incredible support we receive from the Let’s Encrypt community.</p>
<p>Let’s Encrypt exists in order to help create a 100% encrypted Web. Our own metrics can be interesting, but they’re only really meaningful in terms of the impact they have on progress towards a more secure and privacy-respecting Web. The metric we use to track progress towards that goal is the percentage of page loads using HTTPS, as seen by browsers. According to Firefox Telemetry, the Web has gone from approximately 39% of page loads using HTTPS each day to just about 49% during the past year. We’re incredibly close to a Web that is more encrypted than not. We’re proud to have been a big part of that, but we can’t take credit for all of it. Many people and organizations around the globe have come to realize that we need to invest in a more secure and privacy-respecting Web, and have taken steps to secure their own sites as well as their customers’. Thank you to everyone that has advocated for HTTPS this year, or helped to make it easier for people to make the switch.</p>
<p>We learned some lessons this year. When we had service interruptions they were usually related to managing the rapidly growing database backing our CA. Also, while most of our code had proper tests, some small pieces didn’t and that led to <a href="https://community.letsencrypt.org/c/incidents">incidents</a> that shouldn’t have happened. That said, I’m proud of the way we handle incidents promptly, including quick and transparent public disclosure.</p>
<p>We also learned a lot about our client ecosystem. At the beginning of 2016, ISRG / Let’s Encrypt provided client software called letsencrypt. We’ve always known that we would never be able produce software that would work for every Web server/stack, but we felt that we needed to offer a client that would work well for a large number of people and that could act as a reference client. By March of 2016, earlier than we had foreseen, it had become clear that our community was up to the task of creating a wide range of quality clients, and that our energy would be better spent fostering that community than producing our own client. That’s when we made the decision to <a href="https://letsencrypt.org/2016/03/09/le-client-new-home.html">hand off development of our client</a> to the Electronic Frontier Foundation (EFF). EFF renamed the client to <a href="https://certbot.eff.org/">Certbot</a> and has been doing an excellent job maintaining and improving it as one of <a href="https://letsencrypt.org/docs/client-options/">many client options</a>.</p>
<p>As exciting as 2016 was for Let’s Encrypt and encryption on the Web, 2017 seems set to be an even more incredible year. Much of the infrastructure and many of the plans necessary for a 100% encrypted Web came into being or solidified in 2016. More and more hosting providers and CDNs are supporting HTTPS with one click or by default, often without additional fees. It has never been easier for people and organizations running their own sites to find the tools, services, and information they need to move to HTTPS. Browsers are planning to update their user interfaces to better reflect the risks associated with non-secure connections.</p>
<p>We’d like to thank our community, including our <a href="https://letsencrypt.org/sponsors/">sponsors</a>, for making everything we did this past year possible. Please consider <a href="https://letsencrypt.org/getinvolved/">getting involved</a> or making a <a href="https://letsencrypt.org/donate/">donation</a>, and if your company or organization would like to sponsor Let’s Encrypt please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2017/01/06/le-2016-in-review.html</guid>
      </item><item>
        <title>Launching Our Crowdfunding Campaign</title>
        <link>https://letsencrypt.org/2016/11/01/launching-our-crowdfunding-campaign.html</link>
        <pubDate>Tue, 01 Nov 2016 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Today we kicked off our <a href="https://www.generosity.com/community-fundraising/make-a-more-secure-web-with-let-s-encrypt">first crowdfunding campaign</a> with the goal of raising enough funds to cover about one month of our operations - $200,000. That amount covers the operational and engineering staff, the hardware and the software, and general operating expenses needed to securely and reliably issue and manage many millions of certificates.</p>
<p>We decided to run a crowdfunding campaign for a couple of reasons. First, there is a gap between the funds we’ve raised and what we need for next year. Second, we believe individual supporters from our community can come to represent a significant diversification of our annual revenue sources, in addition to corporate sponsorship and grants.</p>
<p>We will provide updates on our progress throughout the campaign via Twitter (<a href="https://twitter.com/letsencrypt">@letsencrypt</a>).</p>
<p>Thank you for your support!</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2016/11/01/launching-our-crowdfunding-campaign.html</guid>
      </item><item>
        <title>Our First Grant: The Ford Foundation</title>
        <link>https://letsencrypt.org/2016/10/27/first-grant-ford-foundation.html</link>
        <pubDate>Thu, 27 Oct 2016 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>We are proud to announce that <a href="https://www.fordfound.org/">The Ford Foundation</a> has awarded us a grant to help our growing operations.</p>
<p>The Ford Foundation is a major philanthropic entity both in the US and globally. One of its programmatic areas, Internet Freedom, is focused on creating a more open and inclusive Internet experience for all people. Our relationship with Ford was born out of this mutual desire.</p>
<p>According to Michael Brennan, Ford Foundation Internet Freedom Program Officer, “We are thrilled to be able to support the growth of a Web that meets the needs of all its users through Let’s Encrypt.”</p>
<p>This grant will support various software development staff and activities, including the work we recently did to add support for Internationalized Domain Name (IDN) certificates.</p>
<p>If your company or organization would like to sponsor Let’s Encrypt, please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2016/10/27/first-grant-ford-foundation.html</guid>
      </item><item>
        <title>Squarespace OCSP Stapling Implementation</title>
        <link>https://letsencrypt.org/2016/10/24/squarespace-ocsp-impl.html</link>
        <pubDate>Mon, 24 Oct 2016 00:00:00 +0000</pubDate>
        <description><![CDATA[<blockquote>
<p>We’re excited that Squarespace has decided to protect the millions of sites they host with HTTPS! While talking with their
team we learned they were deploying OCSP Stapling from the get-go, and we were impressed. We asked them to share their
experience with our readers in our first guest blog post (hopefully more to come).</p>
<p>- Josh Aas, Executive Director, ISRG / Let’s Encrypt</p></blockquote>
<p><a href="https://en.wikipedia.org/wiki/OCSP_stapling">OCSP stapling</a> is an alternative approach to the Online Certificate Status Protocol (OCSP) for checking the revocation status of certificates. It allows the presenter of a certificate to bear the resource cost involved in providing OCSP responses by appending (“stapling”) a time-stamped OCSP response signed by the CA to the initial TLS handshake, eliminating the need for clients to contact the CA. The certificate holder queries the OCSP responder at regular intervals and caches the responses.</p>
<p>Traditional OCSP requires the CA to provide responses to each client that requests certificate revocation information. When a certificate is issued for a popular website, a large amount of queries start hitting the CA’s OCSP responder server. This poses a privacy risk because information must pass through a third party and the third party is able to determine who browsed which site at what time. It can also create performance problems, since most browsers will contact the OCSP responder before loading anything on the web page. OCSP stapling is efficient because the user doesn’t have to make a separate connection to the CA, and it’s safe because the OCSP response is digitally signed so it cannot be modified without detection.</p>
<h2 id="ocsp-stapling-squarespace">OCSP Stapling @ Squarespace</h2>
<p>As we were planning our roll out of SSL for all custom domains on the Squarespace platform, we decided that we wanted to support OCSP stapling at time of launch. A reverse proxy built by our <a href="https://www.squarespace.com/about/careers?gh_jid=245517">Edge Infrastructure team</a> is responsible for terminating all SSL traffic, it’s written in Java and is powered by <a href="http://netty.io/">Netty</a>. Unfortunately, the Java JDK 8 only has preliminary, client-only, OCSP stapling support. JDK 9 introduces OCSP stapling with <a href="http://openjdk.java.net/jeps/249">JEP 249</a>, but it is not available yet.</p>
<p>Our reverse proxy does not use the JDK’s SSL implementation. Instead, we use OpenSSL via <a href="https://netty.io/wiki/forked-tomcat-native.html">netty-tcnative</a>. At this time, neither the original tcnative nor Netty’s fork have OCSP stapling support. However, the tcnative library exposes the inner workings of OpenSSL, including the address pointers for the SSL context and engine. We were able to use JNI to extend the netty-tcnative library and add OCSP stapling support using the <a href="https://www.openssl.org/docs/man1.0.2/ssl/SSL_set_tlsext_status_type.html">tlsext_status</a> OpenSSL C functions. Our extension is a standalone library but we could equally well fold it into the netty-tcnative library itself. If there is interest, we can contribute it upstream as part of Netty’s next API-breaking development cycle.</p>
<p>One of the goals of our initial OCSP stapling implementation was to take the biggest edge off of the OCSP responder’s operator, in this case Let’s Encrypt. Due to the nature of the website traffic on our platform, we have a very long tail. At least to start, we don’t pre-fetch and cache all OCSP responses. We decided to fetch OCSP responses asynchronously and we try to do it only if more than one client is going to use it in the foreseeable future. Bloom filters are utilized to identify “one-hit wonders” that are not worthy of being cached.</p>
<p>Squarespace invests in the security of our customers’ websites and their visitors. We will continue to make refinements to our OCSP stapling implementation to eventually have OCSP staples on all requests. For a more in depth discussion about the security challenges of traditional OCSP, we recommend <a href="https://www.imperialviolet.org/2014/04/19/revchecking.html">this blog post</a>.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2016/10/24/squarespace-ocsp-impl.html</guid>
      </item><item>
        <title>Introducing Internationalized Domain Name (IDN) Support</title>
        <link>https://letsencrypt.org/2016/10/21/introducing-idn-support.html</link>
        <pubDate>Fri, 21 Oct 2016 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Let’s Encrypt is pleased to introduce support for issuing certificates that contain Internationalized Domain Names (IDNs). This means that our users around the world can now get free Let’s Encrypt certificates for domains containing characters outside of the ASCII set, which is built primarily for the English language.</p>
<p>We’re excited about this feature because our goal is to serve the entire Web, including those who want to use domains with language-specific characters. This feature was also commonly requested by our community.</p>
<p>There are more details on how to request a certificate containing IDNs at our <a href="https://community.letsencrypt.org/t/idn-support-enabled/21469">community forum</a>. Visit our <a href="https://letsencrypt.org/getting-started/">Getting Started</a> page for information on how to request certificates in general.</p>
<p>Let’s Encrypt depends on industry and community support. Please consider <a href="https://letsencrypt.org/getinvolved/">getting involved</a>, and if your company or organization would like to sponsor Let’s Encrypt please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2016/10/21/introducing-idn-support.html</guid>
      </item><item>
        <title>ISRG Legal Transparency Report, January 2016 - June 2016</title>
        <link>https://letsencrypt.org/2016/10/01/legal-transparency-report.html</link>
        <pubDate>Sat, 01 Oct 2016 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>The trust of our users is ISRG’s most critical asset. Transparency regarding legal requests is an important part of making sure our users can trust us, and to that end we will be publishing reports twice annually. Reports will be published three months after the period covered in order to allow us time to research all requests and orders received during the period.</p>
<p><a href="/documents/ISRG-Legal-Transparency-Report-October-1-2016.pdf">Download Legal Transparency Report, January 2016 - June 2016</a></p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2016/10/01/legal-transparency-report.html</guid>
      </item><item>
        <title>What It Costs to Run Let&#39;s Encrypt</title>
        <link>https://letsencrypt.org/2016/09/20/what-it-costs-to-run-lets-encrypt.html</link>
        <pubDate>Tue, 20 Sep 2016 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Today we’d like to explain what it costs to run Let’s Encrypt. We’re doing this because we strive to be a transparent organization, we want people to have some context for their contributions to the project, and because it’s interesting.</p>
<p>Let’s Encrypt will require about $2.9M USD to operate in 2017. We believe this is an incredible value for a secure and reliable service that is capable of issuing certificates globally, to every server on the Web free of charge.</p>
<p>We’re currently working to raise the money we need to operate through the next year. Please consider <a href="https://letsencrypt.org/donate/">donating</a> or <a href="https://www.abetterinternet.org/sponsor/">becoming a sponsor</a> if you’re able to do so! In the event that we end up being able to raise more money than we need to just keep Let’s Encrypt running we can look into adding other services to improve access to a more secure and privacy-respecting Web.</p>
<p>Here’s how our 2017 budget breaks down:</p>
<p></p>
<table style="border: 1px solid gray; width: 90%; margin: auto">
  <tr style="background-color: #99CCFF;">
    <th style="font-weight: bold; text-align: left; padding: 5px; border: 1px solid gray;">Expense</th>
    <th style="font-weight: bold; text-align: left; padding: 5px; border: 1px solid gray;">Cost</th>
  </tr>
  <tr>
    <th style="font-weight: normal; text-align: left; padding: 5px; border: 1px solid gray;">Staffing</th>
    <th style="font-weight: normal; text-align: left; padding: 5px; border: 1px solid gray;">$2.06M USD</th>
  </tr>
  <tr>
    <th style="font-weight: normal; text-align: left; padding: 5px; border: 1px solid gray;">Hardware/Software</th>
    <th style="font-weight: normal; text-align: left; padding: 5px; border: 1px solid gray;">$0.20M USD</th>
  </tr>
  <tr>
    <th style="font-weight: normal; text-align: left; padding: 5px; border: 1px solid gray;">Hosting/Auditing</th>
    <th style="font-weight: normal; text-align: left; padding: 5px; border: 1px solid gray;">$0.30M USD</th>
  </tr>
  <tr>
    <th style="font-weight: normal; text-align: left; padding: 5px; border: 1px solid gray;">Legal/Administrative</th>
    <th style="font-weight: normal; text-align: left; padding: 5px; border: 1px solid gray;">$0.35M USD</th>
  </tr>
  <tr>
    <th style="font-weight: bold; text-align: left; padding: 5px; border: 1px solid gray;">Total</th>
    <th style="font-weight: bold; text-align: left; padding: 5px; border: 1px solid gray;">$2.91M USD</th>
  </tr>
</table>
<p></p>
<p>Staffing is our dominant cost. We currently have eight full time employees, plus two full time staff that are employed by other entities (Mozilla and EFF). This includes five operations/sysadmin staff, three software developers, one communications and fundraising person, and an executive director. Our 2017 budget covers salary and benefits for ten employees.</p>
<p>Our systems administration staff are at the heart of our day to day operations. They are responsible for building and improving our server, networking, and deployed software infrastructure, as well as monitoring the systems every hour of every day. It’s the critical 24/7 nature of the work that makes this our biggest team. Any issues need to be dealt with immediately, ideally with multiple people on hand.</p>
<p>Our software developers work primarily on <em><a href="https://github.com/letsencrypt/boulder">boulder</a></em>, our open source CA software.  We needed to write our own software in order to create a secure, reliable, and fully-automated CA that is capable of issuing and managing enough certificates to serve the entire Web. Our software development staff also allow us to support new features much more quickly than we could if we relied on third party software for implementation.</p>
<p>The majority of our administrative support (e.g. HR, payroll, accounting) is provided by the <a href="https://www.linuxfoundation.org/">Linux Foundation</a>, so we don’t hire for those roles and related expenses come in under the “Legal/Administrative” category.</p>
<p>Hardware expenses include compute, storage, networking, and HSM hardware, as well as the associated support contracts. There is quite a bit of duplication for redundancy. Software expenses are low since the majority of the software we use is freely available open source software.</p>
<p>Hosting costs include space in two different highly secure geographically separated rooms inside secure data centers, as well as internet connections and power. The hardware and physical infrastructure we have in place is capable of issuing hundreds of millions of certificates - enough for every server on the Web. We need to maintain strong physical control over all hardware and infrastructure related to certificate issuance and management for security and auditing reasons.</p>
<p>Auditing costs include the required annual WebTrust audits as well as third party expert security review and testing. The third party security audits include code review, infrastructure review, penetration testing, and ACME protocol analysis. We are not required to do third party auditing beyond the WebTrust audits, but it would be irresponsible of us not to.</p>
<p>Legal costs go towards attorney time, primarily in the areas of corporate governance, contract development and review, and trademarks. Administrative costs include HR, payroll and benefits management, accounting and tax services, as well as travel and other miscellaneous operating costs.</p>
<p>Our 2016 budget is very similar to our 2017 budget, the major difference being that we will only spend approximately $2.0M USD due to a number of our staff starting after the beginning of the year. We will pay full staffing costs next year because all of the staff that joined us in 2016 will be on our payroll for the entirety of 2017.</p>
<p>Currently, the majority of our funding comes from <a href="https://letsencrypt.org/sponsors/">corporate sponsorships</a>. If your company or organization would like to sponsor Let’s Encrypt please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>. We’re working to make grants and <a href="https://letsencrypt.org/donate/">individual contributions</a> more significant sources of income over the next year.</p>
<p>We’re grateful for the industry and community support that we receive, and we look forward to continuing to create a more secure and privacy-respecting Web!</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2016/09/20/what-it-costs-to-run-lets-encrypt.html</guid>
      </item><item>
        <title>Let&#39;s Encrypt Root to be Trusted by Mozilla</title>
        <link>https://letsencrypt.org/2016/08/05/le-root-to-be-trusted-by-mozilla.html</link>
        <pubDate>Fri, 05 Aug 2016 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>The Let’s Encrypt root key (ISRG Root X1) will be trusted by default in Firefox 50, which is scheduled to ship in Q4 2016. Acceptance into the Mozilla root program is a major milestone as we aim to rely on our own root for trust and have greater independence as a certificate authority (CA).</p>
<p>Public CAs need their certificates to be trusted by browsers and devices. CAs that want to issue independently under their own root accomplish this by either buying an existing trusted root, or by creating a new root and working to get it trusted. Let’s Encrypt chose to go the second route.</p>
<p>Getting a new root trusted and propagated broadly can take 3-6 years. In order to start issuing widely trusted certificates as soon as possible, we partnered with another CA, IdenTrust, which has a number of existing trusted roots. As part of that partnership, an IdenTrust root “vouches for” the certificates that we issue, thus making our certificates trusted. We’re incredibly grateful to IdenTrust for helping us to start carrying out our mission as soon as possible.</p>
<p class="text-center"><img src="/images/le-firefox-chain-of-trust.png" alt="Chain of trust between Firefox and Let's Encrypt certificates." style="width: 650px; margin-bottom: 17px;"/><br><em>Chain of Trust Between Firefox and Let's Encrypt Certificates</em></p>
<p>However, our plan has always been to operate as an independently trusted CA. Having our root trusted directly by the Mozilla root program represents significant progress towards that independence.</p>
<p>We have also applied to the Microsoft, Apple, Google, Oracle and Blackberry root programs. We look forward to acceptance into these programs as well.</p>
<p>Let’s Encrypt depends on industry and community support. Please consider <a href="https://letsencrypt.org/getinvolved/">getting involved</a>, and if your company or organization would like to sponsor Let’s Encrypt please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2016/08/05/le-root-to-be-trusted-by-mozilla.html</guid>
      </item><item>
        <title>Full Support for IPv6</title>
        <link>https://letsencrypt.org/2016/07/26/full-ipv6-support.html</link>
        <pubDate>Tue, 26 Jul 2016 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Let’s Encrypt is happy to announce full support for IPv6.</p>
<p>As IPv4 address space is exhausted, more and more people are deploying services that are only reachable via IPv6. Adding full support for IPv6 allows us to serve more people and organizations, which is important if we’re going to encrypt the entire Web.</p>
<p>IPv6 is an exciting step forward which will allow the Internet to grow and reach more people. You can learn more about it by <a href="https://youtu.be/-Uwjt32NvVA">watching this video</a> from Google’s Chief Internet Evangelist, Vint Cerf. We’re looking forward to the day when both TLS and IPv6 are ubiquitous.</p>
<p>Let’s Encrypt depends on industry and community support. Please consider <a href="https://letsencrypt.org/getinvolved/">getting involved</a>, and if your company or organization would like to sponsor Let’s Encrypt please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2016/07/26/full-ipv6-support.html</guid>
      </item><item>
        <title>Defending Our Brand [Updated]</title>
        <link>https://letsencrypt.org/2016/06/23/defending-our-brand.html</link>
        <pubDate>Thu, 23 Jun 2016 00:00:00 +0000</pubDate>
        <description><![CDATA[<blockquote>
<p><strong>Update, June 24 2016</strong></p>
<p>We have confirmed that Comodo submitted Requests for Express Abandonment for all three trademark registration applications in question. We’re happy to see this positive step towards resolution, and will continue to monitor the requests as they make their way through the system.</p>
<p>We&rsquo;d like to thank our community for their support.</p></blockquote>
<p>Some months ago, it came to our attention that Comodo Group, Inc., is attempting to register at least three trademarks for the term “Let’s Encrypt,” for a variety of CA-related services [<a href="/2016/06/23/defending-our-brand.html#1">1</a>][<a href="/2016/06/23/defending-our-brand.html#2">2</a>][<a href="/2016/06/23/defending-our-brand.html#3">3</a>]. These trademark applications were filed long after the Internet Security Research Group (ISRG) started using the name Let’s Encrypt publicly in November of 2014, and despite the fact Comodo’s “intent to use” trademark filings acknowledge that it has never used “Let’s Encrypt” as a brand.</p>
<p>We’ve forged relationships with millions of websites and users under the name Let’s Encrypt, furthering our mission to make encryption free, easy, and accessible to everyone. We’ve also worked hard to build our unique identity within the community and to make that identity a reliable indicator of quality. We take it very seriously when we see the potential for our users to be confused, or worse, the potential for a third party to damage the trust our users have placed in us by intentionally creating such confusion. By attempting to register trademarks for our name, Comodo is actively attempting to do just that.</p>
<p>Since March of 2016 we have repeatedly asked Comodo to abandon their “Let’s Encrypt” applications, directly and through our attorneys, but they have refused to do so. We are clearly the first and senior user of “Let’s Encrypt” in relation to Internet security, including SSL/TLS certificates – both in terms of length of use and in terms of the widespread public association of that brand with our organization.</p>
<p>If necessary, we will vigorously defend the Let’s Encrypt brand we’ve worked so hard to build. That said, our organization has limited resources and a protracted dispute with Comodo regarding its improper registration of our trademarks would significantly and unnecessarily distract both organizations from the core mission they should share: creating a more secure and privacy-respecting Web. We urge Comodo to do the right thing and abandon its “Let’s Encrypt” trademark applications so we can focus all of our energy on improving the Web.</p>
<p><a id="1"></a>[1] <a href="https://tsdr.uspto.gov/#caseNumber=86790719&amp;caseType=SERIAL_NO&amp;searchType=statusSearch">“Let’s Encrypt” Trademark Registration Application</a></p>
<p><a id="2"></a>[2] <a href="https://tsdr.uspto.gov/#caseNumber=86790812&amp;caseType=SERIAL_NO&amp;searchType=statusSearch">“Let’s Encrypt With Comodo” Trademark Registration Application</a></p>
<p><a id="3"></a>[3] <a href="https://tsdr.uspto.gov/#caseNumber=86790789&amp;caseType=SERIAL_NO&amp;searchType=statusSearch">“Comodo Let’s Encrypt” Trademark Registration Application</a></p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2016/06/23/defending-our-brand.html</guid>
      </item><item>
        <title>Progress Towards 100% HTTPS, June 2016</title>
        <link>https://letsencrypt.org/2016/06/22/https-progress-june-2016.html</link>
        <pubDate>Wed, 22 Jun 2016 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Our goal with Let’s Encrypt is to get the Web to 100% HTTPS. We’d like to give a quick progress update.</p>
<p>Let’s Encrypt has issued more than 5 million certificates in total since we launched to the general public on December 3, 2015. Approximately 3.8 million of those are active, meaning unexpired and unrevoked. Our active certificates cover more than 7 million unique domains.</p>
<p class="text-center"><img src="/images/le-certs-issued-june-22-2016.png" alt="Issuance as of June 22, 2016" style="width: 650px; margin-bottom: 17px;"/></p>
<p>A couple of different factors have contributed heavily to this growth. The first is large-scale deployments from companies such as OVH, WordPress.com, Akamai, Shopify, Dreamhost, and Bitly. The second is our ability to serve individual sites globally with a focus on ease-of-use. If we’re going to get to 100% HTTPS we need to reach the “long tail” of the Web, which is in many ways more challenging due to the number of parties involved and widely varying degrees of technical competency.</p>
<p>Our progress is accelerating the growth of HTTPS on the Web in general. When we launched in December of 2015, 39.5% of page loads on the Web used HTTPS (as measured by Firefox Telemetry). By mid-April 2016 that number was up to 42% and today it stands at 45%.</p>
<p><em>This is an incredible rate of change for the Web.</em> We’re really excited about our early progress. Getting to 50% HTTPS page loads in 2016 used to seem like an overly ambitious goal but now it seems within reach. Let’s get there!</p>
<p>Let’s Encrypt depends on industry and community support. Please consider <a href="/getinvolved/">getting involved</a>, and if your company or organization would like to sponsor Let’s Encrypt please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2016/06/22/https-progress-june-2016.html</guid>
      </item><item>
        <title>Leaving Beta, New Sponsors</title>
        <link>https://letsencrypt.org/2016/04/12/leaving-beta-new-sponsors.html</link>
        <pubDate>Tue, 12 Apr 2016 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Let’s Encrypt is leaving beta today. We’re also excited to announce that founding sponsors <a href="https://www.cisco.com/">Cisco</a> and <a href="https://www.akamai.com/">Akamai</a> have renewed their Platinum sponsorships with 3-year commitments, <a href="https://www.gemalto.com/">Gemalto</a> is joining as our newest Gold sponsor, and <a href="https://www.hpe.com/">HP Enterprise</a>, <a href="https://www.fastly.com/">Fastly</a>, <a href="https://www.dudamobile.com/">Duda</a> and <a href="https://www.reliablesite.net/">ReliableSite.net</a> are our newest Silver sponsors.</p>
<p>Since our beta began in September 2015 we’ve issued more than 1.7 million certificates for more than 3.8 million websites. We’ve gained tremendous operational experience and confidence in our systems. The beta label is simply not necessary any more.</p>
<p class="text-center"><img src="/images/Issuance-April-10-2016.png" alt="Issuance as of April 10, 2016" style="width: 650px; margin-bottom: 17px;"/></p>
<p>We set out to encrypt 100% of the Web. We’re excited to be off to a strong start, and with so much support across the industry.</p>
<p>“From the very beginning, Akamai has been committed to supporting Let’s Encrypt&rsquo;s vision of enabling greater use of SSL/TLS across the internet,” says Stephen Ludin, Chief Architect at Akamai. “This milestone is confirmation of Let’s Encrypt&rsquo;s ability to execute on that vision and have a tremendous impact to the Internet ecosystem.”</p>
<p>&ldquo;Cisco is committed to improving the security of the Internet, not only for our customers and partners, but for everyone else as well,&rdquo; says David Ward, CTO of Engineering and Chief Architect at Cisco. &ldquo;Let&rsquo;s Encrypt has been doing impressive work toward that goal. Our support of this community towards real-time, on-demand certificates will make the Internet more secure.&rdquo;</p>
<p>“We’re very proud to be a Gold Sponsor for Let’s Encrypt which leverages our industry-leading hardware security modules to protect their certificate authority system,” says Todd Moore, Vice President of Encryption Product Management at Gemalto. “Encryption by default is critical to privacy and security, and by working with Let’s Encrypt Gemalto is helping to deliver trust for the digital services that billions of people use every day.”</p>
<p>Let’s Encrypt depends on industry and community support. Please consider <a href="https://letsencrypt.org/getinvolved/">getting involved</a>, and if your company or organization would like to sponsor Let’s Encrypt please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2016/04/12/leaving-beta-new-sponsors.html</guid>
      </item><item>
        <title>ISRG Legal Transparency Report, July 2015 - December 2015</title>
        <link>https://letsencrypt.org/2016/04/01/legal-transparency-report.html</link>
        <pubDate>Fri, 01 Apr 2016 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>The trust of our users is ISRG’s most critical asset. Transparency regarding legal requests is an important part of making sure our users can trust us, and to that end we will be publishing reports twice annually. Reports will be published three months after the period covered in order to allow us time to research all requests and orders received during the period.</p>
<p><a href="/documents/ISRG-Legal-Transparency-Report-April-1-2016.pdf">Download Legal Transparency Report, July 2015 - December 2015</a></p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2016/04/01/legal-transparency-report.html</guid>
      </item><item>
        <title>New Name, New Home for the Let&#39;s Encrypt Client Software</title>
        <link>https://letsencrypt.org/2016/03/09/le-client-new-home.html</link>
        <pubDate>Wed, 09 Mar 2016 00:00:00 +0000</pubDate>
        <description><![CDATA[<p><em>Update: Added clarification that only the Let&rsquo;s Encrypt client software is changing its name and host. The Let&rsquo;s Encrypt certificate authority and associated services are not changing names or relocating.</em></p>
<p>Over the next few months the Let’s Encrypt client software will transition to a new name, soon to be announced, and a new home at the <a href="https://www.eff.org/">Electronic Frontier Foundation (EFF)</a>.</p>
<p>This change does not affect the Let&rsquo;s Encrypt certificate authority (CA) or associated services, which will retain the Let&rsquo;s Encrypt name and continue to be hosted by the <a href="https://www.abetterinternet.org/">Internet Security Research Group</a>.</p>
<p>The goal of Let’s Encrypt is to make turning on HTTPS as easy as possible. To accomplish that, it’s not enough to fully automate certificate issuance on the certificate authority (CA) side - we have to fully automate on the client side as well. The Let’s Encrypt client is now being used by hundreds of thousands of websites and we expect it to continue to be a popular choice for sites that are run from a single server or VPS.</p>
<p>That said, the web server ecosystem is complex, and it would be impossible for any particular client to serve everyone well. As a result, the Let’s Encrypt community has created dozens of clients to meet many diverse needs. Moving forward, we feel it would be best for Let’s Encrypt to focus on promoting a generally healthy client and protocol ecosystem and for our client to move to the EFF. This will also allow us to focus our engineering efforts on running a reliable and rapidly growing CA server infrastructure.</p>
<p>The Let’s Encrypt client goes further than most other clients in terms of end-to-end automation and extensibility, both getting certificates and in many cases installing them. This is an important strategy since major servers don’t yet have built-in support, and we want to make sure it’s given a proper chance to thrive. The EFF has led development of the Let’s Encrypt client from the beginning, and they are well-qualified to continue pursuing this strategy.</p>
<p>The rename is happening for reasons that go beyond the move to the EFF. One additional reason for the rename is that we want the client to be distributable and customizable without having to create a complex process for deciding whether customized variants are appropriate for use with Let’s Encrypt trademarks. Another reason is that we want it to be clear that the client can work with any ACME-enabled CA in the future, not just Let’s Encrypt.</p>
<p>We expect the client to do well at the EFF and continue to be used by many people to get certificates from Let’s Encrypt.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2016/03/09/le-client-new-home.html</guid>
      </item><item>
        <title>Our Millionth Certificate</title>
        <link>https://letsencrypt.org/2016/03/08/our-millionth-cert.html</link>
        <pubDate>Tue, 08 Mar 2016 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Let’s Encrypt has issued its millionth certificate. Our first million certificates are helping to secure approximately 2.4 million domains. This milestone means a lot to a team that started building a CA from scratch 16 months ago with an aim to have a real impact on the security of the Web as soon as possible.</p>
<p>We want to see HTTPS become the default on the Web, and today’s occasion gives us confidence that we’re going to get there - much faster than even we predicted. We’re growing at a current rate of more than 100,000 certificates per week and don’t see this slowing down anytime soon. This is <em>dramatic and very rapid change</em> for the Web.</p>
<p>Our rapid growth is due to strong demand for an easy-to-use, low-cost, widely trusted, and truly global solution for certificate issuance and management. We also received a considerable boost from industry endorsement, with major hosting companies like OVH, Wordpress.com, Gandi, Dreamhost, and Digital Ocean helping many sites move to HTTPS with Let&rsquo;s Encrypt.</p>
<p>HTTPS has been around for a long time but according to Firefox telemetry only ~40% of websites and ~65% of transactions used HTTPS at the end of 2015. Those numbers should both be 100% if the Web is to provide the level of privacy and security that people expect, and Let&rsquo;s Encrypt is going to lead the way.</p>
<p>Let’s Encrypt depends on support from a wide variety of individuals and organizations. Please consider <a href="https://letsencrypt.org/getinvolved/">getting involved</a>, and if your company or organization would like to sponsor Let’s Encrypt please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2016/03/08/our-millionth-cert.html</guid>
      </item><item>
        <title>OVH Sponsors Let&#39;s Encrypt</title>
        <link>https://letsencrypt.org/2015/12/21/ovh-sponsorship.html</link>
        <pubDate>Mon, 21 Dec 2015 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>We’re pleased to announce that <a href="https://www.ovh.com/">OVH</a> has become a Platinum sponsor of Let’s Encrypt.</p>
<p>According to OVH CTO and Founder Octave Klaba, &ldquo;OVH is delighted to become a Platinum sponsor. With Let&rsquo;s Encrypt, OVH will be able to set a new standard for security by offering end-to-end encrypted communications by default to all its communities.&rdquo;</p>
<p>The Web is an increasingly integral part of our daily lives, and encryption by default is critical in order to provide the degree of security and privacy that people expect. Let&rsquo;s Encrypt&rsquo;s mission is to encrypt the Web and our sponsors make pursuing that mission possible.</p>
<p>OVH&rsquo;s sponsorship will help us to pay for staff and other operation costs in 2016.</p>
<p>If your company or organization would like to sponsor Let’s Encrypt, please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2015/12/21/ovh-sponsorship.html</guid>
      </item><item>
        <title>Entering Public Beta</title>
        <link>https://letsencrypt.org/2015/12/03/entering-public-beta.html</link>
        <pubDate>Thu, 03 Dec 2015 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>We’re happy to announce that Let’s Encrypt has entered Public Beta. Invitations are no longer needed in order to get free certificates from Let’s Encrypt.</p>
<p>It’s time for the Web to take a big step forward in terms of security and privacy. We want to see HTTPS become the default. Let’s Encrypt was built to enable that by making it as easy as possible to get and manage certificates.</p>
<p>We’d like to thank everyone who participated in the Limited Beta. Let’s Encrypt issued over 26,000 certificates during the Limited Beta period. This allowed us to gain valuable insight into how our systems perform, and to be confident about moving to Public Beta.</p>
<p>We&rsquo;d also like to thank all of our <a href="/sponsors/">sponsors</a> for their support. We&rsquo;re happy to have announced earlier today that <a href="/2015/12/03/facebook-sponsorship.html">Facebook is our newest Gold sponsor</a>.</p>
<p>We have more work to do before we’re comfortable dropping the beta label entirely, particularly on the client experience. Automation is a cornerstone of our strategy, and we need to make sure that the client works smoothly and reliably on a wide range of platforms. We’ll be monitoring feedback from users closely, and making improvements as quickly as possible.</p>
<p><del>Instructions for getting a certificate with the <em>Let&rsquo;s Encrypt client</em> can be found <em>here</em>.</del></p>
<p>Update: Feb. 10 2016, instructions for getting a certificate with <a href="https://github.com/certbot/certbot">Certbot</a> (Let&rsquo;s Encrypt recommended client) can be found <a href="https://certbot.eff.org/">here</a>.</p>
<p><a href="https://community.letsencrypt.org/">Let’s Encrypt Community Support</a> is an invaluable resource for our community, we strongly recommend making use of the site if you have any questions about Let’s Encrypt.</p>
<p>Let’s Encrypt depends on support from a wide variety of individuals and organizations. Please consider <a href="https://letsencrypt.org/getinvolved/">getting involved</a>, and if your company or organization would like to sponsor Let’s Encrypt please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2015/12/03/entering-public-beta.html</guid>
      </item><item>
        <title>Facebook Sponsors Let&#39;s Encrypt</title>
        <link>https://letsencrypt.org/2015/12/03/facebook-sponsorship.html</link>
        <pubDate>Thu, 03 Dec 2015 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>We&rsquo;re happy to share today that <a href="https://www.facebook.com/">Facebook</a> is the newest <a href="/sponsors/">Gold sponsor</a> of Let’s Encrypt. Facebook has taken multiple important steps to support and advance encryption this year, and we are glad to see Let&rsquo;s Encrypt as the latest example.</p>
<p>According to Alex Stamos, Chief Security Officer at Facebook, &ldquo;Making it easier for websites to deploy HTTPS encryption is an important step in improving the security of the whole internet, and Facebook is proud to support this effort.&rdquo;</p>
<p>Facebook&rsquo;s sponsorship will help us produce a greater impact as we open up our public beta today and usher in more participants over the coming months.</p>
<p>If your company or organization would like to sponsor Let’s Encrypt, please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2015/12/03/facebook-sponsorship.html</guid>
      </item><item>
        <title>Public Beta: December 3, 2015</title>
        <link>https://letsencrypt.org/2015/11/12/public-beta-timing.html</link>
        <pubDate>Thu, 12 Nov 2015 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Let’s Encrypt will enter Public Beta on December 3, 2015. Once we’ve entered Public Beta our systems will be open to anyone who would like to request a certificate. There will no longer be a requirement to <a href="https://t.co/C6Q3dPYorp">sign up</a> and wait for an invitation.</p>
<p>Our Limited Beta started on September 12, 2015. We’ve issued over 11,000 certificates since then, and this operational experience has given us confidence that our systems are ready for an open Public Beta.</p>
<p>It&rsquo;s time for the Web to take a big step forward in terms of security and privacy. We want to see HTTPS become the default. Let&rsquo;s Encrypt was built to enable that by making it as easy as possible to get and manage certificates.</p>
<p>We have more work to do before we’re comfortable dropping the beta label entirely, particularly on the client experience. Automation is a cornerstone of our strategy, and we need to make sure that the client works smoothly and reliably on a wide range of platforms. We’ll be monitoring feedback from users closely, and making improvements as quickly as possible.</p>
<p>Let’s Encrypt depends on support from a wide variety of individuals and organizations. Please consider <a href="https://letsencrypt.org/getinvolved/">getting involved</a>, and if your company or organization would like to sponsor Let’s Encrypt please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2015/11/12/public-beta-timing.html</guid>
      </item><item>
        <title>Why ninety-day lifetimes for certificates?</title>
        <link>https://letsencrypt.org/2015/11/09/why-90-days.html</link>
        <pubDate>Mon, 09 Nov 2015 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>We’re sometimes asked why we only offer certificates with ninety-day lifetimes. People who ask this are usually concerned that ninety days is too short and wish we would offer certificates lasting a year or more, like some other CAs do.</p>
<p>Ninety days is nothing new on the Web. According to Firefox Telemetry, 29% of TLS transactions use ninety-day certificates. That’s more than any other lifetime.  From our perspective, there are two primary advantages to such short certificate lifetimes:</p>
<ol>
<li>They limit damage from key compromise and mis-issuance. Stolen keys and mis-issued certificates are valid for a shorter period of time.</li>
<li>They encourage automation, which is absolutely essential for ease-of-use. If we’re going to move the entire Web to HTTPS, we can’t continue to expect system administrators to manually handle renewals. Once issuance and renewal are automated, shorter lifetimes won’t be any less convenient than longer ones.</li>
</ol>
<p>For these reasons, we do not offer certificates with lifetimes longer than ninety days. We realize that our service is young, and that automation is new to many subscribers, so we chose a lifetime that allows plenty of time for manual renewal if necessary. We recommend that subscribers renew every sixty days. Once automated renewal tools are widely deployed and working well, we may consider even shorter lifetimes.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2015/11/09/why-90-days.html</guid>
      </item><item>
        <title>The CA&#39;s Role in Fighting Phishing and Malware</title>
        <link>https://letsencrypt.org/2015/10/29/phishing-and-malware.html</link>
        <pubDate>Thu, 29 Oct 2015 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Since we announced Let’s Encrypt we’ve often been asked how we’ll ensure that we don’t issue certificates for phishing and malware sites. The concern most commonly expressed is that having valid HTTPS certificates helps these sites look more legitimate, making people more likely to trust them.</p>
<p>Deciding what to do here has been tough. On the one hand, we don’t like these sites any more than anyone else does, and our mission is to help build a safer and more secure Web. On the other hand, we’re not sure that certificate issuance (at least for Domain Validation) is the right level on which to be policing phishing and malware sites in 2015. This post explains our thinking in order to encourage a conversation about the CA ecosystem’s role in fighting these malicious sites.</p>
<h1 id="cas-make-poor-content-watchdogs">CAs Make Poor Content Watchdogs</h1>
<p>Let’s Encrypt is going to be issuing Domain Validation (DV) certificates. On a technical level, a DV certificate asserts that a public key belongs to a domain &ndash; it says nothing else about a site’s content or who runs it. DV certificates do not include any information about a website’s reputation, real-world identity, or safety. However, many people believe the mere presence of a DV certificate ought to connote at least some of these things.</p>
<p>Treating a DV certificate as a kind of “seal of approval” for a site’s content is problematic for several reasons.</p>
<p>First, CAs are not well positioned to operate anti­-phishing and anti-malware operations &ndash; or to police content more generally. They simply do not have sufficient ongoing visibility into sites’ content. The best CAs can do is check with organizations that have much greater content awareness, such as Microsoft and Google. Google and Microsoft consume vast quantities of data about the Web from massive crawling and reporting infrastructures. This data allows them to use complex machine learning algorithms (developed and operated by dozens of staff) to identify malicious sites and content.</p>
<p>Even if a CA checks for phishing and malware status with a good API, the CA’s ability to accurately express information regarding phishing and malware is extremely limited. Site content can change much faster than certificate issuance and revocation cycles, phishing and malware status can be page-specific, and certificates and their related browser UIs contain little, if any, information about phishing or malware status. When a CA doesn’t issue a certificate for a site with phishing or malware content, users simply don’t see a lock icon. Users are much better informed and protected when browsers include anti-phishing and anti-malware features, which typically do not suffer from any of these limitations.</p>
<p>Another issue with treating DV certificates as a “seal of approval” for site content is that there is no standard for CA anti­-phishing and anti-malware measures beyond a simple blacklist of high-­value domains, so enforcement is inconsistent across the thousands of CAs trusted by major browsers. Even if one CA takes extraordinary measures to weed out bad sites, attackers can simply shop around to different CAs. The bad guys will almost always be able to get a certificate and hold onto it long enough to exploit people. It doesn’t matter how sophisticated the best CA anti­-phishing and anti-malware programs are, it only matters how good the worst are. It’s a “find the weakest link” scenario, and weak links aren’t hard to find.</p>
<p>Browser makers have realized all of this. That’s why they are pushing phishing and malware protection features, and evolving their UIs to more accurately reflect the assertions that certificates actually make.</p>
<h1 id="tls-no-longer-optional">TLS No Longer Optional</h1>
<p>When they were first developed in the 1990s, HTTPS and SSL/TLS were considered “special” protections that were only necessary or useful for particular kinds of websites, like online banks and shopping sites accepting credit cards. We’ve since come to realize that HTTPS is important for almost all websites. It’s important for any website that allows people to log in with a password, any website that <a href="https://www.washingtonpost.com/news/the-switch/wp/2013/12/10/nsa-uses-google-cookies-to-pinpoint-targets-for-hacking/">tracks its users</a> in any way, any website that <a href="http://arstechnica.com/tech-policy/2014/09/why-comcasts-javascript-ad-injections-threaten-security-net-neutrality/">doesn’t want its content altered</a>, and for any site that offers content people might not want others to know they are consuming. We’ve also learned that any site not secured by HTTPS <a href="http://krebsonsecurity.com/2015/04/dont-be-fodder-for-chinas-great-cannon/">can be used to attack other sites</a>.</p>
<p>TLS is <a href="https://blog.mozilla.org/security/2015/04/30/deprecating-non-secure-http/">no longer the exception</a>, <a href="https://www.chromium.org/Home/chromium-security/marking-http-as-non-secure">nor should it be</a>. That’s why we built Let’s Encrypt. We want TLS to be the default method for communication on the Web. It should just be a fundamental part of the fabric, like TCP or HTTP. When this happens, having a certificate will become an existential issue, rather than a value add, and content policing mistakes will be particularly costly. On a technical level, mistakes will lead to significant down time due to a slow issuance and revocation cycle, and features like <a href="https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security">HSTS</a>. On a philosophical and moral level, mistakes (innocent or otherwise) will mean censorship, since CAs would be gatekeepers for online speech and presence. This is probably not a good role for CAs.</p>
<h1 id="our-plan">Our Plan</h1>
<p>At least for the time being, Let’s Encrypt is going to check with the <a href="https://developers.google.com/safe-browsing/">Google Safe Browsing API</a> before issuing certificates, and refuse to issue to sites that are flagged as phishing or malware sites. Google’s API is the best source of phishing and malware status information that we have access to, and attempting to do more than query this API before issuance would almost certainly be wasteful and ineffective. (Update: As of January 10, 2019, <a href="https://community.letsencrypt.org/t/let-s-encrypt-no-longer-checking-google-safe-browsing/82168">we no longer check domains against the Safe Browsing API</a>.)</p>
<p>We’re going to implement this phishing and malware status check because many people are not comfortable with CAs entirely abandoning anti-phishing and anti-malware efforts just yet, even for DV certificates. We’d like to continue the conversation for a bit longer before we abandon what many people perceive to be an important CA behavior, even though we disagree.</p>
<h1 id="conclusion">Conclusion</h1>
<p>The fight against phishing and malware content is an important one, but it does not make sense for CAs to be on the front lines, at least when it comes to DV certificates. That said, we’re going to implement checks against the Google Safe Browsing API while we continue the conversation.</p>
<p>We look forward to hearing what you think. <a href="https://community.letsencrypt.org/t/the-cas-role-in-fighting-phishing-and-malware/">Please let us know</a>.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2015/10/29/phishing-and-malware.html</guid>
      </item><item>
        <title>Let&#39;s Encrypt is Trusted</title>
        <link>https://letsencrypt.org/2015/10/19/lets-encrypt-is-trusted.html</link>
        <pubDate>Mon, 19 Oct 2015 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>We’re pleased to announce that we’ve received cross-signatures from <a href="https://identrustssl.com/">IdenTrust</a>, which means that our certificates are now trusted by all major browsers. This is a significant milestone since it means that visitors to websites using Let&rsquo;s Encrypt certificates can enjoy a secure browsing experience with no special configuration required.</p>
<p>Both Let’s Encrypt intermediate certificates, Let’s Encrypt Authority X1 and Let’s Encrypt Authority X2, received cross-signatures. Web servers will need to be configured to serve the appropriate cross-signature certificate as part of the trust chain. The Let’s Encrypt client will handle this automatically.</p>
<p>You can see an example of a server using a Let&rsquo;s Encrypt certificate under
a new cross-signed intermediate <a href="https://helloworld.letsencrypt.org/">here</a>.</p>
<p>Vital personal and business information is flowing over the Internet more frequently than ever, and it&rsquo;s time to encrypt all of it. That&rsquo;s why we created Let&rsquo;s Encrypt, and we&rsquo;re excited to be one <em>big</em> step closer to bringing secure connections to every corner of the Web.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2015/10/19/lets-encrypt-is-trusted.html</guid>
      </item><item>
        <title>Internet Society Sponsors Let&#39;s Encrypt</title>
        <link>https://letsencrypt.org/2015/10/08/isoc-sponsors-lets-encrypt.html</link>
        <pubDate>Thu, 08 Oct 2015 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>We&rsquo;re pleased to announce that <a href="https://www.internetsociety.org/">Internet Society (ISOC)</a> has become a <a href="/sponsors/">Gold sponsor</a> of Let&rsquo;s Encrypt.</p>
<p>According to Olaf Kolkman, &ldquo;The Internet Society sees encryption as a new norm to enhance the security of, and thereby trust in, the Internet.&rdquo; We couldn&rsquo;t agree more.</p>
<p>Internet Society&rsquo;s sponsorship comes at a key time, and will help us to pay for staff and other operation costs as we move from our beta program into general availability.</p>
<p>If your company or organization would like to sponsor Let&rsquo;s Encrypt, please email us at <a href="mailto:sponsor@letsencrypt.org">sponsor@letsencrypt.org</a>.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2015/10/08/isoc-sponsors-lets-encrypt.html</guid>
      </item><item>
        <title>Our First Certificate Is Now Live</title>
        <link>https://letsencrypt.org/2015/09/14/our-first-cert.html</link>
        <pubDate>Mon, 14 Sep 2015 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Let’s Encrypt passed another major milestone by issuing our first certificate. You can see it in action <a href="https://helloworld.letsencrypt.org/">here</a>.</p>
<p>Our cross signature is not yet in place, however this certificate is fully functional for clients with the <a href="https://letsencrypt.org/certs/isrgrootx1.der">ISRG root</a> in their trust store. When we are cross signed, approximately a month from now, our certificates will work just about anywhere while our root propagates. We submitted initial applications to the root programs for <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1204656">Mozilla</a>, <a href="https://code.google.com/p/chromium/issues/detail?id=531672">Google</a>, Microsoft, and Apple today.</p>
<p>We’re thrilled to finally be a live CA. We’ll be working towards general availability over the next couple of months by issuing certificates to domains participating in our beta program. You can request that your domain be included in our beta program by <a href="https://goo.gl/forms/kf0IGCeAk5">clicking here</a>.</p>
<p>If you want to get involved with Let’s Encrypt, please visit <a href="/getinvolved/">this page</a>.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2015/09/14/our-first-cert.html</guid>
      </item><item>
        <title>Let&#39;s Encrypt Community Support</title>
        <link>https://letsencrypt.org/2015/08/13/lets-encrypt-community-support.html</link>
        <pubDate>Thu, 13 Aug 2015 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Let’s Encrypt&rsquo;s success depends on a strong community. Nowhere is this more true than when it comes to subscriber support. Today we’re happy to announce <a href="https://community.letsencrypt.org/">Let’s Encrypt Community Support</a>, a place for our community to both give and receive support.</p>
<p>We’re a small organization hoping to help a large portion of the Web move to HTTPS. Many people are going to have questions during the transition, and we need to be able to provide answers. Hiring an army of support staff is out of the question for us, but we’re not convinced that would be the way to go anyway, even if we could afford it.</p>
<p><a href="https://www.youtube.com/watch?v=Xe1TZaElTAs">Clay Shirky once said</a> that you’ll make more accurate predictions about the quality and longevity of services in a Web-driven world “if you ask yourself not what’s the business model, but rather do the people who like it take care of each other?”</p>
<p>No amount of staffing could provide the level of support that a strong community of fellow users is capable of providing. We sincerely hope that our users will join us in taking care of each other.</p>
<p>We’d like to thank <a href="https://www.discourse.org/">Discourse</a> for providing the Let’s Encrypt Community Support platform and hosting.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2015/08/13/lets-encrypt-community-support.html</guid>
      </item><item>
        <title>Updated Let&#39;s Encrypt Launch Schedule</title>
        <link>https://letsencrypt.org/2015/08/07/updated-lets-encrypt-launch-schedule.html</link>
        <pubDate>Fri, 07 Aug 2015 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>We can&rsquo;t wait to see websites turn on TLS with Let&rsquo;s Encrypt. Trust is our most important asset, however, and we need to take the necessary time to make sure our systems are secure and stable.</p>
<p>We&rsquo;ve decided to push our launch schedule back a bit to give us time to further improve our systems. Our new schedule is:</p>
<ul>
<li>First certificate: Week of September 7, 2015</li>
<li>General availability: Week of November 16, 2015</li>
</ul>
<p>In the ten weeks between these two dates we&rsquo;ll gradually issue more and more certificates. We&rsquo;ll start by issuing a small number of certs to whitelisted domains and expand our issuance as we gain confidence in our systems (stay tuned for instructions on getting your domains added to our early-access whitelist). When it&rsquo;s time for general availability we will open up our systems to all requests.</p>
<p>A cross-signature will be in place before general availability. This will allow certificates from Let&rsquo;s Encrypt to validate automatically for the vast majority of consumers. Prior to cross-signing, browsers will not accept our certificates as valid unless a user has installed our <a href="https://letsencrypt.org/certificates/">root</a> as trusted.</p>
<p>I want to thank our staff, partners, sponsors, and contributors. We&rsquo;re making great progress, despite this delay, and it&rsquo;s all possible due to their hard work.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2015/08/07/updated-lets-encrypt-launch-schedule.html</guid>
      </item><item>
        <title>ISRG Legal Transparency Report, January 2015 - June 2015</title>
        <link>https://letsencrypt.org/2015/07/01/legal-transparency-report.html</link>
        <pubDate>Wed, 01 Jul 2015 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>The trust of our users is ISRG’s most critical asset. Transparency regarding legal requests is an important part of making sure our users can trust us, and to that end we will be publishing reports twice annually. With the exception of this first report, reports will be published three months after the period covered in order to allow us time to research all requests and orders received during the period.</p>
<p><a href="/documents/ISRG-Legal-Transparency-Report-July-1-2015.pdf">Download Legal Transparency Report, January 2015 - June 2015</a></p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2015/07/01/legal-transparency-report.html</guid>
      </item><item>
        <title>Let&#39;s Encrypt Launch Schedule</title>
        <link>https://letsencrypt.org/2015/06/16/lets-encrypt-launch-schedule.html</link>
        <pubDate>Tue, 16 Jun 2015 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Let&rsquo;s Encrypt has reached a point where we&rsquo;re ready to announce our launch schedule.</p>
<ul>
<li>First certificate: Week of July 27, 2015</li>
<li>General availability: Week of September 14, 2015</li>
</ul>
<p>We will issue the first end entity certificates under our root under tightly controlled circumstances. No cross-signature will be in place yet, so the certificates will not validate unless <a href="https://letsencrypt.org/certificates/">our root</a> is installed in client software. As we approach general availability we will issue more and more certificates, but only for a pre-approved set of domains. This limited issuance period will give us time to further ensure that our systems are secure, compliant, and scalable.</p>
<p>When it&rsquo;s time for general availability, we will open up our systems to certificate requests for any domain. A cross-signature from <a href="https://identrust.com/">IdenTrust</a> will be in place for general availability, so that our certificates will validate automatically for the vast majority of consumers.</p>
<p>Engineering and policy development for Let&rsquo;s Encrypt began in earnest in mid-October of 2014. If we stay true to the schedule outlined above we will have built an innovative CA, capable of operating at Internet scale and without cutting corners, in just eleven months. That&rsquo;s quite a feat, given all that&rsquo;s involved, and a testament to the skill and dedication of our staff, partners, sponsors, and contributors.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2015/06/16/lets-encrypt-launch-schedule.html</guid>
      </item><item>
        <title>Let&#39;s Encrypt Root and Intermediate Certificates</title>
        <link>https://letsencrypt.org/2015/06/04/isrg-ca-certs.html</link>
        <pubDate>Thu, 04 Jun 2015 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>The keys and certificates that will underlie Let&rsquo;s Encrypt have been generated. This was done during a key ceremony at a secure facility today. The following objects were created:</p>
<ul>
<li>Key pair and self-signed cert for the ISRG root</li>
<li>Key pair and certificate for the ISRG root&rsquo;s OCSP</li>
<li>Key pairs and certificates for two Let’s Encrypt intermediate CAs</li>
<li>CRL under the ISRG root showing that the Let’s Encrypt intermediates have not been revoked</li>
</ul>
<p>The certificates over the public keys, of course, can be made public:</p>
<ul>
<li><a href="/certs/isrgrootx1.pem.txt">ISRG Root X1 Certificate</a></li>
<li><a href="/certs/letsencryptauthorityx1.pem.txt">Let&rsquo;s Encrypt Intermediate X1 CA Certificate</a></li>
<li><a href="/certs/letsencryptauthorityx2.pem.txt">Let&rsquo;s Encrypt Intermediate X2 CA Certificate</a></li>
</ul>
<p>Let&rsquo;s Encrypt will issue certificates to subscribers from its intermediate CAs, allowing us to keep our root CA safely offline. IdenTrust will cross-sign our intermediates. This will allow our end certificates to be accepted by all major browsers while we propagate our own root.</p>
<p>Under normal circumstances, certificates issued by Let&rsquo;s Encrypt will come from &ldquo;Let&rsquo;s Encrypt Intermediate X1&rdquo;. The other intermediate, &ldquo;Let&rsquo;s Encrypt Intermediate X2&rdquo;, is associated with our disaster recovery site and will only be used should we lose the ability to issue with &ldquo;Let&rsquo;s Encrypt Intermediate X1&rdquo;.</p>
<p><img src="/images/isrg-keys.png" alt="ISRG Key Diagram" title="ISRG Key Diagram"></p>
<p>The private keys for the ISRG root CA and the Let’s Encrypt intermediate CAs are stored on hardware security modules (HSMs), which provide a high degree of protection against the keys being stolen.</p>
<p>All ISRG keys are currently RSA keys. We are planning to generate ECDSA keys later this year.</p>
<p>The generation of these keys and certificates is an important step in getting Let&rsquo;s Encrypt ready to issue certificates. In the next few weeks, we&rsquo;ll be saying some more about our plans for going live. In the meantime, we would love for you to <a href="https://letsencrypt.org/getinvolved/">get involved</a>.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2015/06/04/isrg-ca-certs.html</guid>
      </item><item>
        <title>Draft Let&#39;s Encrypt Subscriber Agreement</title>
        <link>https://letsencrypt.org/2015/05/21/draft-le-sa.html</link>
        <pubDate>Thu, 21 May 2015 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Update 2015-10-12: These documents are now out of date. Please visit our <a
href="https://letsencrypt.org/repository/">Policy and Legal Repository</a> for
up-to-date documents.</p>
<p>Today we&rsquo;re publishing the first public draft of the <a href="/documents/LE-SA-v1.0-June-23-2015.pdf">Let&rsquo;s Encrypt Subscriber Agreement</a>. We&rsquo;ve attempted to create terms that are sensible for both our organization and our subscribers, and we want to give people a chance to review them before we start issuing certificates. Please <a href="https://groups.google.com/a/letsencrypt.org/forum/#!forum/ca-dev">let us know</a> if you have any questions or comments.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2015/05/21/draft-le-sa.html</guid>
      </item><item>
        <title>Updated Draft ISRG CP and CPS</title>
        <link>https://letsencrypt.org/2015/04/23/draft-isrg-cp-cps.html</link>
        <pubDate>Thu, 23 Apr 2015 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Update 2015-10-12: These documents are now out of date. Please visit our <a
href="https://letsencrypt.org/repository/">Policy and Legal Repository</a> for
up-to-date documents.</p>
<p>Today we&rsquo;re publishing an updated <a href="/documents/ISRG-CP-May-5-2015.pdf">draft of our Certificate Policy (CP)</a> and the first public <a href="/documents/ISRG-CPS-May-5-2015.pdf">draft of our Certification Practice Statement (CPS)</a>. These are important documents for any Certificate Authority (CA), and we want to give people a chance to review ours before we start issuing certificates. Please <a href="https://groups.google.com/a/letsencrypt.org/forum/#!forum/ca-dev">let us know</a> if you have any questions or comments.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2015/04/23/draft-isrg-cp-cps.html</guid>
      </item><item>
        <title>ISRG Engages NCC Group for Let&#39;s Encrypt Audit</title>
        <link>https://letsencrypt.org/2015/04/14/ncc-group-audit.html</link>
        <pubDate>Tue, 14 Apr 2015 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>ISRG has engaged the <a href="https://cryptoservices.github.io/">NCC Group Crypto Services team</a> to perform a security review of Let&rsquo;s Encrypt&rsquo;s certificate authority software, <a href="https://github.com/letsencrypt/boulder">boulder</a>, and the <a href="https://tools.ietf.org/html/rfc8555">ACME protocol</a>. NCC Group&rsquo;s team was selected due to their strong reputation for cryptography expertise, which brought together Matasano Security, iSEC Partners, and Intrepidus Group.</p>
<p>The NCC Group audit will take place prior to the general availability of Let&rsquo;s Encrypt&rsquo;s service, and is intended to provide additional assurance that our systems are secure. The NCC Group audit does not replace the WebTrust audit, which will happen after general availability.</p>
<p>&ldquo;I&rsquo;m very much looking forward to the general availability of Let’s Encrypt - lowering the bar both technically and financially for people to deploy TLS will result in a more encrypted Internet that helps increase security and preserve people&rsquo;s privacy,&rdquo; said Tom Ritter, Practice Director, NCC Group.</p>
<p>Let&rsquo;s Encrypt&rsquo;s certificate authority software is called <a href="https://github.com/letsencrypt/boulder">boulder</a>. It&rsquo;s largely written in the go language and makes use of CloudFlare&rsquo;s <a href="https://github.com/cloudflare/cfssl">CFSSL</a> tools, which are also written in go. Our boulder software contains modules including a web front-end and registration, validation, certificate, and storage authorities.</p>
<p><a href="https://github.com/letsencrypt/acme-spec/">ACME</a>, short for Automated Certificate Management Environment, is the protocol that Let&rsquo;s Encrypt will use for automatic certificate issuance and management. We hope to standardize ACME in the <a href="https://www.ietf.org/">IETF</a>, starting with the formation of a working group later this year.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2015/04/14/ncc-group-audit.html</guid>
      </item><item>
        <title>ISRG and The Linux Foundation to Collaborate</title>
        <link>https://letsencrypt.org/2015/04/09/isrg-lf-collaboration.html</link>
        <pubDate>Thu, 09 Apr 2015 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Internet Security Research Group (ISRG), the non-profit entity behind Let&rsquo;s Encrypt, is pleased to announce our collaboration with <a href="https://www.linuxfoundation.org/">The Linux Foundation</a>. The Linux Foundation will provide general and administrative support services, as well as services related to fundraising, financial management, contract and vendor management, and human resources.</p>
<p>The Linux Foundation is a non-profit organization dedicated to advancing Linux and collaborative development. Founded in 2000, The Linux Foundation sponsors the work of Linux creator Linus Torvalds and is supported by leading Linux and open source companies and developers from around the world.</p>
<p>While ISRG and Let&rsquo;s Encrypt are not specifically oriented towards Linux, we share an enthusiasm for solving problems with open and collaborative initiatives. The Linux Foundation hosts a variety of projects that embrace open source and collaborative development practices and principles, ranging from Yocto Project (embedded Linux) to AllSeen Alliance (Internet of Things) and Cloud Foundry (Platform-as-a-Service). It also hosts the <a href="https://www.coreinfrastructure.org/">Core Infrastructure Initiative</a>, which identifies and funds critical open source projects that support the world’s infrastructure. This was established in response to Heartbleed a year ago and is today funding important work to ensure a secure Internet.</p>
<p>ISRG&rsquo;s collaboration with The Linux Foundation will allow our staff and management to focus on carrying out our mission. While we do so, we&rsquo;ll be supported by a team at The Linux Foundation with a wealth of experience helping similar organizations. Furthermore, sharing support infrastructure with other projects allows us to put more of our donors&rsquo; money directly towards carrying out our mission.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2015/04/09/isrg-lf-collaboration.html</guid>
      </item><item>
        <title>Draft ISRG Certificate Policy (CP)</title>
        <link>https://letsencrypt.org/2015/02/19/draft-isrg-cp.html</link>
        <pubDate>Thu, 19 Feb 2015 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Update 2015-10-12: These documents are now out of date. Please visit our <a
href="https://letsencrypt.org/repository/">Policy and Legal Repository</a> for
up-to-date documents.</p>
<p>Today we&rsquo;re publishing a <a href="/documents/ISRG-CP-May-5-2015.pdf">draft of our Certificate Policy (CP)</a>. This is an important document for any Certificate Authority (CA), and we want to give people a chance to review it before we start issuing certificates. Please <a href="https://groups.google.com/a/letsencrypt.org/forum/#!forum/ca-dev">let us know</a> if you have any questions or comments.</p>
<p>We&rsquo;re also working on our Certification Practice Statement (CPS), which describes how we&rsquo;re going to issue certificates under the policies outlined in our CP, but it isn&rsquo;t quite ready for public review yet. We&rsquo;re hoping to publish a draft within the next month.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2015/02/19/draft-isrg-cp.html</guid>
      </item><item>
        <title>Let’s Encrypt: Delivering SSL/TLS Everywhere</title>
        <link>https://letsencrypt.org/2014/11/18/announcing-lets-encrypt.html</link>
        <pubDate>Tue, 18 Nov 2014 00:00:00 +0000</pubDate>
        <description><![CDATA[<p>Vital personal and business information flows over the Internet more frequently than ever, and we don&rsquo;t always know when it&rsquo;s happening. It&rsquo;s clear at this point that encrypting is something all of us should be doing. Then why don’t we use <a href="https://en.wikipedia.org/wiki/Transport_Layer_Security">TLS (the successor to SSL)</a> everywhere? Every browser in every device supports it. Every server in every data center supports it. Why don’t we just flip the switch?</p>
<p>The challenge is server certificates. The anchor for any TLS-protected communication is a public-key certificate which demonstrates that the server you’re actually talking to is the server you intended to talk to. For many server operators, getting even a basic server certificate is just too much of a hassle. The application process can be confusing. It usually costs money. It’s tricky to install correctly. It’s a pain to update.</p>
<p>Let’s Encrypt is a new free certificate authority, built on a foundation of cooperation and openness, that lets everyone be up and running with basic server certificates for their domains through a simple one-click process.</p>
<p>Mozilla Corporation, Cisco Systems, Inc., Akamai Technologies, Electronic Frontier Foundation, IdenTrust, Inc., and researchers at the University of Michigan are working through the Internet Security Research Group (“ISRG”), a California public benefit corporation, to deliver this much-needed infrastructure in Q2 2015. The ISRG welcomes other organizations dedicated to the same ideal of ubiquitous, open Internet security.</p>
<p>The key principles behind Let’s Encrypt are:</p>
<ul>
<li><strong>Free:</strong> Anyone who owns a domain can get a certificate validated for that domain at zero cost.</li>
<li><strong>Automatic:</strong> The entire enrollment process for certificates occurs painlessly during the server’s native installation or configuration process, while renewal occurs automatically in the background.</li>
<li><strong>Secure:</strong> Let’s Encrypt will serve as a platform for implementing modern security techniques and best practices.</li>
<li><strong>Transparent:</strong> All records of certificate issuance and revocation will be available to anyone who wishes to inspect them.</li>
<li><strong>Open:</strong> The automated issuance and renewal protocol will be an open standard and as much of the software as possible will be open source.</li>
<li><strong>Cooperative:</strong> Much like the underlying Internet protocols themselves, Let’s Encrypt is a joint effort to benefit the entire community, beyond the control of any one organization.</li>
</ul>
<p>If you want to help these organizations in making TLS Everywhere a reality, here’s how you can get involved:</p>
<ul>
<li><a href="/sponsors/">Sponsor ISRG</a></li>
<li><a href="/getinvolved/">Help Us Build Let&rsquo;s Encrypt</a></li>
</ul>
<p>To learn more about the ISRG and our partners, check out our <a href="/about/">About</a> page.</p>]]></description>
        <guid isPermaLink="true">https://letsencrypt.org/2014/11/18/announcing-lets-encrypt.html</guid>
      </item>
  </channel>
</rss>
