使用 acme.sh 自动申请并部署证书到雷池 WAF
一、背景介绍
在自建服务过程中,我们经常需要为自己的域名配置 HTTPS 证书。虽然雷池(Safeline)WAF 提供了 Web 界面上传证书的方式,但手动更新过于繁琐。本文记录我如何通过 acme.sh 脚本,结合 DNS 验证和 Docker 热更新,实现证书自动申请和部署。
二、环境说明
系统版本:DSM 7.2.1-69057 Update 6
雷池环境:docker部署
三、具体步骤
- 安装acme.sh
git clone https://github.com/acmesh-official/acme.sh.git
cd acme.sh
./acme.sh --install -m 你的邮箱@example.com --force
-
在目录下创建sh文件内容如下:
#!/bin/bash # ============ 配置部分 ============ # 你的 Cloudflare API Token export CF_Token="替换为自己的token" # 主域名 DOMAIN="替换为自己的域名" # 证书安装路径(雷池容器对应的宿主机路径) CERT_PATH="/volume1/docker/leichi-WAF/resources/nginx/certs" #默认的证书路径 CERT_FILE="${CERT_PATH}/cert_1.crt" KEY_FILE="${CERT_PATH}/cert_1.key" # 日志路径(可选) LOG_FILE="/volume1/docker/acme-deploy.log" # ============ 证书申请 ============ /root/.acme.sh/acme.sh --issue --dns dns_cf \ -d "$DOMAIN" \ -d "*.$DOMAIN" \ --keylength ec-256 \ --server letsencrypt >> "$LOG_FILE" 2>&1 # ============ 安装部署证书 ============ /root/.acme.sh/acme.sh --install-cert -d "$DOMAIN" \ --ecc \ --cert-file "$CERT_FILE" \ --key-file "$KEY_FILE" \ --reloadcmd "docker exec safeline-tengine nginx -s reload" >> "$LOG_FILE" 2>&1 # ============ 记录成功信息 ============ echo "[$(date '+%F %T')] ✅ 证书申请 & 部署完成,已尝试重载 nginx" >> "$LOG_FILE" -
运行sh文件之后会看到证书路径的会更新就代表成功

-
设置自动续期任务
-
创建一个up-acme.sh文件内容如下:
/root/.acme.sh/acme.sh --cron --home /root/.acme.sh > /dev/null && \ /root/.acme.sh/acme.sh --install-cert -d 替换为实际主域名 --ecc \ #替换实际主域名 --cert-file /volume1/docker/leichi-WAF/resources/nginx/certs/cert_1.crt \ #替换为实际证书路径 --key-file /volume1/docker/leichi-WAF/resources/nginx/certs/cert_1.key \ #替换为实际证书路径 --reloadcmd "docker exec safeline-tengine nginx -s reload"
-
打开 群晖后台 依次点击 【主菜单】-【控制面板】-【任务计划】
-

-

- 时间自定义
-

-

-
在自定义脚本输入以下代码
-
# sh 实际up-acme.sh文件所在位置 sh /volume1/docker/leichi-WAF/up-acme.sh
-
-
-
-
评论区