ssl证书自动续期
一、前言
个人使用证书一般都是腾讯云或者阿里云得免费证书,但是免费证书不支持泛域名,并且一年后要重新申请再部署,如果域名较多的话,还是比较繁琐。因此,使用docker部署 acme.sh 的方式免费申请泛域名证书以及配置自动续签,保证https不会到期中断。本文的dns泛域名基于API方式,使用的是腾讯云,需要先申请腾讯云的DNS Token
二、腾讯云DNS Token申请
2.1 打开DNSPod 控制台
腾讯云DNSPod Token:API 密钥 - DNSPod-免费智能DNS解析服务商-电信_网通_教育网,智能DNS
注:一定要DNSPod Token
2.2 记住Token啊,这token忘了就只能重新创建了,以后看不到的。
三、docker搭建acme.sh
3.1 创建一个目录用于存放 acme.sh 的配置和证书文件夹
mkdir -p /data/acme
3.2 拉取 acme.sh 镜像
docker pull neilpang/acme.sh
3.3 启动 acme.sh 容器
docker run -d --name acme \
--restart=always \
--net host \
-v /data/acme:/acme.sh \ #需要改成自己的ssl文件位置
-e DP_Id="your-dp-id" \
-e DP_Key="your-dp-key" \
neilpang/acme.sh daemon
- *DP_Id
和 DP_Key
**:如果你使用的是腾讯云 DNS 服务,需要替换为你的腾讯云 DNS Token。
- 如果使用其他 DNS 服务(如 Cloudflare),需要替换为对应的环境变量(如 CF_Email
和 CF_Key
)。
四、拉取证书
在容器内部,使用以下命令申请证书(以腾讯云 DNS 为例):
#最新的需要先注册邮箱(邮箱随便写)
docker exec acme --register-account -m [email protected]
docker exec acme --register-account -m [email protected]
#生成泛域名证书
#单域名
docker exec acme --issue --dns dns_dp -d web.xx.com
单域名和泛域名
docker exec acme --issue --dns dns_dp -d xx.com -d *.xx.com
- `--dns dns_dp`:指定使用腾讯云 DNS API。
- 如果使用 Cloudflare,替换为 `--dns dns_cf`。
- `-d example.com -d *.example.com`:指定申请的域名,支持泛域名。
设置自动续签
为了实现证书的自动续签,需要在宿主机上设置定时任务:
crontab -e
添加以下内容以每天检查并续签证书:
0 0 1 */2 * docker exec acme --cron
- 这将每两个月运行1次,检查并续签即将到期的证书。
验证
- 访问你的域名,确保 HTTPS 已正常工作。
- 检查证书是否已正确安装到指定目录。
本文是原创文章,采用 CC BY-NC-SA 4.0 协议,完整转载请注明来自 QNAPClubCN
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果