Skip to content

v1.5.0

Choose a tag to compare

@JFeng2048 JFeng2048 released this 06 Nov 08:01
· 27 commits to release since this release

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 的续期调度,新配置构造失败时保留旧管理器继续续期