更新不同证书失败恢复双机实证及剩余上线门禁
This commit is contained in:
parent
2ab8ad58cd
commit
7c5ee12fbe
@ -1,5 +1,70 @@
|
||||
# Linux 生产流程测试记录
|
||||
|
||||
## 最新执行记录(2026年10月1日21:43,不同证书重载失败回滚修复)
|
||||
|
||||
### 范围、需求及基线
|
||||
|
||||
本轮从北京时间 21:17 开始,延续保留数据的 Linux 负向回归,不是最终清库首次流程。只操作测试域名 scert-multi-20260930.apmmk.cn 的正式部署功能及已关联服务器的重载配置,不修改管理域名证书,不操作第一台既有邮件配置;全部人工 SSH 和 SCP 使用密码及严格主机身份校验。未新增辅助验收脚本,未额外备份远端业务数据,未手工改任务状态或删锁。
|
||||
|
||||
- 双机旧 cert.pem、fullchain.pem 的 SHA-256:`ecf815ca6ba91abb43985663f7ff2df4ee7987362131e068b6ff32e4657f90bc`。
|
||||
- 旧叶证书 SHA-256 指纹:`43063C0726D34362B254CE28B66D7EB637E00B165F68EC0D07FCED0DF2C64AD2`。
|
||||
- 旧证书公钥与旧私钥导出的公钥,DER SHA-256 均为 `3cca90893f3edabd12398f85487452dbe45f913041b9c7ef505bf597b7897b84`。不输出私钥。
|
||||
- 双机本机带 SNI 的严格 HTTPS 为 200。正式历史列表仅有一个可用版本,因此本轮只通过正式签发接口申请一次新证书;后续测试复用新证书,不重复签发。
|
||||
- 通过正式服务器更新接口临时配置:执行 Nginx 重载,输出测试站点实际叶证书指纹,短暂等待,最后核对文件仍是旧证书摘要。新证书下此命令返回失败,旧证书恢复后返回成功;配置校验始终为 nginx -t。初次请求包含只读字段被接口以 400 拒绝,改为正式允许字段后双机均保存成功,没有绕过接口校验。
|
||||
|
||||
### 旧候选实机缺口
|
||||
|
||||
源码 9c58c5b 的正式签发任务 `829076c2-2db0-4204-a151-6acc76bab1dc` 于 UTC 13:23:45 创建,UTC 13:24:26 失败。证书申请成功,但双机重载失败,HTTP 502 为产品返回的失败响应,不是任务成功。
|
||||
|
||||
- 新版本:`20261001-V1.0`;新叶证书指纹 `9D866F8360FB65365A766BF53DC087E91254FC3CC6137F9DEF25E39FA253C742`,与旧证书不同。
|
||||
- 两条事务:`20261001-132353.561367231-d6004095e899`、`20261001-132409.768963185-15f9d00ae683`。均为 reload_attempted/recovery_required,恢复证据存在。
|
||||
- 失败码为 runtime_unconfirmed。UTC 13:25:09 双机磁盘文件摘要已恢复旧值,但实际 TLS 仍提供新指纹,证明文件回滚不足以恢复运行状态。
|
||||
- 为先恢复现场,使用已有服务启动恢复机制;UTC 13:27:17 两条事务均自动成为 rolled_back,两台实际 TLS 均恢复旧指纹。未手工改库、未手工删锁。
|
||||
- 随后通过正式接口恢复两台标准重载配置。原签发任务保留失败,不重试签发来生成多余证书。
|
||||
|
||||
### 修复及正式候选
|
||||
|
||||
- 修改前检查点 `7a08dfe`;修复 `2e6d992b985556f334fa237dd8b69cd44ec23c14`,均已推送。
|
||||
- 修复使带站点恢复校验的部署流程在重载返回错误或非零退出码时,仍将失败目标交给完整恢复事务:回滚文件、校验旧配置、重新重载、验证实际旧指纹后释放锁。没有恢复证明或恢复失败时继续保留锁;不带恢复校验的旧接口继续失败关闭。
|
||||
- 新增仓库正式回归文件 reload_recovery_test.go;五个子场景先在旧实现失败,再在修复后通过,包含多目标部分失败、连接返回错误、缺失恢复校验、指纹校验失败及恢复重载失败保护。
|
||||
- 后端 go test ./...、go vet ./...、go build ./... 通过;前端 241 项通过;正式前端构建、发布路径检查通过。外部条件跳过项不计为真实实库验收。
|
||||
- 正式包:`build/release-20261001-reload-recovery/Scert-20261001-V0.1.0-linux-amd64.tar.gz`,source_dirty=false。
|
||||
- 归档 SHA-256:`1619525d2f5a595aa8c263ec174c2890ff37914a44b4a9bd9bdf3467b23f61b3`。
|
||||
- 主程序 SHA-256:`973a41d763378d03bd757b7f75ec0c8fa80997fee916879630e56f1348e34da2`。两台安装后与本地产物一致。
|
||||
- 两台均检查归档和包内 SHA256SUMS,停止 Scert 相关服务后运行正式 install-linux.sh,再启动主服务和目录 socket。Nginx 未停止,第一台邮件服务保持运行;不宣称升级零停机。
|
||||
- 正式安装器自行保留发布文件:第二台 `/scert/.install-C3bYY04K`,第一台 `/scert/.install-sUT2BDU5`,没有额外制作数据备份。
|
||||
- 浏览器关闭旧页面并创建新的 Scert 专属隔离上下文,重新通过正式登录页面登录;不复用旧缓存及登录状态。
|
||||
|
||||
### 修复后的双机失败恢复
|
||||
|
||||
部署任务:`87166c03-5501-482f-a4f6-db83ffc87a05`,UTC 13:37:04 创建,首次尝试 `159f5a56-fc5f-49fa-8e9b-4dc4ed6a1eb3` 于 UTC 13:38:04 结束。通过正式部署接口复用新证书,保留与复现时相同的受控重载失败条件。
|
||||
|
||||
- UTC 13:37:24 在第二台、13:37:35 在第一台实际 TLS 观测到新指纹;第一台此时严格 HTTPS 仍为 200,确认不是同证书重部署。
|
||||
- 产品返回 HTTP 502、任务 failed,双机 failure_code=recovery_restored、recovery_status=success。部署失败与恢复成功分别记录,没有误报为部署成功。
|
||||
- 两事务 `20261001-133705.924556306-b00c8eb271c9`、`20261001-133721.129018393-efcbf42821fa` 自动成为 rolled_back。
|
||||
- 双机旧文件摘要、公钥对应摘要均恢复基线;UTC 13:38:21 双机实际 TLS 指纹恢复旧值。双机严格 HTTPS 均 200,Nginx 配置检查通过。
|
||||
- 对目标目录不限制文件类型地检查锁、临时文件和事务旧文件,无本次残留。恢复及后续重试期间,第二台 Scert MainPID 保持 173940,NRestarts=0,未依靠再次重启触发恢复。
|
||||
|
||||
### 正常配置恢复、原任务重试及终态
|
||||
|
||||
- 两台正式服务器配置均恢复 validation_command=[nginx,-t]、reload_command=[nginx,-s,reload],PUT 为 200,后续 GET 核对一致。
|
||||
- 正式重试原任务,UTC 13:40:13 返回 200,双机 total=2、success=2、failed=0、verification_status=success。
|
||||
- 第二次尝试 `c5078566-0987-49fd-956d-2c270f8288ca` 为 success;第一次 failed 仍保留,父任务仍是同一个任务。
|
||||
- 第二次事务 `20261001-133952.659511951-b8fb25286b52`、`20261001-133955.482383445-3bcd46a09e98` 均 committed;首次两事务仍 rolled_back。
|
||||
- 双机新 cert.pem、fullchain.pem 的 SHA-256:`7e8b56227b345ed9b66659e428f9bd4421604f11253ab88d65b3ed61737f35cf`;证书和私钥对应的公钥摘要均为 `f71a91f1aaa8c7da7dd945b432520f3a6265d47586c432594091699ccaf0a7de`。
|
||||
- 双机实际 TLS 均为新指纹,双机本机严格 HTTPS 200,第一台访问第二台公网测试域名严格 HTTPS 200。第一台本机成功不代替其已有公网平台拦截问题的验收。
|
||||
- 成功后再次正式重试返回 409;活动任务为零,无本次锁、临时文件或事务旧文件残留。
|
||||
- 双机 8443、3306、33060 均仅监听 127.0.0.1;双方互探这些公网端口,六次退出码均为 124。第二台管理入口 ready,Nginx proxy_ssl_verify on;第一台邮件服务 active。
|
||||
|
||||
### 状态与剩余门禁
|
||||
|
||||
- [✓] 本次不同证书重载失败后的自动运行恢复、原任务重试及重复请求保护复审通过。
|
||||
- [x] 修复代码、正式候选及双机安装完成,等待整体发布复审。
|
||||
- [~] 其他负向窗口、不同证书进程崩溃、多目标部分失败等仍需继续核对;不能把本次子场景扩大为 P0-10 全部通过。
|
||||
- [!] 两条历史无可信恢复证据事务保持原状态:20260930-231310.231207974-5bf9d1e37542、20260930-231313.144123222-ce71b1dfe14e。
|
||||
- [!] Smail 系统通知参数与真实发信闭环、第一台测试域名公网限制、MySQL 5.7 与完整三库 Web 等剩余门禁及最终清库首次部署未完成。已完成的 MySQL 8.0 迁移、独立正式 CLI 备份恢复和 Linux 原生构建证据不作废;Windows 不在本轮范围。
|
||||
- [!] 整体生产部署验收未放行。
|
||||
|
||||
## 最新执行记录(2026年10月1日21:12,双机密码重置接口安全收敛)
|
||||
|
||||
本节覆盖下方同项待部署状态;本轮是保留业务数据的安全升级回归,不是清库首次部署验收。没有新增辅助验收脚本,未操作历史恢复锁和事务,也未关闭 TLS 或 SSH 主机身份校验。
|
||||
|
||||
@ -1,5 +1,20 @@
|
||||
# Scert 整改任务执行清单
|
||||
|
||||
## 当前有效任务看板(2026年10月1日21:43,运行证书自动恢复)
|
||||
|
||||
需求确认:不允许仅回滚磁盘文件就认定服务恢复;只有重新校验旧配置、重载并核验实际 HTTPS 证书后,才能释放本次锁和标记恢复成功。使用真实不同的新旧证书,保留失败历史;不开放内部公网端口,不关闭 TLS 或 SSH 主机身份校验。
|
||||
|
||||
- [✓] T5-6-1 基线:核对双机旧证书文件摘要、实际 TLS 指纹、证书与私钥对应关系,无活动任务后通过正式接口申请一次新证书。
|
||||
- [✓] T5-6-2 缺口复现:旧候选出现文件已回滚、运行证书仍为新证书;任务如实失败并保留锁。通过已有启动恢复机制核验并恢复旧证书,未手工改库或删锁。
|
||||
- [x] T5-6-3 开发:提交 `2e6d992` 将重载失败的目标纳入待恢复事务;新增退出码失败、连接返回错误及三类恢复证据不足回归,五个场景通过,后端全量与前端 241 项通过。
|
||||
- [x] T5-5 正式候选:干净源码构建 Linux amd64 包,两台通过密码 SSH、完整性检查及正式安装器升级;本轮保留数据,不冒充清库首次测试。
|
||||
- [✓] T5-6-4 双机不同证书失败恢复:两台均观测到新证书生效,随后自动回到旧证书;恢复校验成功,事务已回滚,文件摘要及实际 TLS 一致,无本次残锁,主进程未重启。
|
||||
- [✓] T5-6-5 原任务重试:任务 `87166c03-5501-482f-a4f6-db83ffc87a05` 的首次失败记录保留,第二次尝试双机成功;成功后重试返回 409。两台重载命令均已恢复为标准 Nginx 命令。
|
||||
- [✓] T5-5 端口:双机内部服务只监听回环;六次跨机公网内部端口探测均超时,管理入口保持严格 TLS 反代,第一台邮件服务正常。
|
||||
- [~] T5-6 其余负向窗口、不同证书进程崩溃、多目标部分失败及 T5-8 历史证据缺失事务继续推进,本项局部通过不等于 P0-10 全部完成。
|
||||
- [!] 系统发信闭环、第一台测试域名公网限制、MySQL 5.7 与完整三库 Web 等剩余门禁以及最终清库首次流程未完成。此前已完成的数据库迁移、独立正式 CLI 备份恢复和 Linux 原生构建证据继续有效;Windows 不在本轮范围。
|
||||
- [!] 总体 Linux 生产验收未放行。
|
||||
|
||||
## 当前有效任务看板(2026年10月1日21:12,双机安全接口候选)
|
||||
|
||||
需求确认:公开页面和接口均不得暴露可执行维护命令或入口名称;只推进 Linux。本节覆盖下方本项待构建、待部署的历史记录,不扩大为整个密码重置流程验收通过。
|
||||
|
||||
@ -1,5 +1,18 @@
|
||||
# Scert 整改、合并与优化清单
|
||||
|
||||
## 当前有效进度(2026年10月1日21:43,不同证书重载失败自动恢复)
|
||||
|
||||
本节覆盖下方同项待验证状态;本轮是保留数据的 Linux 升级及负向回归,不是最终清库首次验收。需求沿用原清单,不修改历史事务来制造成功,不创建辅助验收脚本。
|
||||
|
||||
- [✓] 已复现并修复运行证书恢复缺口:旧候选重载实际生效后返回失败,只恢复文件,Nginx 仍提供新证书;新候选把该失败目标纳入完整事务恢复,重新校验、重载旧配置并验证实际 HTTPS 指纹后才释放锁。
|
||||
- [✓] 新旧证书不同的双机实证:正式功能仅申请一个新证书;修复后重新部署这个证书,两台先实际提供新证书,再自动恢复旧证书。文件摘要、私钥对应的公钥摘要、实际 TLS 指纹及严格 HTTPS 均通过;无本次残锁。Scert 主进程 PID 不变、自动重启计数为零。
|
||||
- [✓] 原任务重试:恢复标准 Nginx 重载命令后,原部署任务第二次尝试成功,两台实际提供新证书;第一次失败记录保留,第二次事务均已提交,成功后再次重试返回 409。
|
||||
- [x] 代码及发行:修复提交 `2e6d992` 已推送;新增五个回归场景、后端全量测试、静态检查、构建、前端 241 项通过。正式 Linux amd64 候选由干净源码构建,已通过密码 SSH 和正式安装器部署到双机,程序哈希一致。
|
||||
- [✓] 安全边界复核:内部 8443、3306、33060 仅回环监听,双机互探公网对应端口六次均超时;管理入口保持 Nginx 80/443 及严格上游证书校验,第一台既有邮件服务正常。
|
||||
- [~] P0-10 仍继续:上述结论仅覆盖本次重载失败窗口,不覆盖所有负向窗口、不同证书进程崩溃、多目标部分失败及历史证据缺失事务。
|
||||
- [!] 原阻塞仍保留:系统通知 SMTP 参数与真实发信闭环、第一台测试域名公网平台拦截、两条历史恢复事务、剩余数据库支持与完整 Web 流程、最终清库首次验收。已完成的 MySQL 8.0 迁移和独立正式 CLI 备份恢复、Linux 原生构建不再重复标记为未做;Windows 不在本轮范围。
|
||||
- [!] 整体生产验收未放行;完整任务及哈希证据见《Linux生产流程测试记录》最新章节。
|
||||
|
||||
## 当前有效进度(2026年10月1日21:12,双机密码重置接口安全复核)
|
||||
|
||||
本节覆盖下方较早的候选版本与待部署状态。需求沿用原清单;按用户最新要求,本轮只推进 Linux 上线,不处理 Windows,不把 Windows 未验收当成本轮上线阻塞。
|
||||
|
||||
Loading…
Reference in New Issue
Block a user