免费域名SSL证书——Let’s Encrypt公测体验

Let’s Encrypt项目旨在让SSL/TLS认证更快捷更容易,同时还是免费的,Let’s Encrypt已经被IdenTrust信任,可以在绝大多数设备上正常使用。前两天这个项目进行了公测,所以就来试试看吧。

Let’s Encrypt官网:https://letsencrypt.org

以下是体验Let’s Encrypt的过程

2016-2-17测试:DNSPod、Cloudxns均已可正常验证。

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

RedHat/CentOS 6需要在安装前先启用EPEL软件源。

更多的安装方法见使用文档

使用Let’s Encrypt免费获取域名证书

Let’s Encrypt客户端支持多种用来签发或是安装证书的“插件”。

插件签发安装备注
apacheYY自动在运行Apache 2.4且安装libaugeas0 1.0+的Debian-based发行版上自动获取并安装证书。
standaloneYN用一个独立的网页服务器来获取证书。
webrootYN写入已有web服务器的webroot目录来获取证书。
manualYN帮助你自行验证域名来获取证书。
nginxYY还处于实验阶段,且未包含在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

就会为所有这些域名签发一个证书。

命令执行后会提示你是否同意服务条款,选择Agree即可。
letsencrypttos

成功的话就会提示证书存放位置、过期时间等信息
QQ截图20151205171027

生成的证书会保存在/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即可。

https效果图

证书的续期

Let’s Encrypt签发的证书只有90天的有效期,所以至少每三个月续期一次

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 评论
    留言