阿里云(原万网)域名,配合acme.sh 脚本申请免费的泛型SSL证书,开启HTTPS时代。
从互联网推荐使用https开始,一直用的云服务商的免费DV SSL证书,一年一次替换。2024年某月开始所有服务商的免费证书都是3个月一次有效期了,所以还是替换为acme.sh脚本免费ssl方案吧,省心。
首先是创建阿里云的子账号赋予子账号域名DNS相关操作权限,参考:阿里云单个域名API授权管理权限-左搜 (leftso.com)
完成创建后你会获得用户的 AccessKey ID和 AccessKey Secret,保存好后面脚本要用。
docker-compose.yml文件内容:
services:
acme.sh:
image: neilpang/acme.sh:3.0.7
container_name: acme.sh
hostname: acme.sh
restart: always
command: daemon
network_mode: host
environment:
- Ali_Key=对应你的AccessKey ID
- Ali_Secret=对应你的AccessKey Secret
volumes:
- ./out:/acme.sh
- /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
deploy:
resources:
limits:
memory: 256M
编辑启动脚本
deploy.sh
#!/bin/sh
work_path=$(dirname $0)
cd ${work_path}
work_path=$(pwd)
echo $work_path
docker-compose --compatibility build;docker-compose --compatibility down;docker-compose --compatibility up -d;docker image prune -f
执行脚本:
chmod 755 deploy.sh
sudo ./deploy.sh
install-key.sh
#!/bin/sh
#使用说明
# sudo ./install.sh *.example.com >> ./acme.log
domain_name=$1
echo $domain_name
sudo docker exec acme.sh --register-account -m domain@example.com --server zerossl
sudo docker exec acme.sh --issue --dns dns_ali -d $domain_name
sudo docker exec acme.sh --install-cert -d $domain_name \
# --key-file /acme.sh/issue/$domain_name.key.pem \
# --fullchain-file /acme.sh/issue/$domain_name.cert.pem
执行脚本:
chmod install-key.sh
sudo ./install-key.sh *.yourdomain.com
提示:上面脚本的域名替换成你自己的即可。
nginx配置主要用两个一个是
证书生成后就可以挂载到nginx容器或者直物理机配置指定到out目录下的具体证书了。
实现逻辑主要是通过Linux系统的定时任务,每隔一段时间执行一次脚本,比如我这里配置每天执行一次
sudo crontab -e
编辑定时任务
#ssl 每天晚上8点执行一次
00 20 * * * sudo /opt/docker/acme.sh/install-key.sh *.yourdomain.com>> /opt/docker/acme.sh/acme.log
#nginx 重载配置让证书生效
#docker模式重载,每天晚上9点执行一次
00 21 * * * docker exec -it nginx /bin/bash -c 'nginx -s reload'
# 主机模式重载
#00 21 * * * sudo nginx -s reload
至此证书部分签发教程完毕。
https://www.leftso.com/article/2407251206115699.html