Smail/docs/反代跳转验收整改记录.md
smail 9c450f1734
Some checks are pending
Security Checks / security (push) Waiting to run
运行时配置清理阶段检查点
2026-10-05 01:31:34 +08:00

38 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 反代跳转验收整改记录
## 问题与修复
2026 年 9 月 18 日 02:56 的远程核查发现,`test/deployment/verify_nginx_tls.py` 仅断言公网 80 跳转地址,对于应用 8001 只要求返回 308。因此线上仍跳转至内部 8002 时,整体输出仍为 `passed`。这属于验收覆盖缺口,不代表线上问题已经解决。
修改前提交并推送基线 `4c9490c`。本轮收紧验收:80 和 8001 均必须返回 308,且完整地址为 `https://mail.example.com/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.example.com:8002/acceptance?x=1`,严格检查正确报告 `public_redirect` 失败,整体不再误报通过。
这里只验证 TLS/STARTTLS,没有通过 587 发信,没有发送业务邮件。线上证书指纹仍为 `608fb55e3b8add3426a63f672debd86a58389a1a78d0961b9603b2e1abecae43`。收尾状态记录在 `services.txt`。
## 后续
- [ ] 按《完整候选反代隔离验收记录》对候选建立可回退备份并正式部署,通过正常配置入口设置公开端口,再运行严格检查。
- [!] 本次修复的是验收误判,线上跳转整改尚未生效;更不能据此宣称证书续期、浏览器业务或整体发布已经通过。