Let’s Encrypt项目旨在让SSL/TLS认证更快捷更容易,同时还是免费的,Let’s Encrypt已经被IdenTrust信任,可以在绝大多数设备上正常使用。前两天这个项目进行了公测,所以就来试试看吧。
以下是体验Let’s Encrypt的过程
2015-12-11更新:letsencrypt更新了域名验证规则,如果域名使用国内的DNS,如DNSPod、Cloudxns等会因不支持回复CAA请求,导致无法正常认证域名,会报错DNS query timed out,DNSPod已在修复该问题。
安装Let’s Encrypt客户端
Let’s Encrypt提供了自动安装的脚本,可以直接下下来运行
git clone https://github.com/letsencrypt/letsencrypt.git cd letsencrypt ./letsencrypt-auto
更多的安装方法见使用文档。
使用Let’s Encrypt免费获取域名证书
Let’s Encrypt客户端支持多种用来签发或是安装证书的“插件”。
插件 | 签发 | 安装 | 备注 |
---|---|---|---|
apache | Y | Y | 自动在运行Apache 2.4且安装libaugeas0 1.0+的Debian-based发行版上自动获取并安装证书。 |
standalone | Y | N | 用一个独立的网页服务器来获取证书。 |
webroot | Y | N | 写入已有web服务器的webroot目录来获取证书。 |
manual | Y | N | 帮助你自行验证域名来获取证书。 |
nginx | Y | Y | 还处于实验阶段,且未包含在letsencrypt-auto里。 |
由于我已经安装了nginx,所以选择webroot插件来获得证书。
需要在命令行中使用certonly
和--webroot
命令。或者也可用--webroot-path
或者-w
来指定web服务器的root目录。例如--webroot-path /var/www/html
或--webroot-path /usr/share/nginx/html
就是两个常见的目录。
如果需要同时获取多个域名的证书,每个域名需要用最近的一个--webroot-path
参数,比如像这样:
./letsencrypt-auto certonly --webroot -w /var/www/cfan.space/ -d www.cfan.space -d cfan.space -w /var/www/vmoe.info -d vmoe.info -d www.vmoe.info
就会为所有这些域名签发一个证书。
生成的证书会保存在/etc/letsencrypt/live/$domain
,目录下会有下面几个文件:
privkey.pem
证书的私钥
注意,
这个文件无论什么时候都不能被公开!不要和向任何人提供这个文件,包括Let’s Encrypt的开发者。你也不能把它压在箱底,毕竟服务器还是要用这个文件来保证SSL/TLS正常工作的
这个文件就是Apache所需的SSLCertificateKeyFile文件,以及nginx所需的for ssl_certificate_key文件。
cert.pem
服务器证书
就是Apache所需的SSLCertificateFile文件。
chain.pem
除了服务器证书以外的所有证书,比如根证书和中级证书
是Apache所需的SSLCertificateChainFile文件。
fullchain.pem
包括服务器证书的所有证书,也就是cert.pem和chain.pem合并后的证书
是nginx所需的ssl_certificate文件。
安装域名证书并启用HTTPS
编辑签发证书的域名的nginx配置文件,加上如下这样配置即可默认使用https协议
listen 443; listen [::]:443;#启用ipv6,没v6的可以删了这行 ssl on; ssl_certificate /etc/letsencrypt/live/www.cfan.space/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/www.cfan.space/privkey.pem;
nginx 1.9.5以后的版本支持http2协议,可以很好地提高的性能
listen 443 ssl http2; listen [::]:443 ssl http2; ssl_certificate /etc/letsencrypt/live/www.cfan.space/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/www.cfan.space/privkey.pem;
保存后重启nginx即可。
证书的续期
Let’s Encrypt的证书续期很简单,只需执行和签发时相同的letsencrypt-auto命令时加上–renew参数即可。
./letsencrypt-auto --renew certonly --webroot -w /var/www/cfan.space/ -d www.cfan.space -d cfan.space -w /var/www/vmoe.info -d vmoe.info -d www.vmoe.info
一键全部续期可执行下面的命令
./letsencrypt-auto renew
总结
只需简单的一条命令即可获得证书,这也是因为Let’s Encrypt签发的证书是域名ssl证书(DV),只需验证域名的所有权即可,像之前startssl、comodo还有国内的沃通的免费SSL证书也同样是域名证书。
Let’s Encrypt比起之前那些免费证书优势还是很明显的,首先操作要简单很多,使用自带的插件后不再需要手动生成私钥以及证书请求文件(csr),同时还计划开发更多插件来实现自动安装证书等更简便的操作;证书的有效期虽然比startssl的一年有效期短不少,但因为申请很方便,可以实现自动续期;可以自定义密钥的大小等等。
总的来说,证书的认证过程还是非常容易的,同时还是免费开源的,对此有需要的朋友不妨一试。
11 评论