0%

ACME证书自动申请

由于之前的SSL证书自动更新已经过期,重新了解了ACME的使用,因此记录如下。

ACME安装步骤

卸载

如果已经安装,最好先卸载干净

1
2
acme.sh --uninstall
rm -rf ~/.acme.sh

安装

1
2
3
4
5
6
7
8
9
10
# 国内网络无法直连
wget https://gitee.com/neilpang/acme.sh/repository/archive/master.zip
unzip master.zip
cd acme.sh-master
# 安装,邮箱可接受相关邮件
./acme.sh --install -m x7430657@163.com
# 刷新
source ~/.bashrc
# 检查安装是否成功
acme.sh --version

使用

添加域名所有者账号/子账号信息

阿里云

1
2
3
# 该账号需有DNS的管理权限
export Ali_Key="demo"
export Ali_Secret="demo"

注册和申请证书

可以申请不同服务商的证书,推荐letsencrypt

letsencrypt证书

1
2
3
4
5
6
7
8
# 注册
acme.sh --register-account -m x7430657@163.com --server letsencrypt
# 申请
acme.sh --issue --server letsencrypt \
--dns dns_ali \
-d "*.seanblog.cn" \
-d "seanblog.cn" \
--keylength ec-256

litessl证书

1
2
3
4
5
6
7
8
9
10
11
12
# 注册,eab相关信息,可在FreeSSL(截止2026年1月26日可获取)或其他相关网站中获取
acme.sh --register-account --server https://acme.litessl.com/acme/v2/directory \
--eab-kid test \
--eab-hmac-key test \
--insecure
# 申请
acme.sh --issue --server https://acme.litessl.com/acme/v2/directory \
--dns dns_ali \
-d "*.seanblog.cn" \
-d "seanblog.cn" \
--keylength ec-256 \
--insecure

安装证书

1
2
3
4
5
6
7
# 创建文件夹
mkdir -p /usr/local/nginx/cert
# 安装执行后,后续ACME自动续签会同步执行安装
acme.sh --install-cert -d "*.seanblog.cn" \
--key-file /usr/local/nginx/cert/jseanblog.cn.key \
--fullchain-file /usr/local/nginx/cert/seanblog.cn.cer \
--reloadcmd "/usr/local/nginx/sbin/nginx -s reload"

关于ACME的目录

目录:/root/.acme.sh/,申请的证书也在该目录下(不建议从该目录中直接提取,请使用安装命令进行安装,这样未来快过期申请时,acme.sh会自动安装且重启相关服务)

定时刷新:见crontab -e

日志

ACME日志需要修改文件/root/.acme.sh/account.conf

1
2
# 去掉对应注释,或更改日志所在位置
LOG_FILE="/root/.acme.sh/acme.sh.log"

Cron执行日志,需修改ACME定时执行命令:

1
2
3
4
# 修改定制执行任务
crontab -e
# 修改ACME执行命令中的/dev/null,指定日志文件
29 2 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /root/.acme.sh/acme_cron.log 2>&1
您的支持是对我最大的动力 (●'◡'●)