Smail/docs/反代跳转验收整改记录.md
smail a725aac6a7
Some checks are pending
Security Checks / security (push) Waiting to run
补齐管理员恢复验收证据并严格校验反代跳转
2026-09-18 03:03:46 +08:00

2.9 KiB
Raw Blame History

反代跳转验收整改记录

问题与修复

2026 年 9 月 18 日 02:56 的远程核查发现,test/deployment/verify_nginx_tls.py 仅断言公网 80 跳转地址,对于应用 8001 只要求返回 308。因此线上仍跳转至内部 8002 时,整体输出仍为 passed。这属于验收覆盖缺口,不代表线上问题已经解决。

修改前提交并推送基线 4c9490c。本轮收紧验收:80 和 8001 均必须返回 308,且完整地址为 https://mail.solit.cn/acceptance?x=1,保留路径及查询参数;端口泄露、错误协议或域名、缺少 Location、错误状态均记录失败。失败明细写入 failures,整体 status=failed、进程退出码 1;仍完成其他传输检查以保留诊断证据。

本轮只修改验收工具,没有修改线上反代配置、应用或数据库,没有启动本机测试,没有暂停任何业务服务。

远程隔离回归

目录 /var/tmp/smail-review-redirect-acceptance-20260918。

  • [✓] 新增 test_nginx_redirect_acceptance.py 六项用例通过,覆盖双端口正确跳转、内部端口泄露、公网入口错误、缺少 Location、错误状态、路径及查询参数丢失和错误域名。
  • [✓] 单元 smail-redirect-tests-20260918-0300.service 成功结束,运行 478 毫秒,峰值 16.7 MiB、交换空间为零;持久日志为 tests.txt。
  • [✓] 使用独立网络、只读系统、私有临时目录、64 MiB 内存硬上限,线上应用、管理 socket、Nginx 配置和正式 ACME 状态不可访问。模拟测试以 root 运行,不宣称非特权测试或真实部署验收。

本机与远程 SHA-256 一致:

  • 检查器:8d22762796747d52d63000e15a39a40cfb99e50b75cc1e833bf014ccc2fe6afd。
  • 回归文件:4553ede3be564f3b2b9f59e743dd99bc0dc7acd3ff7e33acbfdafec814fec64b。

线上负向验证

03:00:10(Asia/Shanghai)执行修正版只读检查,输出保留在 live-result.json,进程退出码为 1。

  • [✓] 443、8002、465、993、995、25 和 587 的系统信任及证书一致性检查通过;25/587 明文阶段不暴露 AUTH。
  • [✓] 公网 80 返回正确的公开 HTTPS 地址,未知 Host/SNI 拒绝,页面及探活接口可用。
  • [!] 8001 实际返回 https://mail.solit.cn:8002/acceptance?x=1,严格检查正确报告 public_redirect 失败,整体不再误报通过。

这里只验证 TLS/STARTTLS,没有通过 587 发信,没有发送业务邮件。线上证书指纹仍为 608fb55e3b8add3426a63f672debd86a58389a1a78d0961b9603b2e1abecae43。收尾状态记录在 services.txt。

后续

  • 按《完整候选反代隔离验收记录》对候选建立可回退备份并正式部署,通过正常配置入口设置公开端口,再运行严格检查。
  • [!] 本次修复的是验收误判,线上跳转整改尚未生效;更不能据此宣称证书续期、浏览器业务或整体发布已经通过。