一直都在使用阿里云的免费SSL证书,但是不知道什么时候开始,这个证书的有效期变的只有3个月了,看了很多其他服务商,也都一样了。
折腾两次后受不了,干脆直接用Let's Encrypt的证书,反正都是3个月,而且还能做自动续签,折腾好了之后把笔记发出来,充当一篇教程,也算是一个备份。
实现这些功能,需要依赖两个工具,分别是 certbot 和 Cron计划任务 。certbot 用于证书的申请与续签,Cron计划任务用于定时执行续签任务。
第一步:安装 certbot
Debian系
apt update apt install certbot
CentOS系
apt update apt install certbot
第二步:申请证书
certbot certonly --webroot -w 【网站路径】 -d 【域名】 -m 【邮箱】 --agree-tos
这里的【网站路径】【域名】【邮箱】都替换成实际的信息
命令执行后会有个提示,大概就是要不要接受 Let's Encrypt 的一些新闻邮件之类的,这些邮件某种程度上其实算是广告,这里可以选择NO,没有影响。
如果没有报错,证书就申请完毕了,正常这个过程是很快的,输出的信息大概如图中这样,这里可以看到证书和密钥的文件位置。
第三步:修改nginx配置
这里就不详细展开了,反正就是修改你的web服务器的ssl配置,这里以nginx为例,主要是修改这两行,指定证书和密钥的位置
ssl_certificate /etc/letsencrypt/live/【域名】/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/【域名】/privkey.pem;
这里的【域名】要替换为实际的域名,同时这个路径也要看下是不是和之前申请证书结束后的输出的信息中的路径一致。
修改配置保存后,记得要重启或者重新加载一下nginx
#重启nginx server nginx restart #重新加载nginx nginx -s -reload
第四步:定时任务自动续签
使用cron定时任务实现证书的续签操作,使用 crontab -e 命令进入cron定时任务配置,添加一行配置。
0 6 * * 1 certbot renew --quiet && nginx -s -reload
这行配置的意思是说,每周一的6:00执行一次“certbot renew --quiet && nginx -s -reload”。其中“certbot renew”命令是更新证书,“nginx -s -reload”命令是重新加载nginx。
配置好cron定时任务后,记得使用 service cron reload 重新载入一下计划任务的配置。
更多关于cron定时任务的用法可以详见:Cron 计划任务的使用
附:certbot的一些使用命令
#查看已安装的证书 certbot certificates #续签证书 certbot renew #续签特定证书 certbot certonly --force-renewal -d 【域名】 #清理证书(按提示操作) certbot delete
文章评论