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