From d9dd74cc085dadc43204aa56c7612501b6115f92 Mon Sep 17 00:00:00 2001 From: xuans Date: Sun, 27 Sep 2026 16:53:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4Scert=E6=95=B4=E6=94=B9?= =?UTF-8?q?=E5=90=88=E5=B9=B6=E4=BC=98=E5=8C=96=E6=B8=85=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 保存本轮整改范围、优先级、验收标准和执行约束,作为后续开发与实机验收基线。 --- doc/Scert整改合并优化清单.md | 1086 ++++++++++++++++++++++++++ 1 file changed, 1086 insertions(+) create mode 100644 doc/Scert整改合并优化清单.md diff --git a/doc/Scert整改合并优化清单.md b/doc/Scert整改合并优化清单.md new file mode 100644 index 0000000..2dcf71a --- /dev/null +++ b/doc/Scert整改合并优化清单.md @@ -0,0 +1,1086 @@ +# Scert 整改、合并与优化清单 + +> 适用项目:`D:\Desktop\Scert` +> 产品基准:Certimate + Certd +> 产品范围:Web 管理页面 + Windows/Linux 服务端 +> 明确排除:Wails 桌面版 +> 整改日期:2026 年 9 月 27 日 + +--- + +## 一、整改目标 + +将 Scert 整改为一个具备以下能力的 Web 化 SSL 证书运维平台: + +1. 证书申请、导入、续期、部署、回滚统一管理。 +2. 支持 ACME、Let’s Encrypt、DNS-01、泛域名和 SAN 证书。 +3. 支持 DNS 账户、CNAME 委派和 DNS 验证记录管理。 +4. 支持多服务器、多部署目标和远程证书部署。 +5. 支持任务调度、失败重试、任务日志和执行历史。 +6. 支持通知、审计、监控、备份和恢复。 +7. 支持用户、角色、项目和资源级权限隔离。 +8. 支持 Windows Service 和 Linux systemd 部署。 +9. 所有敏感凭据、SSH 主机身份和证书私钥均具备安全保护。 +10. 所有生产能力都有独立的实机验收证据。 + +--- + +## 二、范围确认清单 + +| 编号 | 项目 | 状态 | 处理方式 | +|---|---|---:|---| +| S-001 | Web 管理页面 | [x] 已确定 | 保留并完善 | +| S-002 | Windows 服务端 | [x] 已确定 | 保留并进行实机验收 | +| S-003 | Linux 服务端 | [x] 已确定 | 保留并进行 systemd 验收 | +| S-004 | Wails 桌面版 | [ ] 未开始 | 从正式目标中移除,暂不开发 | +| S-005 | CLI 工具 | [ ] 未开始 | 作为可选运维工具保留 | +| S-006 | Certimate 能力 | [x] 已确定 | 重点吸收证书自动化、DNS 和部署能力 | +| S-007 | Certd 能力 | [x] 已确定 | 重点吸收 Web 控制台、任务、通知、审计和监控能力 | + +--- + +## 三、状态标记 + +```text +[ ] 未开始 +[~] 进行中 +[x] 已完成,等待复审 +[✓] 复审通过 +[!] 暂缓或存在阻塞 +``` + +说明: + +- 自动化测试通过只能标记为 `[x]`。 +- 真实远程部署、DNS、HTTPS、备份恢复通过后,才能标记为 `[✓]`。 +- 构建成功、接口返回 HTTP 200、单元测试通过,不等同于生产验收通过。 + +--- + +# 四、P0:基础整改和阻塞项 + +## P0-01 明确产品范围 + +**状态:** `[ ] 未开始` + +### 整改内容 + +- 从正式开发目标中移除 Wails 桌面版。 +- 将桌面窗口、桌面托盘、桌面端自动更新、桌面端配置管理和桌面端 UI 测试标记为范围外。 +- 保留 CLI,但明确 CLI 只用于初始化、运维诊断、数据库迁移、备份恢复、服务安装和卸载。 + +### 验收标准 + +- 任务清单中不再将桌面版作为正式交付目标。 +- Web 和服务端成为唯一正式交付范围。 +- 发布文档、测试文档和安装文档范围一致。 + +## P0-02 整理项目任务清单 + +**状态:** `[ ] 未开始` + +将现有任务拆分为:需求确认、代码实现、自动化测试、隔离环境测试、生产部署测试、最终验收。 + +每项任务至少增加: + +```text +任务编号 +任务名称 +优先级 +当前状态 +问题说明 +涉及文件 +依赖任务 +整改内容 +验证命令 +实机验收步骤 +验收证据 +复审结果 +``` + +相关文档: + +```text +doc/Scert开发任务清单.md +doc/全面审查测试与优化记录.md +doc/发布加固与实机验收记录.md +doc/生产部署与运维说明.md +``` + +## P0-03 整理源码、构建产物和部署产物 + +**状态:** `[ ] 未开始` + +建立明确目录边界: + +```text +backend/ 后端源码 +frontend/ 前端源码 +deploy/ 部署脚本 +doc/ 项目文档 +tests/ 测试代码 +scripts/ 开发辅助脚本 +release/ 发布包 +artifacts/ 测试证据 +``` + +以下内容不得进入正式源码提交: + +```text +.runtime/ +.deploy-stage/ +dist/ +*.exe +*.tar.gz +临时补丁文件 +浏览器运行缓存 +数据库文件 +真实证书私钥 +真实凭据 +远程部署临时文件 +``` + +### 验收标准 + +- 源码、测试产物、部署产物和生产证据分离。 +- `.gitignore` 覆盖构建、运行、数据库和敏感文件。 +- 不删除现有文件,只进行归类、忽略或迁移。 + +## P0-04 统一开发和构建版本 + +**状态:** `[ ] 未开始` + +统一记录并固定以下版本: + +```text +Go 版本 +Node.js 版本 +npm 版本 +Vue 版本 +数据库驱动版本 +Go 依赖版本 +操作系统版本 +编译目标 +``` + +验证命令: + +```powershell +go test ./... +go vet ./... +npm.cmd test +npm.cmd run build +``` + +## P0-05 确认数据库正式支持矩阵 + +**状态:** `[ ] 未开始` + +项目当前涉及 SQLite、MySQL、PostgreSQL,需要明确正式支持范围。 + +建议定位: + +| 数据库 | 定位 | +|---|---| +| SQLite | 单机、开发、轻量部署 | +| MySQL | 正式生产支持,需确认版本 | +| PostgreSQL | 正式生产支持,需确认版本 | + +### 整改内容 + +- 统一三种数据库的迁移脚本。 +- 检查字段类型、索引、默认值和事务行为。 +- 验证 MySQL 5.7/8.0 兼容性。 +- 验证 PostgreSQL 版本兼容性。 +- 验证 SQLite 并发和锁行为。 +- 为每种数据库提供初始化、升级、回滚和备份恢复流程。 + +重点目录: + +```text +backend/internal/database/ +backend/internal/database/migrations/mysql/ +backend/internal/database/migrations/postgres/ +backend/internal/database/migrations/sqlite/ +``` + +## P0-06 建立统一领域模型 + +**状态:** `[ ] 未开始` + +建议统一核心实体: + +```text +users 用户 +roles 角色 +projects 项目 +domains 域名 +certificates 证书 +certificate_versions 证书版本 +certificate_orders 证书申请订单 +dns_accounts DNS 账户 +dns_delegations CNAME 委派 +servers 服务器 +deployment_targets 部署目标 +deployment_records 部署记录 +tasks 任务 +task_attempts 任务执行记录 +renewal_policies 续期策略 +notification_channels 通知渠道 +notification_records 通知记录 +audit_logs 审计日志 +backup_records 备份记录 +``` + +### 验收标准 + +- 证书、任务、部署、通知和审计不再各自孤立。 +- 所有核心资源可以关联到项目。 +- 所有异步操作可以关联到任务和任务执行记录。 +- 所有危险操作可以关联到审计日志。 + +## P0-07 增加项目级权限和资源隔离 + +**状态:** `[ ] 未开始` + +建议角色: + +```text +项目管理员 +证书管理员 +部署管理员 +DNS 管理员 +审计查看者 +只读用户 +系统管理员 +``` + +每个资源至少增加: + +```text +project_id +owner_id +created_by +updated_by +``` + +必须防止: + +- 用户查看其他项目证书。 +- 用户查看其他项目服务器。 +- 用户操作其他项目部署目标。 +- 用户读取其他项目 DNS 凭据。 +- 普通用户查看完整私钥。 +- 普通用户删除或回滚其他项目资源。 + +## P0-08 完善凭据和主密钥生命周期 + +**状态:** `[ ] 未开始` + +统一管理 DNS API 凭据、SSH 私钥、SMTP 凭据、HTTP 通知密钥、数据库密码、ACME 账户信息和证书私钥。 + +增加以下能力: + +```text +凭据创建 +凭据验证 +凭据禁用 +凭据轮换 +凭据删除 +凭据引用检查 +主密钥变更 +主密钥备份 +主密钥恢复 +``` + +### 安全要求 + +- 页面不能返回完整敏感凭据。 +- 日志中不得打印私钥、Token、密码。 +- 删除凭据前必须检查引用关系。 +- 主密钥丢失时必须明确不可恢复或恢复流程。 +- 证书私钥必须进入受保护存储。 + +## P0-09 强化 SSH 主机身份验证 + +**状态:** `[ ] 未开始` + +- 保存 SSH 主机指纹。 +- 首次连接要求确认指纹。 +- 指纹变化时阻断部署。 +- 支持人工更新可信指纹。 +- 禁止跳过主机校验。 +- 部署失败时记录主机、端口、用户和指纹摘要,但不得记录私钥。 + +必须阻断: + +```text +首次连接未确认指纹 +远端主机指纹变化 +目标主机与保存指纹不匹配 +部署凭据失效 +``` + +## P0-10 统一任务、部署和回滚事务模型 + +**状态:** `[ ] 未开始` + +所有长耗时操作统一进入任务中心: + +```text +证书申请 +证书续期 +DNS 验证 +证书部署 +批量部署 +远程备份 +证书回滚 +证书恢复 +``` + +任务状态统一为: + +```text +待执行 +执行中 +成功 +失败 +取消中 +已取消 +等待重试 +部分成功 +``` + +每个任务需要包含任务 ID、任务类型、创建人、所属项目、开始时间、结束时间、当前步骤、执行日志、错误原因、重试次数和关联资源。 + +## P0-11 建立生产验收门禁 + +**状态:** `[ ] 未开始` + +生产验收必须拆分为: + +1. 本地单元测试。 +2. 隔离环境测试。 +3. 数据库兼容测试。 +4. 真实 DNS 测试。 +5. 真实 ACME Staging 测试。 +6. 真实 ACME Production 测试。 +7. 真实远程 SSH/SFTP 测试。 +8. 真实 HTTPS/SNI 测试。 +9. Windows Service 测试。 +10. Linux systemd 测试。 +11. 备份恢复测试。 +12. 升级回滚测试。 + +不能使用以下方式代替生产验收: + +```text +-k +--insecure +强制 IP TLS +跳过 SSH 主机身份验证 +仅使用 HTTP 200 +仅使用构建成功 +仅使用单元测试通过 +``` + +## P0-12 完成备份和恢复方案 + +**状态:** `[ ] 未开始` + +### 需要备份 + +```text +数据库 +证书元数据 +证书版本 +证书私钥 +DNS 账户配置 +服务器配置 +任务配置 +通知配置 +主密钥配置 +``` + +### 需要支持 + +```text +手动备份 +自动备份 +备份列表 +备份校验 +备份下载 +备份恢复 +恢复前确认 +恢复失败回滚 +恢复审计 +``` + +--- + +# 五、P1:Certimate + Certd 核心产品能力 + +## P1-01 建设统一证书中心 + +**状态:** `[ ] 未开始` + +页面建议: + +```text +frontend/src/views/Certificates/ +├── Certificates.vue +├── Certificates.js +├── Certificates.css +├── CertificateDetail.vue +├── CertificateDetail.js +├── CertificateDetail.css +└── components/ +``` + +### 功能要求 + +- 证书列表。 +- 按域名、项目、状态、到期时间筛选。 +- 显示证书状态和剩余有效期。 +- 查看证书链和 SAN 域名。 +- 查看签发机构。 +- 查看证书版本。 +- 手动续期。 +- 手动部署。 +- 回滚版本。 +- 导入已有证书。 +- 删除无引用证书。 + +## P1-02 完善证书详情和版本管理 + +**状态:** `[ ] 未开始` + +证书详情至少包含: + +```text +证书名称 +主域名 +SAN 域名 +所属项目 +签发机构 +签发时间 +到期时间 +剩余天数 +证书状态 +申请方式 +DNS 验证方式 +当前版本 +历史版本 +部署状态 +关联任务 +关联服务器 +``` + +证书状态建议: + +```text +待申请 +申请中 +有效 +即将到期 +已过期 +申请失败 +部署失败 +已吊销 +已禁用 +``` + +## P1-03 完善 ACME 和 DNS 管理 + +**状态:** `[ ] 未开始` + +支持: + +- Let’s Encrypt Production。 +- Let’s Encrypt Staging。 +- DNS-01。 +- HTTP-01。 +- 单域名。 +- 泛域名。 +- SAN 证书。 +- 多 DNS Provider。 +- DNS 账户验证。 +- DNS 账户禁用和轮换。 +- CNAME 委派。 +- TXT 记录添加、读取和清理。 + +页面建议: + +```text +frontend/src/views/DNSAccounts/ +frontend/src/views/DNSDelegations/ +``` + +## P1-04 建设任务中心 + +**状态:** `[ ] 未开始` + +页面建议: + +```text +frontend/src/views/Tasks/ +├── Tasks.vue +├── Tasks.js +├── Tasks.css +├── TaskDetail.vue +├── TaskDetail.js +├── TaskDetail.css +└── components/ +``` + +功能要求: + +- 任务列表和任务详情。 +- 实时查看任务进度。 +- 查看任务日志和执行步骤。 +- 失败重试。 +- 取消任务。 +- 查看历史任务。 +- 按项目、类型、状态筛选。 +- 查看关联证书、服务器和部署记录。 + +## P1-05 统一续期策略 + +**状态:** `[ ] 未开始` + +续期策略支持: + +```text +按剩余天数续期 +按固定日期续期 +按证书标签续期 +按项目续期 +按证书类型续期 +续期失败自动重试 +续期成功自动部署 +续期后自动通知 +``` + +必须防止: + +- 同一个证书重复申请。 +- 同一个证书并发续期。 +- 续期任务重复部署。 +- 失败后无限重试。 +- 续期成功但部署状态未更新。 + +## P1-06 建设服务器和部署目标中心 + +**状态:** `[ ] 未开始` + +页面建议: + +```text +frontend/src/views/Servers/ +├── Servers.vue +├── Servers.js +├── Servers.css +├── ServerDetail.vue +├── ServerDetail.js +├── ServerDetail.css +└── components/ +``` + +功能要求: + +- 服务器列表。 +- SSH 连接测试。 +- 主机指纹管理。 +- 服务器标签。 +- 所属项目。 +- 服务器分组。 +- 部署路径配置。 +- reload 命令配置。 +- 部署后健康检查。 +- 服务器启用和禁用。 + +## P1-07 建设多服务器部署策略 + +**状态:** `[ ] 未开始` + +支持: + +```text +单服务器部署 +多服务器并行部署 +多服务器串行部署 +按标签批量部署 +部署失败停止 +部署失败继续 +失败后自动回滚 +部分成功状态 +部署后 HTTPS 检查 +部署前备份 +``` + +部署事务建议: + +```text +准备阶段 +连接验证 +远程备份 +上传临时文件 +权限校验 +原子替换 +执行 reload +HTTPS 验证 +标记成功 +失败回滚 +``` + +## P1-08 建设通知中心 + +**状态:** `[ ] 未开始` + +页面建议: + +```text +frontend/src/views/Notifications/ +├── Notifications.vue +├── Notifications.js +├── Notifications.css +├── NotificationChannel.vue +└── components/ +``` + +支持 HTTP Webhook、SMTP 邮件,以及任务成功、任务失败、证书即将过期、证书已过期、部署失败、服务异常和备份失败通知。 + +要求: + +- 通知渠道可测试。 +- 通知失败可重试。 +- 通知内容不得包含私钥和敏感凭据。 +- 通知发送记录可审计。 + +## P1-09 建设审计中心 + +**状态:** `[ ] 未开始` + +页面建议: + +```text +frontend/src/views/AuditLogs/ +├── AuditLogs.vue +├── AuditLogs.js +└── AuditLogs.css +``` + +必须记录: + +```text +登录、退出、密码修改 +用户创建、用户删除、角色变化 +项目变化 +证书申请、证书导入、证书删除、证书回滚 +部署、回滚 +凭据创建、修改、删除 +服务器指纹变化 +备份、恢复 +系统设置修改 +``` + +审计字段: + +```text +操作人 +操作时间 +操作类型 +资源类型 +资源 ID +项目 ID +客户端 IP +操作结果 +失败原因 +请求追踪 ID +``` + +## P1-10 建设证书监控仪表盘 + +**状态:** `[ ] 未开始` + +Dashboard 展示: + +```text +证书总数 +有效证书 +即将过期证书 +已过期证书 +申请失败证书 +部署失败证书 +今日任务数 +失败任务数 +服务器数量 +异常服务器数量 +最近审计事件 +最近通知事件 +``` + +到期时间建议: + +```text +超过 30 天:正常 +7 至 30 天:提醒 +1 至 7 天:警告 +已过期:严重 +``` + +## P1-11 建设备份恢复页面 + +**状态:** `[ ] 未开始` + +页面建议: + +```text +frontend/src/views/Backups/ +├── Backups.vue +├── Backups.js +├── Backups.css +└── RestoreDialog/ +``` + +高风险操作必须: + +- 二次确认。 +- 输入确认文字。 +- 显示影响范围。 +- 恢复前自动备份。 +- 恢复过程进入任务中心。 +- 恢复结果写入审计日志。 +- 恢复失败自动回滚。 + +## P1-12 统一 API 契约和权限矩阵 + +**状态:** `[ ] 未开始` + +整理所有接口: + +```text +接口路径 +请求方法 +是否需要登录 +允许角色 +项目权限 +资源权限 +是否写审计日志 +是否需要幂等键 +是否可能返回敏感信息 +错误码 +``` + +重点文件: + +```text +backend/internal/httpapi/server.go +backend/internal/httpapi/middleware.go +backend/internal/httpapi/auth.go +backend/internal/httpapi/certificate_api.go +backend/internal/httpapi/task_api.go +backend/internal/httpapi/renewal_api.go +backend/internal/httpapi/users_api.go +backend/internal/httpapi/user_groups.go +backend/internal/httpapi/settings_api.go +backend/internal/httpapi/ssh_key.go +``` + +--- + +# 六、P2:Web 体验和运维优化 + +## P2-01 统一 Web 页面结构 + +**状态:** `[ ] 未开始` + +建议目录: + +```text +frontend/src/views/ +├── Dashboard/ +├── Certificates/ +├── Tasks/ +├── DNSAccounts/ +├── DNSDelegations/ +├── Servers/ +├── Notifications/ +├── AuditLogs/ +├── Backups/ +├── UserManagement/ +├── Settings/ +├── SetupWizard/ +└── Login/ +``` + +每个页面建议拆分为页面 `.vue`、`.js`、`.css` 和 `components/`。 + +## P2-02 统一中文显示和错误信息 + +**状态:** `[ ] 未开始` + +- 不允许出现 HTML 实体编码。 +- 不允许出现英文状态值直接展示。 +- 不允许出现空白错误提示。 +- 不允许把后端堆栈直接展示给用户。 +- 所有危险操作使用中文确认提示。 +- 所有任务状态使用统一中文文案。 + +例如: + +```text +pending 待执行 +running 执行中 +success 成功 +failed 失败 +retrying 等待重试 +cancelled 已取消 +``` + +## P2-03 所有长操作任务化 + +**状态:** `[ ] 未开始` + +以下操作不能长期阻塞 HTTP 请求: + +```text +证书申请 +证书续期 +DNS 验证 +批量部署 +远程备份 +数据库恢复 +批量删除 +批量导入 +``` + +统一返回 `task_id`,前端通过任务详情或轮询查看状态。 + +## P2-04 增加幂等和重复操作保护 + +**状态:** `[ ] 未开始` + +增加: + +```text +幂等键 +操作锁 +任务去重 +证书申请锁 +部署锁 +恢复锁 +重复提交检测 +``` + +重点防止重复申请、重复部署、刷新页面重复提交、定时任务重复续期和多实例并发处理同一证书。 + +## P2-05 完善日志、指标和追踪 + +**状态:** `[ ] 未开始` + +日志增加请求 ID、任务 ID、用户 ID、项目 ID,并对敏感字段脱敏。 + +建议指标: + +```text +证书申请成功率 +证书续期成功率 +部署成功率 +任务失败率 +任务执行耗时 +DNS 验证耗时 +远程连接失败次数 +通知失败次数 +数据库错误次数 +``` + +## P2-06 完善接口和前端测试 + +**状态:** `[ ] 未开始` + +后端验证: + +```powershell +go test ./... +go vet ./... +``` + +前端验证: + +```powershell +npm.cmd test +npm.cmd run build +``` + +补充权限、越权、证书流程、重复提交、部署回滚、数据库迁移、凭据脱敏、登录、初始化向导、任务查询、部署确认、错误重试和权限显示测试。 + +## P2-07 完善升级、降级和卸载流程 + +**状态:** `[ ] 未开始` + +需要提供: + +```text +升级前备份 +数据库迁移 +配置迁移 +静态文件升级 +服务重启 +升级失败回滚 +版本检查 +卸载确认 +卸载保留数据 +卸载删除数据 +``` + +## P2-08 完成 Windows Service 实机验收 + +**状态:** `[ ] 未开始` + +验证安装、启动、停止、重启、开机启动、异常恢复、日志目录、配置目录、数据目录、卸载和升级。 + +相关文件: + +```text +deploy/install-windows.ps1 +``` + +## P2-09 完成 Linux systemd 实机验收 + +**状态:** `[ ] 未开始` + +验证安装、启动、停止、重启、开机启动、异常恢复、运行用户、日志输出、配置目录、数据目录、升级和卸载。 + +相关文件: + +```text +deploy/install-linux.sh +deploy/systemd/ +``` + +## P2-10 完善安全基线 + +**状态:** `[ ] 未开始` + +检查: + +- 默认账户是否必须修改密码。 +- 默认密码是否禁止继续使用。 +- 登录失败是否限流。 +- 会话是否支持失效。 +- Cookie 是否设置安全属性。 +- 是否防止 CSRF。 +- 是否防止越权。 +- 是否防止路径穿越。 +- 是否防止命令注入。 +- 是否限制上传文件类型和大小。 +- 是否隐藏服务器敏感版本信息。 +- 是否禁止日志输出私钥和密码。 + +--- + +# 七、P3:后续增强功能 + +以下内容不影响第一阶段交付,可在核心版本稳定后开发。 + +| 编号 | 功能 | 状态 | +|---|---|---:| +| P3-01 | 多租户支持 | [ ] 未开始 | +| P3-02 | API Token 管理 | [ ] 未开始 | +| P3-03 | Webhook 事件订阅 | [ ] 未开始 | +| P3-04 | 更多 DNS Provider 插件 | [ ] 未开始 | +| P3-05 | 证书标签和批量操作 | [ ] 未开始 | +| P3-06 | 多实例高可用 | [ ] 未开始 | +| P3-07 | 分布式任务队列 | [ ] 未开始 | +| P3-08 | Prometheus 指标接口 | [ ] 未开始 | +| P3-09 | OpenAPI 自动生成 | [ ] 未开始 | +| P3-10 | 移动端适配 | [ ] 未开始 | + +--- + +# 八、推荐整改顺序 + +## 第一阶段:基础和安全 + +```text +P0-01 产品范围 +P0-02 任务清单 +P0-03 工作区整理 +P0-04 版本统一 +P0-05 数据库支持矩阵 +P0-06 领域模型 +P0-07 权限隔离 +P0-08 凭据生命周期 +P0-09 SSH 指纹 +P0-10 任务事务模型 +``` + +## 第二阶段:核心业务 + +```text +P1-01 证书中心 +P1-02 证书详情 +P1-03 DNS 管理 +P1-04 任务中心 +P1-05 续期策略 +P1-06 服务器中心 +P1-07 多服务器部署 +P1-08 通知中心 +P1-09 审计中心 +``` + +## 第三阶段:运维和验收 + +```text +P1-10 监控仪表盘 +P1-11 备份恢复 +P1-12 API 权限矩阵 +P2-03 长操作任务化 +P2-04 幂等保护 +P2-05 可观测性 +P2-07 升级回滚 +P2-08 Windows Service 验收 +P2-09 Linux systemd 验收 +P0-11 生产验收门禁 +``` + +--- + +# 九、第一版完成标准 + +以下条件全部满足,才能认为 Scert 第一版整改完成: + +```text +[ ] Web 页面覆盖证书、任务、服务器、DNS、通知、审计和备份 +[ ] Wails 桌面版不再作为正式交付目标 +[ ] 证书申请、续期、部署、回滚均进入任务中心 +[ ] 证书、任务、部署和审计可以相互关联 +[ ] 资源具备项目级权限隔离 +[ ] DNS、SSH、SMTP 等凭据安全存储 +[ ] SSH 主机指纹得到验证 +[ ] 证书部署失败可以回滚 +[ ] 任务支持失败重试和重复提交保护 +[ ] 数据库迁移在正式支持数据库上通过 +[ ] 备份和恢复在隔离环境通过 +[ ] Windows Service 实机通过 +[ ] Linux systemd 实机通过 +[ ] HTTPS、SNI 和证书链验证通过 +[ ] 真实 DNS 和 ACME 流程通过 +[ ] 所有危险操作写入审计日志 +[ ] 所有敏感信息不会出现在日志和页面中 +[ ] 自动化测试通过 +[ ] 生产验收证据完整 +``` + +--- + +## 十、执行约束 + +1. 未经授权不删除现有文件。 +2. 不将真实密钥、证书私钥、Token 和密码提交到 Git。 +3. 不使用 `-k`、`--insecure`、强制 IP TLS 或跳过 SSH 主机身份验证。 +4. 每次修改前先检查当前分支、工作区和未提交变更。 +5. 每完成一个任务,补充验证命令和验收证据。 +6. 代码标识符使用英文,界面、注释、文档和用户提示使用中文。 +7. 每次测试区分本地、隔离环境、测试环境和生产验收结果。 \ No newline at end of file