Puneet Varma (Editor)

Let's Encrypt

Updated on
Edit
Like
Comment
Share on FacebookTweet on TwitterShare on LinkedInShare on Reddit
Website
  
letsencrypt.org

Let's Encrypt

Formation
  
2014; 3 years ago (2014)

Founder
  
Electronic Frontier Foundation Mozilla Foundation University of Michigan

Headquarters
  
San Francisco, California, U.S.

Services
  
X.509 certificate authority

Parent organization
  
Internet Security Research Group

Let's Encrypt is a certificate authority that launched on April 12, 2016 that provides free X.509 certificates for Transport Layer Security (TLS) encryption via an automated process designed to eliminate the current complex process of manual creation, validation, signing, installation, and renewal of certificates for secure websites.

Contents

Overview

The project aims to make encrypted connections to World Wide Web servers ubiquitous. By eliminating payment, web server configuration, validation email management and certificate renewal tasks, it is meant to significantly lower the complexity of setting up and maintaining TLS encryption. On a Linux web server, execution of only two commands is sufficient to set up HTTPS encryption and acquire and install certificates.

To that end, a software package was included into the official Debian software repositories. Current initiatives of major browser developers such as Mozilla and Google to deprecate unencrypted HTTP are counting on the availability of Let's Encrypt. The project is acknowledged to have the potential to accomplish encrypted connections as the default case for the entire web.

Only domain-validated certificates are being issued, since they can be fully automated. Organization Validation and Extended Validation Certificates are not available.

By being as transparent as possible, they hope to both protect their own trustworthiness and guard against attacks and manipulation attempts. For that purpose they regularly publish transparency reports, publicly log all ACME transactions (e.g. by using Certificate Transparency), and use open standards and free software as much as possible.

There is currently no plan to support wildcard certificates, though it has not been ruled out either. The reason given for the lack of support is that the ease of getting non-wildcard Let's Encrypt certificates issued makes wildcard certificates unnecessary, though some users have opined that there are still use cases where wildcard certificates are easier to use or even technically necessary.

Involved parties

Let's Encrypt is a service provided by the Internet Security Research Group (ISRG), a public benefit organization. Major sponsors are the Electronic Frontier Foundation (EFF), the Mozilla Foundation, OVH, Akamai, and Cisco Systems. Other partners include the certificate authority IdenTrust, the University of Michigan (U-M), the Stanford Law School, the Linux Foundation as well as Stephen Kent from Raytheon/BBN Technologies and Alex Polvi from CoreOS.

Technical Advisory Board

  • Rich Salz (Akamai Technologies)
  • Joe Hildebrand (Cisco Systems)
  • Jacob Hoffman-Andrews (Electronic Frontier Foundation)
  • J. C. Jones (Mozilla Foundation)
  • Russ Housley (Independent)
  • Ryan Hurst (Independent)
  • Stephen Kent (Independent)
  • Karen O'Donoghue (Internet Society)
  • Technology

    In June 2015, Let's Encrypt generated an RSA root certificate with its private key stored on a hardware security module which is kept offline. The root certificate is used to sign two intermediate certificates which are cross-signed by the certificate authority IdenTrust. One of the intermediate certificates is used to sign issued certificates, while the other is kept offline as a backup in case of problems with the first intermediate certificate. Because the IdenTrust certificate is preinstalled in major web browsers, Let's Encrypt certificates can normally be validated and are accepted upon installation, out of the box, even while no browser vendors include the ISRG root certificate as a trust anchor.

    The Let's Encrypt developers planned to generate an ECDSA root certificate as well later in 2015, which was pushed back to early 2016.

    Protocol

    The challenge–response protocol used to automate enrolling with this new certificate authority is called Automated Certificate Management Environment (ACME). It involves various requests to the web server on the domain that is covered by the certificate. Based on whether the resulting responses match the expectations, control of the enrollee over the domain is assured (domain validation). In order to do that, the ACME client software sets up a special TLS server on the server system that gets queried by the ACME certificate authority server with special requests using Server Name Indication (Domain Validation using Server Name Indication, DVSNI).

    The validation processes are run multiple times over separate network paths. Checking DNS entries is provisioned to be done from multiple geographically diverse locations to make DNS spoofing attacks harder to do.

    ACME interactions are based on exchanging JSON documents over HTTPS connections. A draft specification is available on GitHub, and a version has been submitted to the Internet Engineering Task Force (IETF) as a proposal for an Internet standard.

    Software implementation

    The certificate authority consists of a piece of software called Boulder, written in Go, that implements the server side of the ACME protocol. It is published as free software with source code under the terms of version 2 of the Mozilla Public License (MPL). It provides a RESTful API that can be accessed over a TLS-encrypted channel.

    An Apache-licensed Python certificate management program called certbot (formerly letsencrypt) gets installed on the client side (the web server of an enrollee). This is used to order the certificate, to conduct the domain validation process, to install the certificate, to configure the HTTPS encryption in the HTTP server, and later to regularly renew the certificate. After installation and agreeing to the user license, executing a single command is enough to get a valid certificate installed. Additional options like OCSP stapling or HTTP Strict Transport Security (HSTS) can also be enabled. Automatic setup initially only works with Apache and nginx.

    Let's Encrypt issues certificates valid for 90 days. Their reason is that these certificates "limit damage from key compromise and mis-issuance" and encourage automation. The official certbot client and most of the third-party clients allow automation of the certificate renewal.

    Several third-party client implementations in several languages were created by the community.

    History and schedule

    The Let's Encrypt project was started in 2012 by two Mozilla employees, Josh Aas and Eric Rescorla, together with Peter Eckersley at the Electronic Frontier Foundation and J. Alex Halderman at the University of Michigan. Internet Security Research Group, the company behind Let's Encrypt, was incorporated in May 2013.

    Let's Encrypt was announced publicly on November 18, 2014.

    On January 28, 2015, the ACME protocol was officially submitted to the IETF for standardisation. On April 9, 2015, the ISRG and the Linux Foundation declared their collaboration. The root and intermediate certificates were generated in the beginning of June. On June 16, 2015, the final launch schedule for the service was announced, with the first certificate expected to be issued sometime in the week of July 27, 2015, followed by a limited issuance period to test security and scalability. General availability of the service was originally planned to begin sometime in the week of September 14, 2015. On August 7, 2015, the launch schedule was amended to provide more time for ensuring system security and stability, with the first certificate to be issued in the week of September 7, 2015 followed by general availability in the week of November 16, 2015. The cross-signature from IdenTrust is planned to be available when Let's Encrypt opens for the public.

    On September 14, 2015, Let's Encrypt issued its first certificate, which was for the domain helloworld.letsencrypt.org. On the same day, ISRG submitted its root program applications to Mozilla, Microsoft, Google and Apple.

    On October 19, 2015, the intermediate certificates became cross-signed by IdenTrust, causing all certificates issued by Let's Encrypt to be trusted by all major browsers.

    On November 12, 2015, Let's Encrypt announced that general availability would be pushed back and that the first public beta will commence on December 3, 2015.

    On December 3, 2015, Let's Encrypt announced commencement of the public beta.

    On March 8, 2016, Let's Encrypt issued its millionth certificate after seven months of existence.

    On April 12, 2016, Let's Encrypt left Beta.

    On April 21, 2016, 44 days after issuing its millionth certificate, Let's Encrypt issued its 2 millionth certificate. By June 3, 2016, Let's Encrypt issued over 4 million certificates. As of June 22, 2016, Let's Encrypt has issued over 5 million certificates, of which 3.8 million are unexpired and unrevoked. Their active certificates cover more than 7 million unique domains, in part due to support by large hosting companies.

    On September 9, 2016, they had issued over 10 million certificates, by November 27, 2016 they had issued over 20 million, and by December 2016, 24 million.

    References

    Let's Encrypt Wikipedia