泛域名 HTTPS 一键部署:工具包使用说明
手动敲 acme.sh 命令、记路径、写 Nginx,步骤一多就容易漏。下面介绍一种打包好的工具目录:上传到服务器、改一个配置文件、执行一条命令,证书和 Nginx 模板一起搞定。
一、这套工具解决什么问题?
自己部署 HTTPS 时,常见问题包括:
命令参数记不住(DNS 插件、泛域名、安装路径各不一样)
证书文件路径不统一,续期后 Nginx 还要跟着改
每个子域都想单独申请证书,其实泛域名一张就够
首次申请和续期各写一套脚本,维护麻烦
设计思路可以概括成五句话:
整个文件夹拷走就能用 — 不依赖你服务器上其它目录结构
证书路径固定 — 总在工具目录下的
cert/你的域名/,续期只换文件不改 Nginx默认签泛域名 — 每个根域自动申请
域名+*.域名,子域不用重复签一个配置文件 — 邮箱、域名列表、DNS 商密钥写在一起
续期交给 acme.sh — 不用单独写续期脚本,定时任务一行命令即可
二、工具目录里有什么?
解压或上传后,大致是这样(名称可能随版本略有不同):
ssl/ ← 整个文件夹放到服务器,例如 /opt/ssl
├── acme.env.example ← 配置模板,复制后改名使用
├── acme.env ← 你的真实配置(含密钥,勿泄露)
├── deploy.sh ← 主程序:申请证书 + 生成 Nginx 配置
├── reload-nginx.sh ← 续期成功后重载 Nginx
├── cert/ ← 证书输出目录(自动生成)
│ └── example.com/
│ ├── fullchain.cer
│ └── example.com.key
├── nginx/ ← 自动生成的 Nginx 配置(自动生成)
│ └── example.com.conf
└── logs/ ← 续期日志(可选)
└── acme.log
三、使用步骤(四步)
第 1 步:上传到服务器
把整个 ssl 文件夹传到服务器,例如放在 /opt/ssl。用 scp、FTP、面板上传都可以。
第 2 步:填写配置
cd /opt/ssl
cp acme.env.example acme.env
vim acme.env # 或用其它编辑器
至少要改这三项:
ACME_EMAIL="你的邮箱@example.com"
DOMAINS="example.com"
DNS_PROVIDER="dns_ali"
DOMAINS:你的根域名;多个域用空格分开,如
"example.com another.com"DNS_PROVIDER:域名 DNS 在哪家的插件名,常见有
dns_ali(阿里云)、dns_cf(Cloudflare)、dns_dp(DNSPod)等
再按你选的 DNS 商,填写对应的 AccessKey(模板文件里有注释说明填哪几项)。
第 3 步:执行主程序
chmod +x deploy.sh reload-nginx.sh
./deploy.sh
程序会自动:
检查并安装 acme.sh(若尚未安装)
对每个域名签发泛域名证书,写入
cert/域名/在
nginx/下生成对应的 Nginx 配置文件(含 80 跳转 + 443 SSL)在终端打印一份相同内容,方便核对
若证书已存在、需要强制重签:
./deploy.sh force
注意:请用
./deploy.sh,不要用. deploy.sh(前面加点会变成另一种执行方式,容易搞乱环境)。
第 4 步:启用 Nginx
cp nginx/*.conf /etc/nginx/conf.d/
nginx -t && nginx -s reload
打开生成的 .conf 文件,把里面的 proxy_pass(反代地址)改成你实际的后端端口或服务,再 reload 一次。
四、配置自动续期
Let's Encrypt 证书约 90 天有效。首次运行 ./deploy.sh 时,程序已向 acme.sh 注册了「续期成功后自动 reload Nginx」。
你只需在服务器上加定时任务:
crontab -e
写入(路径按你实际存放目录修改):
0 3 * * * acme.sh --cron >> /opt/ssl/logs/acme.log 2>&1
每天凌晨检查是否需要续期,不用单独写续期脚本。
五、子域名还要再申请证书吗?
不用。 泛域名 *.example.com 已经覆盖 www.example.com、admin.example.com、api.example.com 等。
若某个子域要单独配 Nginx 站点:
复制一份
nginx/example.com.conf或自己写server块只改
server_name为子域证书路径仍指向
cert/example.com/下那两个文件
六、多域名、多 DNS 商说明
多个根域:在
DOMAINS里空格分隔即可,每个域各签一张泛域名证、各生成一个 Nginx 配置文件。多个 DNS 商:一份配置文件同一时间只支持一种
DNS_PROVIDER;域名必须都在该 DNS 账号(或该 API 能管理)下。若a.com在阿里云、b.com在 Cloudflare,请分两次配置、分两次运行。
七、常见问题
Q:网页仍显示不安全?
检查 Nginx 里 ssl_certificate 是否指向 cert/域名/ 下的文件,是否执行过 nginx -t && nginx -s reload。
Q:报错 Unknown parameter: --dns-sleep?
这是 acme.sh 参数名问题,正确是 --dnssleep;工具包内已处理,若你自行改命令请注意。
Q:续期后网站挂了?
看 /opt/ssl/logs/acme.log;常见是 reload 失败或 Nginx 配置语法错误。
Q:DNS 验证一直超时?
检查 API 密钥是否有「添加 TXT 记录」权限;国内 DNS 一般等 20 秒,可在配置里加大等待时间。
Q:密钥存在哪?安全吗?
在 acme.env 和 cert/*.key 里,只应留在服务器本机,不要发给他人、不要上传到公开网盘。
Q:和手动敲 acme.sh 命令有什么区别?
流程完全一样,工具包只是把标准步骤自动化,并固定路径、生成 Nginx 模板。想深入理解原理,建议先学习 acme.sh 手动签发流程。
八、适合谁用?
个人站、小团队 API、博客、管理后台等需要 HTTPS + 泛域名 的场景
域名 DNS 在阿里云、Cloudflare、DNSPod 等 acme.sh 支持的厂商
希望 少记命令、少踩坑、续期省心 的用户
九、小结
你要做的 | 命令/操作 |
|---|---|
首次配置 | 复制 |
上线 HTTPS |
|
自动续期 | crontab 添加 |
强制重签 |
|
证书路径固定、续期不改 Nginx——记住这两点,后面会省很多心。
工具包随版本更新,若界面或文件名与本文略有出入,以你拿到的压缩包内说明为准。
工具代码:https://gitee.com/reloads/ssl
