sydomain

思绪来的快,去的也快,偶尔在这里停留。

Let's Encrypt 证书申请、部署安装与自动续期

公司的网站证书已经到期,阿里的公告说明随着上游厂商的要求,免费一年的ssl不再有,只有三个月的免费,到期之后需要付费使用

这是从来没有过的情况,因为这个证书网站我已经用了很多年了,我看了一下说明,原来是要割韭菜了,我本想着用了这么多年免费的,交个钱也行,一看会员费,我的乖乖,瞬间吓退了。身为程序员的我还没被这个困住,于是开始鼓捣 Let's Encrypt。



获取免费证书

安装Certbot客户端

yum install certbot

获取证书

certbot certonly --webroot -w /www/wwwroot/test-lbb-mall.yufanggao.com -d test-lbb-mall.yufanggao.com

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


image.png

 

enter 'c' to cancel 这个后面需要填写邮箱(需要邮箱来注册,不然会报错)

之后一路输入Y,同意就可以了


image.png



Account registered.

Requesting a certificate for test-lbb-mall.yufanggao.com

Performing the following challenges:

http-01 challenge for test-lbb-mall.yufanggao.com

Using the webroot path /www/wwwroot/test-lbb-mall.yufanggao.com for all unmatched domains.

Waiting for verification...

Challenge failed for domain test-lbb-mall.yufanggao.com

http-01 challenge for test-lbb-mall.yufanggao.com

Cleaning up challenges

Some challenges have failed.

如果出现以上的报错,需要检查1.网站是否开启 2.网站目录和运行目录是否跟命令中的地址是一致的 命令中是test-lbb-mall.yufanggao.com 如果你的网站目录指向也必须是test-lbb-mall.yufanggao.com

指向正确之后 重新运行

certbot certonly --webroot -w /www/wwwroot/test-lbb-mall.yufanggao.com -d test-lbb-mall.yufanggao.com

这时候显示的结果就会为正常

image.png

这个时候会看到生成两个文件路径 一个是privkey.pem 跟 fullchain.pem这个就是ssl证书

跟着我们需要在网站配置中进行配置

  1. 你可以直接在nginx或者apa的网站配置中的ssl里面把以前ssl的路径替换成现在的路径

  2. 你也可以登录服务器到指定的路径,把证书下载下来部署到宝塔

Nginx配置HTTPS

server {
server_name test-lbb-mall.yufanggao.com
listen 443;
ssl on;
ssl_certificate /etc/letsencrypt/live/test-lbb-mall.yufanggao.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/test-lbb-mall.yufanggao.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


自动更新脚本

#!/bin/bash

# 证书文件(有多少个证书就写多少个数组变量并指向证书文件)
certificate[0]="/etc/letsencrypt/live/test-lbb-mall.yufanggao.com/fullchain.pem"
#certificate[1]="/etc/letsencrypt/live/test-lbb-mall.yufanggao.com/fullchain.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


Powered By sydomain

Copyright Your WebSite.Some Rights Reserved.