https自动更新

事情是这样的

你是不是也有一年又一年的新项目接入,对于要求https协议的网站,每3个月的TSL证书更新需求都要自己手动去申请

参考资料

acme.sh安装

使用源码安装:

1
2
3
4
5
6
7
8
9
10
11
12
git clone --depth 1 https://github.com/acmesh-official/acme.sh.git
# 国内访问 github 便秘 就用gitee
git clone --depth 1 https://gitee.com/neilpang/acme.sh.git
cd acme.sh
# 请注意替换 username@example.com 为你自己的邮箱,避免无法收到上游证书的邮件通知。
./acme.sh --install -m username@example.com
# 安装完成后重新加载 Bash
source ~/.bashrc
#检查是否生效
acme.sh -v
# 更改默认 CA 颁发者为 Let’s Encrypt
acme.sh --set-default-ca --server letsencrypt

配置 DNS API

需要先配置DNS

登陆阿里云控制台 - 访问控制 RAM - 身份管理-用户

创建用户-勾选 使用永久 AccessKey 访问

通过以上配置后拿到key和secret

acme.sh 程序目录为隐藏目录.acme.sh存放在当前用户家目录下.执行以下命令进入目录,并编辑account.conf,根据上文获取的 API 格式,复制粘贴到文件中保存.

1
2
3
4
5
6
cd
cd .acme.sh
vi account.conf

export Ali_Key="...."
export Ali_Secret="....."

自动更新脚本拿走

详情见第4篇资料,此处用的阿里云

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
# 备份旧证书
/bin/cp -rf /usr/local/nginx/conf/cert/*.* /usr/local/nginx/conf/cert/sslbak
# 使用 acme.sh 生成新证书,此处使用了绝对路径来运行acme脚本,请按照实际情况操作。/home/ecs-user是我当前用户的家目录。
/root/.acme.sh/acme.sh --issue --dns dns_ali -d e1.test.com --fullchain-file /home/setup/sslkey/e1.test.com.pem --key-file /home/setup/sslkey/e1.test.com.key --force
/root/.acme.sh/acme.sh --issue --dns dns_ali -d e2.test.com --fullchain-file /home/setup/sslkey/e2.test.com.pem --key-file /home/setup/sslkey/e2.test.com.key --force

# 将新证书拷贝到 Nginx 证书目录
/bin/cp -rf /home/setup/sslkey/* /usr/local/nginx/conf/cert

# 重启 Nginx 以应用新证书(请根据实际情况选择适当的重启方式)
/usr/sbin/nginx -s reload

完结