lets encrypt璇佷功鐢宠 (lets encrypt鏁欑▼)

letsencrypt鏁欑▼,linux鐢宠ssl璇佷功

上篇文章说了怎么在阿里云下申请免费的SSL证书,这是我第一推荐的免费证书,还有一种使用比较广泛的是Let’s Encrypt免费证书,Let’s Encrypt在各种浏览器的支持也非常好,缺点是一次只有3个月有效期,每3个月需要续签一次,安装起来也比较麻烦,下面具体介绍一下Let’s Encrypt证书的申请步骤。

环境

我用的是阿里云的ECS服务器,系统是CentOS7,提前安装好了nginx,服务器的443端口要开放,nginx要停止运行。方便演示,我这里直接用的root用户。

官方文档地址

https://certbot.eff.org/docs/

安装步骤

1.*载下**certbot-auto,certbot-auto是certbot提供的官方脚本,可以简化安装和操作步骤。*载下**脚本,owner设为root,赋予可执行权限,就不赘述了。

user@webserver:~$ wget https://dl.eff.org/certbot-auto
user@webserver:~$ sudo mv certbot-auto /usr/local/bin/certbot-auto
user@webserver:~$ sudo chown root /usr/local/bin/certbot-auto
user@webserver:~$ chmod 0755 /usr/local/bin/certbot-auto
user@webserver:~$ /usr/local/bin/certbot-auto --help

letsencrypt鏁欑▼,linux鐢宠ssl璇佷功

2.用certbot-auto安装certbot,命令/usr/local/bin/certbot-auto --install-only

[root@iZ28pgeqfooZ ~]# /usr/local/bin/certbot-auto --install-only

出现如下提示说明安装成功

Complete!
Creating virtual environment...
Installing Python packages...
Installation succeeded.
Certbot is installed.

这时候再看certbot-auto --help给的提示就多了

letsencrypt鏁欑▼,linux鐢宠ssl璇佷功

3.运行命令生成证书,换上你自己的邮箱和域名

/usr/local/bin/certbot-auto certonly --standalone --email ’xxxx@xx.com’ -d ’xx.xxxxxxxx.com’

如果报错Problem binding to port 80: Could not bind to IPv4 or IPv6,说明你80端口被占了,我这里是因为忘了关nginx,关掉再来一次,看到下面提示说明证书申请成功,红色是证书在本地的保存地址。

letsencrypt鏁欑▼,linux鐢宠ssl璇佷功

4.配置nginx.conf,xx.xxxx.com换成你自己的域名

server {
 listen 443 ssl;
 server_name xx.xxxx.com;
 ssl on;
 ssl_certificate /etc/letsencrypt/live/xx.xxxx.com/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/xx.xxxx.com/privkey.pem;
 ssl_session_timeout 5m;
 ssl_protocols SSLv3 TLSv1;
 ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
 ssl_prefer_server_ciphers on;
 location / {
 root html;
 index index.html index.htm;
 }
}

5.看下效果

letsencrypt鏁欑▼,linux鐢宠ssl璇佷功

6.证书更新。

Let’s Encrypt的证书有效期只有3个月,需要自己去更新,官方提供更新命令,更新的时候要关闭nginx。

/usr/local/bin/certbot-auto renew 

letsencrypt鏁欑▼,linux鐢宠ssl璇佷功

看上面的提示,因为我的证书没到期所以不让更新,可以加上参数 --force-renew强制更新

/usr/local/bin/certbot-auto renew --force-renew

一般的做法是写一个定时更新的脚本,然后用cron定时任务自动执行,免去了手工执行的麻烦,脚本里就是3步,关nginx,更新,开nginx,这里就不举例了。官方也提供了一步到位的命令。

certbot renew --pre-hook "service nginx stop" --post-hook "service nginx start"

结语

Let’s Encrypt在开发中用的也比较多,它还有更多复杂的命令可以去看官方的文档。这里还要安利一下我上篇文章中的阿里云免费SSL证书,自己觉得比这个好用,当然大家见仁见智。

欢迎关注我的头条账号五四疯哥,查看更多实操攻略。