JianFeeeee
96e771d546
feat(cert): cert-agent 支持多证书组 + 多目标推送(全量接管)
用户要求「部署时接管全部证书」。原来只签一组(self-only)。
## 多证书组(按证书而非按域名组织)
CERT_GROUPS 每行 '<组名>:<域名1,域名2,...>',例如:
wild:*.jianfgit.xyz,jianfgit.xyz
introduce:introduce.homeagent.jianfgit.xyz
sdk:sdk.homeagent.jianfgit.xyz
每组独立落到 /app/data/certs/<组名>/,签发/续期/推送都以证书为单位
(同一张证书覆盖多个 SAN)。不配置时回落 gateway.yml 的 host(旧行为)。
## 多目标推送
CERT_PUSH_TARGETS 每行 '<host>:<远端cert>:<远端key>:<reload 命令>',
把证书推到其它机器(云主机 SafeLine 等)并触发其 reload。
认证走 CERT_PUSH_SSH_KEY / CERT_PUSH_SSH_PASS,都没有则免密。
## 途中修掉的 bug
① for 循环按**空格**分词,把含空格的 reload 命令("nginx -s reload")
连同整行目标拆成 host/"-s"/"reload" 三片,产生三条无意义推送。
改为 IFS=换行 + for,恢复 IFS。
② 凭据检查要求 CERT_DNS_API 与 CERT_DNS_CRED 同时存在,但插件名本来
就能按凭据键名推断 —— 只需 CERT_DNS_CRED。
③ 改造时误删 LE_RELOAD_CMD / le_reload 定义(set -u 下直接
"parameter not set" 中断)。已补回。
## 测试
沙箱 stub 覆盖:三组各自签发、通配符 SAN 正确、产出目录结构完整、
推送四步(mkdir→写cert→写key+chmod600→reload)全部执行。
真实签发此前已用 staging CA 验证通过(CN=dashy…, LE_ReloadCmd 已写入)。
2026-10-04 08:52:47 +08:00
..
2026-10-04 08:52:47 +08:00
2026-10-04 08:02:41 +08:00
2026-10-03 08:37:54 +08:00
2026-09-12 10:10:52 +08:00
2026-09-12 10:10:52 +08:00
2026-10-02 11:24:55 +08:00
2026-10-02 11:24:55 +08:00
2026-09-12 10:10:52 +08:00
2026-09-12 10:10:52 +08:00
2026-10-04 08:02:41 +08:00
2026-09-12 10:38:17 +08:00