证书验证不一定要经过家庭 80 端口

证书服务需要确认申请者控制域名。HTTP 验证通常依靠访问指定网页路径;DNS 验证则通过在权威 DNS 添加指定记录证明控制权。本次家庭 80/443 不可用,采用 acme.sh 与 DNS 提供商 API 完成 DNS 验证。

acme.sh → DNS API → 临时验证记录
证书服务 → 查询 DNS → 签发证书
acme.sh → 群晖部署钩子 → DSM 使用新证书
配置路径示意

为 DNS 自动化准备专用权限

自动化程序需要 DNS API 权限。应为证书任务准备专用凭据,只覆盖实际需要管理的域名和记录操作。凭据保存在运行任务的 NAS 上,不放在公开网站、截图、命令历史示例或前端代码中。

这次配置了独立 DNS 子用户,并将凭据目录和账户配置文件收紧为仅任务运行身份可以访问。后续更换 DNS 服务商、撤销凭据或调整权限后,需要重新验证续期流程,不能只看旧证书尚未过期。

申请成功后,还需要部署到服务

证书文件生成不代表 DSM 已经使用它。需要通过群晖部署钩子,将新证书更新到对应证书条目,并确认 DSM、Web Station 等服务实际分配到了这个条目。申请和部署应作为同一个自动化链路验收。

本次使用 acme.sh 官方群晖部署方式,在本机运行期间临时创建部署管理员,完成后检查该临时账户已经删除。若运行被意外中断,也要检查是否留有临时账户。这个部署方式有具体运行环境要求,不能把本机方法直接移到远程容器上。

计划任务做“检查”,不是每天强制换证

群晖任务计划每天运行续期检查,acme.sh 根据证书状态决定是否需要续签。日常检查正常返回,并不表示当天一定签发了新证书。手工验证应区分正常跳过、续签失败和部署失败,避免把没有输出误认为成功。

怎样确认自动续期配置是完整的

  • 任务已启用,运行用户和可执行文件路径正确。
  • 手工执行检查成功,日志中没有 DNS 或部署错误。
  • 从外网严格校验访问域名的证书,确认名称和有效期。
  • 首次配置保存恢复资料,之后观察真实到期前的自动更新。

本次已经验证任务能执行和证书已经部署,但距离未来续签日期还有时间。因此这里的结论是“自动续期链路已配置并完成当前检查”,而不是声称未来续签已经发生。