AutoCertX 是一个面向企业混合基础设施的证书生命周期管理平台,目标是提供 SaaS 控制面 + 客户侧多 Agent 执行面 的证书自动化能力,覆盖证书申请、验证、签发、部署、续期、发现、审计与资产可视化。
当前仓库已经从“纯需求文档”演进到“文档驱动 + 工程骨架 + 契约冻结 + 基线业务实现 + 前端原型”阶段,T00/T01/T02/T03/T04/T05/T06/T13 已完成基线实现,T07 已完成 Phase A,T09 已启动 AgentHub/交付治理 Phase A。当前控制面已具备认证与 RBAC、域名/DNS/CA 治理、Job/Lease/Scheduler、审计查询、同步 CSV 导出、系统设置、基础 Webhook 状态跟踪、Agent 节点治理和部署目标治理 API 基线。若你正在评估项目范围、架构方向或一期交付边界,应优先阅读 doc/需求说明书.md、doc/GA一期与后续需求规划.md 和 doc/一期GA详细设计.md。
- 面向中大型企业的企业级证书生命周期平台
- 产品主形态为
SaaS,同时支持用户侧部署 - 私钥不进入控制面,密钥生成和使用下沉到客户侧 Agent
- 控制面负责编排、策略、审计、资产台账和可视化
- 执行面负责密钥生成、challenge 执行、证书部署、配置扫描和发现回传
- 多租户模型:租户、项目、环境
- Web 控制台
- ACME 客户端管理
- 证书资产台账
- 审计与作业中心
- 策略与权限控制
- 多 Agent 节点注册、心跳、任务拉取
- 本地私钥生成与 CSR 生成
- HTTP-01 challenge 文件处理
- DNS-01 challenge 执行协同
- NGINX / Tomcat 证书部署
- 本地配置扫描、证书发现、有效期检测
当前一期 GA 冻结范围为:
Let's EncryptACMEHTTP-01DNS-01(TXT, 阿里云)RSANGINXTomcat(JSSE + PKCS12)- Web 控制台、作业中心、资产台账、发现与审计
更完整的范围、成功标准和里程碑定义见 doc/GA一期与后续需求规划.md。
当前仓库采用单仓组织,目标是承载以下四类内容:
- 产品与架构文档
- 控制面后端工程
- 客户侧 Agent 工程
- 前端控制台与接口契约
从工程形态上看,它不是“单一 Go 服务仓库”,而是一个面向一期 GA 的 monorepo:
Go 1.26.2作为后端与 Agent 主语言Vue 3作为正式前端技术路线SQL + migrations承载 PostgreSQL 初始化与后续 migration 基线api/openapi作为控制面 API、Agent 协议和错误码契约冻结位置internal/repository承载 PostgreSQL 迁移清单与持久化基线doc作为需求、详细设计、选型和研发规划的事实源
当前仓库目录已经按目标架构预分层,主要结构如下:
.
├── api/
│ └── openapi/ # 控制面 API、Agent 协议与共享契约冻结位置
├── cmd/
│ ├── agent/ # Agent 启动入口
│ └── controlplane/ # 控制面启动入口
├── doc/ # 需求、详细设计、页面设计、研发规划、选型分析
├── internal/
│ ├── agent/ # 执行面内部模块边界
│ ├── app/
│ │ └── controlplane/ # 控制面进程装配、HTTP 路由、中间件、生命周期管理
│ ├── controlplane/ # 控制面结构规划说明
│ ├── repository/ # PostgreSQL 迁移清单与仓储基线
│ └── platform/ # 平台层:配置、日志、运行时、构建信息
├── migrations/ # migration 包装文件与后续版本升级入口
├── pkg/
│ └── protocol/
│ └── acme/ # 内部 ACME 协议子系统
├── scripts/ # 验证、初始化与研发辅助脚本
├── sql/
│ └── 001_init_schema.sql # PostgreSQL 初始化基线 DDL
├── web/
│ ├── console/ # 控制台原型与后续前端工程目录
│ └── README.md # 前端原型说明
├── LICENSE
└── README.md
doc/
- 项目的需求事实源和设计事实源
- 当前最重要的研发输入都在这里冻结
cmd/controlplane
- 控制面可执行程序入口
- 后续负责装配 HTTP 服务、调度器、作业处理器、配置和日志
cmd/agent
- Agent 可执行程序入口
- 后续负责装配注册、心跳、轮询、执行器和本地证据回传
internal/platform
- 与具体业务无关的底层能力
- 当前已包含构建信息、配置、日志和运行时封装
internal/app/controlplane
- 控制面应用装配层
- 当前已落地:
bootstraphttpmiddlewarewiring
- 负责把平台层基础能力装配成可运行的控制面进程骨架
internal/controlplane
- 控制面主业务目录
- 当前作为“后续业务模块分层规划说明”保留,不再作为平铺业务实现目录扩张
- 现阶段以“分层结构”作为正式口径,而不是继续按旧的业务模块平铺展开
- 推荐收敛为:
internal/app/controlplaneinternal/domaininternal/applicationinternal/repositoryinternal/workflowinternal/driverinternal/scheduler
- 详细评估见 doc/后端代码结构评估与重构建议.md
internal/agent
- Agent 侧执行能力目录
- 当前按能力边界预留,后续展开:
bootstrappollerexecutorkeymgrchallenge/http01deploy/nginxdeploy/tomcatverify/nginxverify/tomcatdiscover/nginxdiscover/tomcatevidencereporter
pkg/protocol/acme
- 内部 ACME 协议子系统
- 一期以标准 ACME 为主,后续承接私有扩展字段、流程和算法扩展
- 业务层不应直接依赖第三方 ACME 原生类型
api/openapi
- 控制面 REST API、Agent 协议和共享契约的冻结位置
- 当前已落地:
openapi.jsonerrors.jsoncontracts_test.goREADME.md
- 后续用于生成 OpenAPI 文档、SDK 或共享模型
sql/
- 当前保存 PostgreSQL 初始化 schema
- 后续可按 migration 工具拆分为初始化、索引、种子和升级脚本
migrations/
- 当前保存首个迁移包装文件
0001_init_schema.sql - 与
sql/001_init_schema.sql形成“设计事实源 + 可执行迁移入口”的组合
internal/repository
- 当前已落地
postgres/manifest.go与manifest_test.go - 用于冻结迁移清单、表结构基线和后续仓储实现入口
scripts/
- 当前已落地
verify_ddl.sh - 用于真库初始化校验和后续集成/E2E 辅助脚本
web/console
- 当前包含低保真 HTML 页面原型
- 后续正式前端工程将迁移为
Vue 3 + TypeScript + Vite + Vue Router + Pinia + @tanstack/vue-query
目前仓库内已经存在以下可识别的实现骨架:
- Go 启动入口:
cmd/controlplane/main.gocmd/agent/main.go
- 平台层基础代码:
internal/platform/configinternal/platform/logginginternal/platform/runtimeinternal/platform/buildinfo
- 控制面装配骨架:
internal/app/controlplane/bootstrapinternal/app/controlplane/httpinternal/app/controlplane/middlewareinternal/app/controlplane/wiring
- 数据库初始化:
sql/001_init_schema.sql
- 迁移与仓储基线:
migrations/0001_init_schema.sqlinternal/repository/postgres/manifest.gointernal/repository/postgres/manifest_test.goscripts/verify_ddl.sh
- 契约冻结产物:
api/openapi/openapi.jsonapi/openapi/errors.jsonapi/openapi/contracts_test.go
- 前端页面原型:
web/console/index.htmlweb/console/domains.htmlweb/console/requests.htmlweb/console/audit.htmlweb/console/ca-accounts.htmlweb/console/delivery.htmlweb/console/discoveries.htmlweb/console/jobs.htmlweb/console/settings.html
需要注意:
- 当前
web/console/*.html是原型页面,不代表最终前端工程组织 - 最新页面信息架构和导航设计,以 doc/前端页面设计.md 为准
- 最新前端导航已经收敛为
证书资产内发起申请、交付管理聚合部署目标和节点管理
如果你是首次进入仓库,建议按以下顺序阅读:
当前仓库处于“详细设计已冻结、工程骨架已预留、业务代码逐步落地”阶段:
- 文档已形成较完整的一期 GA 交付边界和详细设计
T00已完成:Go 工程入口、控制面装配壳层、平台层和目录边界已建立T01已完成:SQL 初始化脚本、migration 包装文件、仓储基线与真库 DDL 校验脚本已生成T02已完成:OpenAPI、错误码和契约测试已冻结T03已完成:身份、租户上下文、RBAC、语言偏好与/api/v1/auth/*基线已落地T04已完成:域名、DNS 凭据、CA 账户治理与对应治理 API 基线已落地T05已完成:job域模型、planner/worker/reaper、PostgreSQLSKIP LOCKED仓储与调度集成验证已落地T06已完成:审计域、系统设置域、/api/v1/audit-events*、/api/v1/settings/*、同步 CSV 导出产物、导出记录状态跟踪与基础 Webhook 状态机已落地T07Phase A 已完成:dashboard/jobs/domains/settingsquery 聚合层与控制面 GET 路由基线已落地T09Phase A 已完成:Agent 节点、部署目标 domain/command/API 基线与make ci-task-T09已落地T10Phase B 控制面基线已完成:NGINX 部署记录、Agent job 派发、进度/完成回调、证据归档、资产状态刷新与make ci-task-T10门禁已接入T13已完成:正式 Vue 3 工程入口、登录、路由守卫、控制台壳层、i18n、权限映射与 API client 基线已落地README反映的是当前需求、设计和工程骨架状态,而不是全部功能均已实现的状态
当前仓库包含的许可证文件为 GNU LGPL v2.1,详见 LICENSE。
需要注意:
- 需求文档中提到了“开源基础版 + 商业高级版”以及可能的授权限制策略
- 但仓库当前实际生效的许可以
LICENSE文件为准 - 如果后续需要引入“双许可证”或“限制直接商用/SaaS 转售”的授权模型,应通过明确的许可证变更或附加授权文件落地,而不是仅停留在需求描述中
这部分属于产品与法律策略,不应由 README 单独重定义。
- 正在评估企业证书生命周期平台产品方向的人
- 正在做证书自动化、ACME、部署编排、发现扫描方案设计的人
- 需要先冻结一期 GA 范围,再进入架构设计和工程实现的人
- 准备基于当前详细设计,推进控制面、Agent 和前端并行研发的人