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
占个沙发。。。
不错啊,果断了解一下