post

轻松搞定 Let’s Encrypt 免费SSL证书

Let’s Encrypt 是一个免费、自动化、开放的证书颁发机构,虽然申请的SSL/TLS证书只有3个月有效期,但是可以通过官方提供的工具自动续期,从而达到永久免费使用,无疑是小站长们最好的选择,而且申请步骤真的很简单,很简单!

本文将介绍,基于 Let’s Encrypt certbot 客户端来申请简易型的 DV SSL 证书 (Domain Validation SSL 域名验证型SSL证书)。

首先额外介绍一下 Let’s Encrypt

Let’s Encrypt 是由互联网安全研究小组(ISRG,一个公益组织)提供的服务,主要赞助商包括电子前哨基金会,Mozilla基金会,Akamai以及思科。
ISRG于2015年4月9日与Linux基金会宣布合作。
Let’s Encrypt 最初是由 Mozilla 的两名员工于2012年发起,2015年12月3日开启公测,2016年4月12日,该项目正式对外使用。

下面介绍具体的申请过程,文章虽长,实际操作起来,半小时足矣!

一、系统环境

我使用的是 CentOS 7、军哥的 LNMP 1.3,博客已经支持 https,Nginx版本为 1.10.1(1.9.5以上支持 http2)。

certbot 客户端所支持的操作系统可以在 https://certbot.eff.org/ 查看,当然这里面也有使用教程,推荐看看。

目前看 certbot 在一些老版本的Linux发行版上的兼容性还是有问题的,特别是在CentOS 5上因为python版本过低是无法用的,CentOS 6上需要先安装epel才行,当然也有很多第三方的工具你也可以自己去尝试一下。

二、注意事项

首先确认是否能够正常访问 /.well-known/acme-challenge/**** 这是验证服务,生成证书和自动续期时都需要访问该地址,我的nginx配置是拒绝访问所有隐藏目录的,所以需要先更改。

1、可以注释掉拒绝访问隐藏文件的配置,或者在前面追加 /.well-known 的配置

location ~ /.well-known 
     {
        allow all;
     }
#拒绝访问隐藏目录
location ~ /\.
     {
        deny all;
     }

2、如果博客启用了https,并且将http请求做了301跳转,也可以改为这样

server
{
    listen  80;
    server_name www.izhangheng.com;         
    location /.well-known/ {
        add_header Content-Type 'text/plain;';
        root  /home/wwwroot/www.izhangheng.com;
    }
    location / {
        return 301 https://www.izhangheng.com$request_uri;
    }
}

三、申请证书

如果是 CentOS 6 也可以按照下面来安装,其他系统的话,可以参照,具体的还请看 https://certbot.eff.org/。

yum install epel-release
cd /root/
wget https://dl.eff.org/certbot-auto --no-check-certificate
chmod +x ./certbot-auto
./certbot-auto -n

接下来就会自动安装所需的依赖包,安装成功后,就可以使用 certbot-auto 脚本来申请证书。

注意:以下生成证书的命令都是一句,没有换行。

1、单域名生成证书:

./certbot-auto certonly --email xxxx@izhangheng.com --agree-tos 
 --webroot -w /home/wwwroot/www.izhangheng.com -d www.izhangheng.com

2、多域名单目录生成单证书:(即一个网站多个域名使用同一个证书)

./certbot-auto certonly --email xxxx@izhangheng.com --agree-tos
 --webroot -w /home/wwwroot/www.izhangheng.com -d www.izhangheng.com 
 -d showtu.izhangheng.com

3、多域名多目录生成多个证书:(即一次生成多个域名的多个证书)

./certbot-auto certonly --email xxxx@izhangheng.com --agree-tos 
 --webroot -w /home/wwwroot/www.izhangheng.com -d www.izhangheng.com 
 -d showtu.izhangheng.com -w /home/wwwroot/temp -d www1.izhangheng.com 
 -d www2.izhangheng.com

出现下面的提示就代表安装成功了,证书文件就在 /etc/letsencrypt/live/www.izhangheng.com/ 目录下。

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/www.izhangheng.com/fullchain.pem. Your cert will
expire on 2016-10-25. To obtain a new or tweaked version of this
certificate in the future, simply run certbot-auto again. To
non-interactively renew *all* of your certificates, run
"certbot-auto renew"
- If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

四、更新Nginx配置

将原来的SSL证书配置更改为下面这样:

ssl_certificate /etc/letsencrypt/live/www.izhangheng.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.izhangheng.com/privkey.pem;

然后重启 Nginx (service nginx restart)即可,通过浏览器点击绿色https位置,即可查看证书颁发机构是否是 Let’s Encrypt。

五、证书自动续期

cerrbot 的续期很简单,因为证书只有90天,所以建议使用 crontab 进行自动续期。

执行命令 crontab -e 添加定时任务,如果默认是vi编辑器,则按 i 进入编辑状态,再粘贴 0 3 * * * /root/certbot-auto renew --renew-hook "/etc/init.d/nginx reload"

这样就实现了,每天的凌晨3点执行一次续期操作,官方建议是一天一次,不要太频繁,有限制的。

如果执行自动续期命令出错,提示 Cert not yet due for renewal (证书尚未过期),也可以强制更新,使用 –renew-by-default 选项,完整命令为:/root/certbot-auto renew --renew-by-default

如果希望每个月1号凌晨3点强制更新,则代码为:0 3 1 * * /root/certbot-auto renew --renew-by-default --renew-hook "/etc/init.d/nginx reload"

简单吧,而且是永久免费的SSL证书,尽情享用吧!

参考文章:
https://letsencrypt.org/getting-started/
https://certbot.eff.org/#centosrhel7-nginx
http://www.vpser.net/build/letsencrypt-certbot.html
http://www.vpser.net/manage/crontab.html

Comments

  1. 占个沙发。。。

  2. 不错啊,果断了解一下

Speak Your Mind

*

· 2,545 次浏览