亲测非常有效的 Let’s Encrypt 证书申请、部署安装与自动续期教程

开发技巧 2023年8月2日 1.39K

事情的经过是这样的,我自己网站的证书过期了,因此我需要申请新的证书,还和往常一样,我去我经常申请证书的网站申请,结果提示我证书申请名额,今年用完了。这是从来没有过的情况,因为这个证书网站我已经用了很多年了,我看了一下说明,原来是要割韭菜了,我本想着用了这么多年免费的,交个钱也行,一看会员费,我的乖乖,瞬间吓退了。身为程序员的我还没被这个困住,于是开始鼓捣 Let’s Encrypt。

获取免费证书

安装Certbot客户端

yum install certbot

获取证书

certbot certonly --webroot -w /var/www/www.viphper.com -d www.viphper.com

这个命令会为 www.viphper.com 域名生成一个证书,使用 –webroot 模式会在 /var/www/www.viphper.com 中创建 .well-known 文件夹,这个文件夹里面包含了一些验证文件,certbot 会通过访问 www.viphper.com/.well-known/acme-challenge 来验证你的域名是否绑定的这个服务器。

安装过程中会让输入一个有效的邮箱,不输入安装不成功的,之后一路输入Y,同意就可以了。

若您的服务没有根目录,例如一些微服务,这时候使用 –webroot 就走不通了。需要使用另外一种模式 –standalone , 这种模式不需要指定网站根目录,他会自动启用服务器的443端口,来验证域名的归属。如果有其他服务(例如nginx)占用了443端口,就必须先停止这些服务,在证书生成完毕后,再启用。

certbot certonly --standalone -d www.viphper.com

证书生成完毕后,会存放在此目录下 /etc/letsencrypt/live/

Nginx配置HTTPS

这个比较简单,就不多说了

server {
server_name www.viphper.com
listen 443;
ssl on;
ssl_certificate /etc/letsencrypt/live/www.viphper.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.viphper.com/privkey.pem;

location / {
proxy_pass http://127.0.0.1:3999;
proxy_http_version 1.1;
proxy_set_header X_FORWARDED_PROTO https;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
}

更新证书

证书生成后只有90天的有效期,到期后需要执行命令 certbot renew 自动更新系统内的证书。

certbot renew

自动更新证书

我们可以写一个shell脚本,然后让其自动更新,这样到期后就可以自动更新证书了,省时省力,还不怕证书失效,一举两得。

自动更新脚本

#!/bin/bash

# 证书文件(有多少个证书就写多少个数组变量并指向证书文件)
certificate[0]="/etc/letsencrypt/live/www.viphper.com.com/fullchain.pem"
#certificate[1]="/etc/letsencrypt/live/www.viphper.com.com/fullchain2.pem"

upssl=0;
sloop=${#certificate[@]}
let sloop-=1;
for k in $( seq 0 $sloop )
do
./ssl-cert-check -c ${certificate[$k]} -x 30 -n -q
if [ $? == 1 ]
then
upssl=1;
else
echo "INFO: CertiFicate Newest"
exit 0
fi
done

if [ $upssl == 1 ]; then
/usr/bin/certbot renew
if [ $? == 0 ]
then
echo "INFO: UPdate CertiFicate OK !"
exit 0
else
echo "Error: UPdate CertiFicate Fail"
exit 1
fi
fi

脚本里面用到了另外一个脚本 ssl-cert-check 这是一个开源的证书检测脚本,非常实用,我把地址放在了下方,有需要的可以下载

至此整个过程完成,以后就可以愉快的用免费证书啦。

定时脚本

15 2 * */3 * sh /var/www/sslcheck/update-ssl.sh

资源下载

我已将证书检测脚本 ssl-cert-check 和 自动更新脚本整理好,需要的小伙伴可以直接下载。

资源下载
PHP学习网
公众号回复“PHPER7023”获取下载!
请打开微信扫描右边的二维码回复关键字“PHPER7023”也可以微信直接搜索“PHP学习网”关注微信公众号获取。


关注微信公众号『PHP学习网

第一时间了解最新网络动态
关注博主不迷路~

PHP学习网:站内收集的部分资源来源于网络,若侵犯了您的合法权益,请联系我们删除!
分享到:
赞(0)

文章评论

您需要之后才可以评论
0点赞 0评论 收藏 QQ分享 微博分享

PHP学习网

PHP学习网