acme.sh 实现了 acme 协议,可以帮助你快速申请 SSL 证书,自动更新证书等操作。
这里使用 docker compose 来管理,docker-compose.yml 如下
# 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
::: tip
这里使用的解析商是 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/file/naomi.plus.key --fullchain-file /acme.sh/file/naomi.plus.crt
::: warning
默认生成的证书都放在宿主机当前目录下的文件夹 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
# run.sh
echo "naomi.plus证书管理 输入选择:"
echo "1:查看证书"
echo "2:安装证书"
echo "3:更新证书(强制)"
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 --install-cert -d naomi.plus --key-file /acme.sh/file/naomi.plus.key --fullchain-file /acme.sh/file/naomi.plus.crt
elif [ $input -eq 3 ]; then
docker compose exec acme.sh --renew -d naomi.plus --force
fi