Let's Encrypt

**Let's Encrypt**是由（ISRG）运营的非营利性证书颁发机构，免费提供傳輸層安全性協定（TLS）加密的X.509证书。它是世界上最大的证书颁发机构，超过3亿个網站使用其服务，其目标是确保所有网站的安全并使用HTTPS。提供该服务的（ISRG）是一个公益组织，主要赞助商包括电子前哨基金会（EFF）、Mozilla基金會、OVH、思科系统、Facebook、Google Chrome, 互联网协会、AWS、Nginx和比尔及梅琳达·盖茨基金会。其他合作伙伴包括证书颁发机构、密西根大学以及Linux基金會。

## 概述

Let's Encrypt的使命是通过推动HTTPS的广泛应用，创建一个更加安全和尊重隐私的万维网。Let's Encrypt的证书有效期为90天，在此期间可以随时更新。该项目采用自动化流程，旨在克服手动创建、验证、數位簽章、安装和续期等繁琐步骤。该项目的目标是让万维网的加密连接普及化。通过省去支付费用、服务器配置、验证电子邮件管理和证书更新等任务，大大降低了设置和维护TLS加密的复杂性。

在Linux网络服务器上，只需执行两个命令即可设置HTTPS加密并获取和安装证书。 相关软件包已纳入Debian以及Ubuntu的官方软件存储库。目前，Mozilla和Google等主要浏览器开发商正在努力淘汰未加密的HTTP，这得益于Let's Encrypt的广泛使用。该项目有望使加密连接成为整个互联网的默认状态。

该服务仅颁发域名验证型证书（DV），因为这些证书可以完全自动化签发。组织验证（OV）以及和扩展验证证书（EV）都需要对注册人的人工验证，因此Let's Encrypt不提供这两种证书。2018年3月，Let's Encrypt增加了对ACME v2和通配符证书的支持。Let's Encrypt使用的域名验证型证书（DV），虽然于2002年首次引入时曾引起争议，但如今已成为广泛接受的SSL证书颁发方法。 

Let's Encrypt希望通过尽可能透明的方式，既保护自身的可信度，又防范攻击和操纵企图。为此，定期发布透明度报告，，公开记录所有ACME记录（如使用证书透明度），并尽可能使用开源和自由软件。

## 歷史
Let's Encrypt项目于2012年由两位Mozilla的员工Josh Aas和Eric Rescorla，以及电子前哨基金会的彼得·埃克斯利和密西根大学的共同发起。负责Let's Encrypt的（ISRG），于2013年5月注册成立。

Let's Encrypt项目于2014年11月18日正式对外宣布。

2015年1月28日，ACME协议正式提交给IETF进行标准化。2015年4月9日，ISRG和Linux基金會宣布合作。根证书和中级证书在2015年6月初生成。
2015年6月16日，服务的最终启动时间表公布，预计将于2015年7月27日那一周颁发第一个证书，随后进行有限的发证期以测试安全性和可扩展性。原计划服务的全面可用性将于2015年9月14日那一周开始。2015年8月7日，启动时间表被修订，以提供更多时间确保系统安全和稳定，计划于2015年9月7日那一周颁发第一个证书，并在2015年11月16日那一周全面开放服务。

2015年9月14日，Let's Encrypt颁发了其首个证书，域名为。同日，ISRG向Mozilla、微软、Google以及蘋果公司提交了根证书计划申请。

2015年10月19日，中级证书由交叉签署，使得Let's Encrypt颁发的所有证书都被所有主流浏览器信任。

2015年11月12日，Let's Encrypt宣布将全面开放服务的时间推迟，首次公开测试版将于2015年12月3日开始。 公开测试版从2015年12月3日持续到2016年4月12日，并于2016年4月12日正式上线。

2020年3月3日，Let's Encrypt宣布由于其证书授权软件中的一个漏洞，必须在3月4日撤销超过300万个证书。通过与软件供应商合作并联系网站运营商，Let's Encrypt在截止日期前成功更新了170万个受影响的证书。由于剩余证书的安全风险较低且将在接下来的90天内过期，他们决定不撤销这些证书。这次大规模撤销事件显著提高了全球撤销率。

2020年3月，Let's Encrypt获得了自由软件基金会年度社会公益项目奖。

2020年2月27日，Let's Encrypt宣布已颁发了十亿个证书。

2022年4月，Let's Encrypt因“对证书生态系统的根本性改进，为所有人提供免费的证书”而获得。

截至2022年9月，Let's Encrypt报告称已颁发了2.34亿个有效（未过期）证书。

## 技术

### 信任链

#### ISRG Root X1 (RSA)
2015年6月，Let's Encrypt宣布生成首张RSA加密算法根证书「ISRG Root X1」。该根证书用于签署两个中间证书，同时这些中间证书也由证书颁发机构交叉签名。其中一个中间证书用于签发证书，而另一个作为备用，以防第一个中间证书出现问题。由于证书已经得到主要网络浏览器的广泛信任，因此即使在浏览器供应商将（ISRG）根证书作为之前，Let's Encrypt的证书通常也能得到验证和接受。

#### ISRG Root X2 (ECDSA)
Let's Encrypt的开发者早在2015年就计划生成一个ECDSA根密钥，但计划推迟到2016年初，随后推迟到2019年，最终推迟到2020年。2020年9月3日，Let's Encrypt发布了六个新证书：一个新的ECDSA根证书「ISRG Root X2」，四个中间证书和一个交叉签名。新的根证书「ISRG Root X2」由Let's Encrypt自己的根证书ISRG Root X1交叉签名。Let's Encrypt没有为新的中间证书部署OCSP，而是计划完全依赖证书吊销列表 (CRLs)来撤销受损证书，并通过缩短证书有效期来减少证书受损的风险。

### ACME协议
用于自动注册证书颁发机构的称为「自動憑證更新環境（ACME）」。它可以查询由证书涵盖的域控制的Web服务器或DNS服务器，并根据得到的响应是否符合预期，以确保注册者对域的控制（域验证）。ACME客户端软件可以设置一个专用的TLS服务器，由ACME证书颁发机构服务器通过服务器名称指示（SNI）的方式进行域验证（DVSNI），或者可以使用钩子向现有的Web和DNS服务器发布响应。

验证过程通过不同的网络路径进行多次运行，并在多个不同的地理位置上进行检查DNS条目，从而使DNS欺骗攻击更难实施。

ACME交互基于通过HTTPS连接交换JSON文档。在GitHub上有一份规范草案，并已提交给互联网工程任务组（IETF）作为互联网标准的。

Let's Encrypt实现了自己的ACME协议草案。与此同时，他们还推动标准化。这一努力促成了2019年5月发布的「提案标准（proposed standard）」（RFC8555），该标准引入了重大变革，因此被称为“ACMEv2”。Let's Encrypt 实现了这一新版本，并开始推动现有客户端进行升级。通过ACMEv1 API的的间歇性停机，Let's Encrypt 推动用户进行升级，并在「ACMEv1 生命周期结束计划」中公布了生命周期结束的日期和各个阶段。自2019年11月8日起，ACMEv1不再接受新账户注册。自2020年6月起，ACMEv1停止接受新域名验证。从2021年1月起，ACMEv1经历了24小时的停机。最终，ACMEv1 API于2021年6月1日完全关闭。

### 软件部署

证书颁发机构由一个名为Boulder的软件组成，该软件用Go编写，实现了ACME协议的服务器端。该软件根据Mozilla公共许可证 (MPL)第2版的条款，以自由软件的形式发布源代码。它提供了一个可以通过TLS加密通道访问RESTful的API。

客户端会安装一个名为「certbot」（前身为「letsencrypt」）的证书管理程序，该程序根据Apache许可证授权，并由Python编写。这个程序用于申请证书，进行域名验证过程，安装证书，配置HTTP服务器中的HTTPS加密，并定期更新证书。 安装并同意用户许可证后，只需执行一条命令即可安装有效证书。除此之外，还可以启用其他选项，如OCSP装订或HTTP严格传输安全（HSTS）。自动设置最初只适用于Apache以及Nginx。

Let's Encrypt签发的证书有效期为90天，理由是这样做会「限制密钥泄露和错误签发造成的损失」，并鼓励自动化。 

最初，Let's Encrypt开发了自己官方的ACME客户端「Certbot」。现在已移交给电子前哨基金会，其名称从「letsencrypt」更改为「certbot」。社区开发了大量适用于多种环境的ACME客户端和项目。

## 中国大陆屏蔽
2020年4月2日，防火长城对Let's Encrypt的OCSP服务器（ocsp.int-x3.letsencrypt.org）所使用的Akamai CDN域名a771.dscq.akamai.net进行了DNS污染，导致部分浏览器首次访问使用Let's Encrypt证书的网站时无法完成OCSP检查，加载缓慢。

2020年11月20日，Let's Encrypt 推出了 R3 中间证书，使用了新的 OCSP 服务器地址（r3.o.lencr.org），问题得到解决。

## 更多
* HTTPS Everywhere
*Let's Encrypt Stats  -- Let's Encrypt 逐日签发证书的交互式图表

## 延伸阅读
* 

## 参考资料

## 外部链接
* 
* GitHub上的代码库 
* 塞斯·舒恩 Libre Planet 2015 演讲： Let's Encrypt 
* pde's talk on Let's Encrypt  于 CCCamp 2015
* Let's Encrypt 颁发的证书列表