SSL/TLS 加密新纪元 - Let's Encrypt
根据 Let's Encrypt 官方博客消息，Let's Encrypt 服务将在下周（11 月 16 日）正式对外开放。 Let's Encrypt 项目是由互联网安全研究小组（ISRG，Internet Security Research Group）主导并开发的一个新型数字证书认证机构（CA，Certificate Authority）。该项目旨在开发一个自由且开放的自动化 CA 套件，并向公众提供相关的证书免费签发服务以降低安全通讯的财务、技术和教育成本。在过去的一年中，互联网安全研究小组拟定了 ACME 协议草案，并首次实现了使用该协议的应用套件：服务端 Boulder 和客户端 letsencrypt。 至于为什么 Let's
https ssl
111.193.223.148
不错
来自北京的 Sina Weibo 5.5|iOS 9.1 用户
2015-11-11T12:11:45.000
183.221.12.77
很屌的样子
来自四川成都的 Chromium 45.0|Ubuntu 用户
2015-11-11T13:38:40.000
183.6.175.195
坐等正常发布
arhool [Chrome 31.0|Windows 7]
2015-11-12T16:30:21.000
218.28.140.190
个人认为Let's Encrypt也不过那样：<br />
1，认证需要安装客户端，加大服务器管理难度<br />
2，证书只提供90天的有效期，相对于其它最多提供2年有效证书的CA来说没什么特点
来自河南郑州的 Chrome 45.0|Windows 7 用户
2015-11-16T16:50:39.000
123.120.89.18
确实，虽然这两点都是有专门的考量，但是对于我等已经熟悉了 SSL 配置的人，反而觉得不适合。<br />
对这两点，我觉得他们的考量是：<br />
1、有个客户端可以自动配置和更新，对于嫌配置麻烦的人来说很方便<br />
2、短期应该是避免证书失窃的考虑，反正可以自动更新
linux [Chrome 46.0|Mac 10.11]
2015-11-16T18:40:32.000
218.28.140.190
我觉得他们这一手倒不是怕用户证书失窃，不是有CRL嘛。这样反倒是像推APP的增加用户粘性似的。可能最大的问题是网站所有权认证。<br />
所以我觉得他们很有必要再搞一个网页版的自助申请渠道，把证书期限延长到2年，毕竟其使命是促进互联网安全嘛，如果不这样，我为什么不使用其它更方面免费的startssl, wosign呢？
来自河南郑州的 Chrome 45.0|Windows 7 用户
2015-11-19T09:33:22.000
202.120.40.105
支持！非常适合需要证书，但是又无力承担证书费用的用户，这是对互联网安全的一大贡献。
来自上海上海交通大学的 Chrome 46.0|GNU/Linux 用户
2015-11-25T09:42:55.000
根据 Let's Encrypt 官方博客消息，Let's Encrypt 服务将在下周（11 月 16 日）正式对外开放。 Let's Encrypt 项目是由互联网安全研究小组（ISRG，Internet Security Research Group）主导并开发的一个新型数字证书认证机构（CA，Certificate Authority）。该项目旨在开发一个自由且开放的自动化 CA 套件，并向公众提供相关的证书免费签发服务以降低安全通讯的财务、技术和教育成本。在过去的一年中，互联网安全研究小组拟定了 ACME 协议草案，并首次实现了使用该协议的应用套件：服务端 Boulder 和客户端 letsencrypt。 至于为什么 Let's
根据 Let's Encrypt 官方博客消息，Let's Encrypt 服务将在下周（11 月 16 日）正式对外开放。


Let's Encrypt 项目是由<ruby> 互联网安全研究小组 <rp>  （ </rp> <rt>  ISRG，Internet Security Research Group </rt> <rp>  ） </rp></ruby>主导并开发的一个新型<ruby> 数字证书认证机构 <rp>  （ </rp> <rt>  CA，Certificate Authority </rt> <rp>  ） </rp></ruby>。该项目旨在开发一个自由且开放的自动化 CA 套件，并向公众提供相关的证书**免费签发服务**以降低安全通讯的财务、技术和教育成本。在过去的一年中，互联网安全研究小组拟定了 [ACME 协议草案](https://github.com/letsencrypt/acme-spec)，并首次实现了使用该协议的应用套件：服务端 [Boulder](https://github.com/letsencrypt/boulder) 和客户端 [letsencrypt](https://github.com/letsencrypt/letsencrypt)。


至于为什么 Let's Encrypt 让我们如此激动，以及 HTTPS 协议如何保护我们的通讯请参考[浅谈 HTTPS 和 SSL/TLS 协议的背景与基础](/article-5175-1.html)。


![Let's Encrypt](/data/attachment/album/201511/11/083937alelmdbkrmweezwt.jpg)


（题图来自：muylinux.com）


### ACME 协议


Let's Encrypt 的诞生离不开 ACME（<ruby> <a href="https://github.com/letsencrypt/acme-spec">  自动证书管理环境 </a> <rp>  （ </rp> <rt>  Automated Certificate Management Environment </rt> <rp>  ） </rp></ruby>）协议的拟定。


说到 ACME 协议，我们不得不提一下传统 CA 的认证方式。Let's Encrypt 服务所签发的证书为<ruby> 域名认证证书 <rp>  （ </rp> <rt>  DV，Domain-validated Certificate </rt> <rp>  ） </rp></ruby>，签发这类证书需要域名所有者完成以下至少一种<ruby> 挑战 <rp>  （ </rp> <rt>  Challenge </rt> <rp>  ） </rp></ruby>以证明自己对域名的所有权：


* 验证申请人对域名的 Whois 信息中邮箱的控制权；
* 验证申请人对域名的常见管理员邮箱（如以 `admin@`、`postmaster@` 开头的邮箱等）的控制权；
* 在 DNS 的 TXT 记录中发布一条 CA 提供的字符串；
* 在包含域名的网址中特定路径发布一条 CA 提供的字符串。


不难发现，其中最容易实现自动化的一种操作必然为最后一条，ACME 协议中的 [Simple HTTP](https://letsencrypt.github.io/acme-spec/#simple-http) 认证即是用一种类似的方法对从未签发过任何证书的域名进行认证。该协议要求在访问 `http://域名/.well-known/acme-challenge/指定字符串` 时返回特定的字符串。


然而实现该协议的客户端 [letsencrypt](https://github.com/letsencrypt/letsencrypt) 做了更多——它不仅可以通过 ACME 协议配合服务端 [Boulder](https://github.com/letsencrypt/boulder) 的域名进行<ruby> 独立 <rp>  （ </rp> <rt>  standalone </rt> <rp>  ） </rp></ruby>的认证工作，同时还可以自动配置常见的服务器软件（目前支持 Nginx 和 Apache）以完成认证。


### Let's Encrypt 免费证书签发服务


对于大多数网站管理员来讲，想要对自己的 Web 服务器进行加密需要一笔不小的支出进行证书签发并且难以配置。根据早些年 SSL Labs 公布的 [2010 年互联网 SSL 调查报告（PDF）](https://community.qualys.com/servlet/JiveServlet/download/38-1636/Qualys_SSL_Labs-State_of_SSL_2010-v1.6.pdf) 指出超过半数的 Web 服务器没能正确使用 Web 服务器证书，主要的问题有证书不被浏览器信任、证书和域名不匹配、证书过期、证书信任链没有正确配置、使用已知有缺陷的协议和算法等。而且证书过期后的续签和泄漏后的吊销仍需进行繁琐的人工操作。


幸运的是 Let's Encrypt 免费证书签发服务在经历了漫长的开发和测试之后终于来临，在 Let's Encrypt 官方 CA 被广泛信任之前，IdenTrust 的根证书对 Let's Encrypt 的二级 CA 进行了交叉签名使得大部分浏览器已经信任 Let's Encrypt 签发的证书。


### 使用 letsencrypt


由于当前 Let's Encrypt 官方的证书签发服务还未公开，你只能尝试开发版本。这个版本会签发一个 CA 标识为 `happy hacker fake CA` 的测试证书，注意这个证书不受信任。


要获取开发版本请直接：



```
$ git clone https://github.com/letsencrypt/letsencrypt
```

以下的[使用方法](https://letsencrypt.org/howitworks/)摘自 Let's Encrypt 官方网站。


#### 签发证书


`letsencrypt` 工具可以协助你处理证书请求和验证工作。


**自动配置 Web 服务器**


下面的操作将会自动帮你将新证书配置到 Nginx 和 Apache 中。



```
$ letsencrypt run

```

**独立签发证书**


下面的操作将会将新证书置于当前目录下。



```
$ letsencrypt -d example.com auth

```

#### 续签证书


默认情况下 `letsencrypt` 工具将协助你跟踪当前证书的有效期限并在需要时自动帮你续签。如果需要手动续签，执行下面的操作。



```
$ letsencrypt renew --cert-path example-cert.pem

```

#### 吊销证书


列出当前托管的证书菜单以吊销。



```
$ letsencrypt revoke

```

你也可以吊销某一个证书或者属于某个私钥的所有证书。



```
$ letsencrypt revoke --cert-path example-cert.pem

```


```
$ letsencrypt revoke --key-path example-key.pem

```

### Docker 化 letsencrypt


如果你不想让 letsencrypt 自动配置你的 Web 服务器的话，使用 Docker 跑一份独立的版本将是一个不错的选择。你所要做的只是在装有 Docker 的系统中执行：



```
$ sudo docker run -it --rm -p 443:443 -p 80:80 --name letsencrypt \
            -v "/etc/letsencrypt:/etc/letsencrypt" \
            -v "/var/lib/letsencrypt:/var/lib/letsencrypt" \
            quay.io/letsencrypt/letsencrypt:latest auth

```

你就可以快速的为自己的 Web 服务器签发一个免费而且受信任的 DV 证书啦！


### Let's Encrypt 的注意事项


* Let's Encrypt 当前发行的 DV 证书仅能验证域名的所有权，并不能验证其所有者身份；
* Let's Encrypt 不像其他 CA 那样对安全事故有保险赔付；
* Let's Encrypt 目前不提供 Wildcard 证书；
* Let's Encrypt 的有效时间仅为 90 天，逾期需要续签（可自动续签）。


对于 Let's Encrypt 的介绍就到这里，让我们一起目睹这场互联网的安全革命吧。

