essay | tech | note | year-summary | about

返回上级菜单

acme.sh memo


日期:2026-04-06T14:38:23+08:00

首先用root账号(推荐)

只请求单个域名

acme.sh --issue --nginx -d aya.roxbook.click

Cloudflare的权限

Zone → DNS → Edit
Zone → Zone → Read

都需要!!

创建 / 删除 TXT 记录
_acme-challenge.example.com
查询 zone 信息(比如 zone_id)

使用Cloudflare API请求证书

配置文件(注意:只需要CF Token)

~/.acme.sh/account.conf
#CF_Account_ID='xxxx'
CF_Token ='xxx'

测试Cloudflare API

curl -s https://api.cloudflare.com/client/v4/accounts \
  -H "Authorization: Bearer $CF_Token" | jq

dns验证请求证书

acme.sh --issue -d '*.candy.com' --dns dns_cf

查看配置

~/.acme.sh/acme.sh --list
~/.acme.sh/acme.sh --info -d example.com

查看证书是否过期

openssl x509 -in /etc/ssl/example.crt -noout -dates

查看nginx用的哪个证书

nginx -T | grep ssl_certificate

证书类型

a.com.cer        ← 服务器证书(leaf cert)
a.com.key        ← 私钥(private key)
ca.cer           ← 中间证书(intermediate CA)
fullchain.cer    ← 完整链(cert + CA)

install cert

acme.sh --install-cert -d example.com \
--key-file       /etc/ssl/example.key \
--fullchain-file /etc/ssl/example.crt \
--reloadcmd     "systemctl reload nginx"

→ 只要你用过一次 --install-cert
→ 之后每次自动续期都会“覆盖写入”到 /etc/ssl/example.*

配置会记录到
~/.acme.sh/example.com.conf
cron会触发
~/.acme.sh/acme.sh --cron

不自动续期

acme.sh --deactivate -d example.com

remove acme.sh

# 1. 查看
acme.sh --list

# 2. 删除 acme.sh 管理
acme.sh --remove -d example.com --ecc

# 3. 删除文件
rm /etc/ssl/example.*

# 4. 修改 nginx
# 5. 检查
nginx -t

# 6. reload
systemctl reload nginx

参数值

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;