acme.sh 免费申请泛域名证书和自动续约
2022年12月7日约 689 字大约 2 分钟
概述
acme.sh 实现了 acme 协议,可以帮助你快速申请 SSL 证书,自动更新证书等操作。
服务部署
这里使用 docker compose
来管理
# docker-compose.yml
services:
acme.sh:
image: neilpang/acme.sh
container_name: acme.sh
restart: always
command: daemon
volumes:
- ./data:/acme.sh
environment:
TZ: Asia/Shanghai
DP_Id: ******
DP_Key: ******
执行命令
# 更新acme.sh
docker compose pull
# 部署
docker compose up -d
提示
这里使用的解析商是 DNSPod,其他的解析商可以参考 https://github.com/acmesh-official/acme.sh/wiki/dnsapi
使用教程
证书生成
由于使用的是 DNS 验证的方式, 就是在域名上添加一条 TXT 解析记录, 以此来验证域名所有权。
acme.sh
便利的地方在于,可以使用域名解析商提供的 api 来自动添加 TXT 记录完成验证,并且在验证成功后自动删除记录。
执行命令,需要把 naomi.plus
替换成自己的域名,如果是其他解析商还要修改 dns_dp
为对应的参考值
docker compose exec acme.sh --issue --dns dns_dp -d naomi.plus -d *.naomi.plus
证书安装
执行命令,需要把 key-file
和 fullchain-file
的参数值替换成自己的。
docker compose exec acme.sh --install-cert -d naomi.plus --key-file /acme.sh/naomi.plus.key --fullchain-file /acme.sh/naomi.plus.crt
注意
默认生成的证书都放在宿主机当前目录下 data
中对应的域名文件夹, 请不要直接使用此目录下的文件,这里面的文件都是内部使用,而且目录结构可能会变化。
正确的使用方法是使用 --install-cert
参数, 并指定目标位置, 然后证书文件会被复制到相应的位置。
证书更新
acme.sh
申请的证书大概在 60-90 天之间,根据所使用的 CA 机构而定
每天凌晨会检查所有证书,如果证书需要更新则会自动更新证书。
强制手动更新可以执行命令,需要把 naomi.plus
替换成自己的域名。
docker compose exec acme.sh --renew -d naomi.plus --force
证书吊销
执行命令,需要把 naomi.plus
替换成自己的域名
docker compose exec acme.sh --revoke -d naomi.plus
docker compose exec acme.sh --remove -d naomi.plus
证书管理脚本
这里写了一个简单的脚本来配置证书,需要把 naomi.plus
替换成自己的域名
#!/bin/bash
echo "naomi.plus证书管理 输入选择:"
echo "1:查看证书"
echo "2:安装证书"
echo "3:更新证书"
echo "4:更新证书(强制)"
read input
if [ $input -eq 1 ]; then
docker compose exec acme.sh --info -d naomi.plus
elif [ $input -eq 2 ]; then
docker compose exec acme.sh mkdir -p /acme.sh/output
docker compose exec acme.sh --install-cert -d naomi.plus --key-file /acme.sh/output/naomi.plus.key --fullchain-file /acme.sh/output/naomi.plus.crt
elif [ $input -eq 3 ]; then
docker compose exec acme.sh --renew -d naomi.plus
elif [ $input -eq 4 ]; then
docker compose exec acme.sh --renew -d naomi.plus --force
fi