Repository navigation
v1.5.0
Fast-Https 1.5.0
新增
- ACME 自动签发:不需要外部脚本即可申请并续期受信任证书,配套 CA 降级链(Let's Encrypt → ZeroSSL)、staging、自签兜底
- ACME 热重载:改 acme 段不再需要 stop + start,reload 按配置差异重建证书申请任务
- site 命令组:site init(对已存在的站点即原地更新,只覆盖显式传入的字段)、site list、site show、site remove
- acme 命令组:无子命令进入交互向导(以当前配置为默认值)、acme setup、acme show
- config path:输出运行期实际使用的配置文件与目录绝对路径
- version 命令;全部命令的帮助信息支持中英双语
- 随包安装 logrotate 配置(copytruncate),日志不再无限增长
- 打包:apt/yum/apk 仓库树生成脚本、deb/rpm/apk 容器实机验证脚本
- 文档:feature / develop / help 三套体系,新增 AGENT.md 与项目架构图
变更
- 配置解析去掉 viper,改为自带 JSONC 解析,原子写下沉到 infra
- 主配置拆为系统级配置 + conf.d 站点文件,config 包按职责拆分为五个文件
- 发行版包改为 FHS 分离布局(/etc、/usr/share、/var/log、/run)
- reload 发信号前先在本地校验配置,校验失败不动运行中的实例
- ACME 向导以当前配置为默认值,摘要延后到答完题再生成
修复
- 打包脚本 CRLF 行尾导致「能装不能卸、报 prerm ENOENT」
- 卸载后进程仍在跑、80/443 被占用:单元 cgroup 之外的残留进程按 pid 文件与 /proc 双路清理
- http-01 端口告警漏算 conf.d 里的站点
- ACME 配好却没有任何域名可申请时不给任何提示
- site 改写文件时吞掉未建模字段
- logrotate 配置 CRLF 行尾
移除
- install / uninstall / check / dev / completion 命令
- 顶层 shell/ 目录(vendored acme.sh)
破坏性变更
- 安装与卸载交给包管理器,不再提供对应子命令
- 包布局迁移到 /etc/fast-https;postinstall 会复制旧的 config/,不覆盖现场文件
ACME 证书挑战
- http-01:走 early-request 钩子,在路由匹配之前应答 /.well-known/acme-challenge/,不受站点根目录与 location 规则影响
- tls-alpn-01:只在启用时把 acme-tls/1 放进 NextProtos,未使用 ACME 的部署握手表保持不变;reload 开关该方式时重建对应 ssl 端口的 tls.Config
- 申请期间继续使用自签证书,首次握手不阻塞;申请失败按 fallback_self_signed 回落
- 只有 listen 含 ssl 的站点进入申请列表,非公网域名跳过并在日志与 acme show 中说明原因
- reload 只在差异处重建管理器:enabled / email / staging / storage / challenge / cas / renew_before_days 与域名集合;配置未变时不打断 certmagic 的续期调度,新配置构造失败时保留旧管理器继续续期