Go to file
xuans 3d2a5a3ab9
Some checks are pending
Build and Release / Build Release Package (tar.gz, amd64, linux) (push) Waiting to run
Build and Release / Build Release Package (tar.gz, arm64, linux) (push) Waiting to run
Build and Release / Build Release Package (zip, amd64, windows) (push) Waiting to run
style: 优化整体页面布局限制最大宽度并居中大卡片
2026-10-19 20:17:37 +08:00
.claude/docs/ai 更新证书恢复整改清单与接口文档 2026-10-03 02:34:12 +08:00
.gitea/workflows feat(release): 发布包自动生成更新说明与CI发布介绍 2026-10-18 16:10:44 +08:00
.github/workflows feat(release): 发布包自动生成更新说明与CI发布介绍 2026-10-18 16:10:44 +08:00
artifacts 补齐四十四项整改规格并加固仓库产物边界 2026-09-27 18:03:02 +08:00
backend fix: 支持测试根证书注入解决部署HTTPS回环校验报错并升级版本号至v1.52.5 2026-10-19 03:52:25 +08:00
build 正式构建拒绝源码非规范换行并补充回归门禁 2026-09-30 20:59:07 +08:00
deploy feat: 发布包目录架构重构为标准scert根目录与deploy部署运维套件标准化 2026-10-18 17:43:04 +08:00
desktop 收敛正式发布为Web和服务端并保留桌面历史源码 2026-09-27 17:22:00 +08:00
doc docs: 完善后端接口说明文档与README并优化项目管理工作区边框布局 2026-10-19 13:26:22 +08:00
frontend style: 优化整体页面布局限制最大宽度并居中大卡片 2026-10-19 20:17:37 +08:00
release 补齐四十四项整改规格并加固仓库产物边界 2026-09-27 18:03:02 +08:00
scripts 补齐四十四项整改规格并加固仓库产物边界 2026-09-27 18:03:02 +08:00
tests 记录MySQL双版本在线恢复证据及剩余验收门禁 2026-09-27 19:11:20 +08:00
.gitattributes 统一源码换行并验证跨配置签出一致性 2026-09-27 18:29:26 +08:00
.gitignore chore: 忽略打包输出目录out以保持工作区整洁 2026-10-18 17:37:58 +08:00
README.md docs: 完善后端接口说明文档与README并优化项目管理工作区边框布局 2026-10-19 13:26:22 +08:00
验证码.html chore: 工作区检查点提交 2026-10-18 10:42:10 +08:00

Scert - SSL 证书全生命周期自动化管理系统

Scert Logo

现代化、安全可靠的企业级 SSL/TLS 证书自动化申请、续期、监控、分发与部署系统


🌟 项目简介

Scert 是一款面向现代化运维环境的高性能 SSL/TLS 证书全生命周期管理系统。支持 ACME 协议与主流云厂商 DNS 自动化联动,提供多域名/泛域名申请、到期监控巡检、多主机/多集群自动推送部署、安全回滚以及基于角色的多项目访问控制。

系统采用 Go (Gin) 高性能服务端与 Vue 3 响应式管理前端,支持 Linux 与 Windows 原生服务化部署,支持 SQLite、MySQL、PostgreSQL 三种企业级数据库存储引擎。


🚀 核心特性

  • ACME 自动化签发与续期
    • 支持 Let's Encrypt 等合规 ACME CA 机构。
    • 支持单域名、多域名、泛域名(支持多级子域名与主泛合并)申请。
    • 自动化 DNS-01 验证(原生支持阿里云 DNS、腾讯云 DNSPod、华为云 DNS、AWS Route53 等主流 DNS 提供商)及 HTTP-01 验证。
  • 证书智能分发与自动部署
    • 支持一键或定时将证书推送到远端服务器(通过安全 SSH/SFTP 协议)。
    • 支持目标服务器 Nginx / Web 服务自动重载与 HTTPS 状态存活复核校验。
    • 具备原子部署事务保护,当部署失败或校验未通过时自动触发安全回滚,保障现有生产业务不受中断。
  • 多数据库引擎支持
    • 原生支持 SQLite(轻量自包含)、MySQL (5.7/8.0+)、PostgreSQL (12+)。
    • 初始化向导提供数据库连接测试、自动表结构迁移与数据一致性检查。
  • 多租户与多项目权限管理
    • 支持细粒度角色权限(超级管理员、管理员、普通用户)。
    • 支持多项目隔离管理,证书、域名、服务器资产按项目权限范围安全受控。
  • 全方位告警与系统通知
    • 支持内置 SMTP 邮件推送与邮件验证码安全验证。
    • 支持证书临期告警(支持自定义告警阈值,如 30 天/15 天/7 天)、签发失败告警及部署异常告警。
  • 生产级安全体系
    • 敏感凭据(DNS API Key/Secret、SSH 私钥等)基于主密钥进行高强度加密存储(AES-GCM / 保护密钥隔离)。
    • 生产运维边界严格受控,仅允许受信任的反向代理提供标准 HTTPS 访问,内部服务端口默认仅绑定回环地址(127.0.0.1)。

🏗️ 架构与技术栈

技术栈选型

  • 后端架构 (Backend):
    • 核心语言:Go 1.26+
    • Web 框架:Gin
    • ACME 库:lego/v5
    • 数据库引擎:modernc.org/sqlite、go-sql-driver/mysql、jackc/pgx/v5
    • 命令行体系:Cobra
  • 前端架构 (Frontend):
    • 框架:Vue 3 (Composition API)
    • 构建工具:Vite
    • 样式设计:原生模块化 CSS,遵循现代规范的组件化与卡片式视觉风格
  • CI/CD 与运维 (DevOps):
    • CI/CD:统一的 GitHub Actions / Gitea Actions 工作流,支持全架构矩阵编译与自动化打包发布。
    • 系统服务:Linux Systemd / Windows Service 原生守护进程。

📁 目录结构

Scert/
├── .github/
│   └── workflows/
│       └── release.yml        # CI/CD 自动化多平台打包发布工作流
├── backend/                   # Go 后端工程
│   ├── cmd/
│   │   ├── scert/             # 核心服务入口
│   │   ├── scert-admin/       # 超级管理员与运维重置入口
│   │   ├── scert-nginx/       # Nginx 辅助管理程序
│   │   ├── scert-release/     # 离线归档辅助工具
│   │   └── scert-storage/     # 证书安全存储与挂载辅助
│   ├── internal/              # 业务核心逻辑(ACME、DNS、部署、存储、通知)
│   └── go.mod
├── frontend/                  # Vue 3 前端工程
│   ├── src/
│   │   ├── views/             # 页面视图组件(Dashboard, UserManagement, SetupWizard 等)
│   │   ├── components/        # 公共基础组件
│   │   └── App.vue
│   └── package.json
├── deploy/                    # 部署脚本与配置文件模板
│   ├── install-linux.sh       # Linux 一键安装与升级脚本
│   ├── install-windows.ps1    # Windows PowerShell 一键安装脚本
│   ├── package.mjs            # 规范发布包打包脚本
│   ├── nginx/                 # Nginx 反向代理配置样例
│   └── systemd/               # Systemd 服务与 Socket 定义
├── doc/                       # 项目技术规范、接口说明与运维执行清单
└── README.md                  # 项目主文档


📖 核心 API 规范与接口说明

Scert 遵循 RESTful 设计标准,前后端交互采用 JSON 格式,凭据与敏感字段全量脱敏入库,写操作经过严格的同源保护(Same-Origin Check)。

详细接口契约、参数定义、权限约束及返回示例参见文档:《Scert 后端接口说明文档》(doc/后端接口说明文档.md)。

主要 API 模块概览

  1. 系统初始化与状态就绪 (Bootstrap API):
    • GET /readyz / GET /healthz:系统运行探针与服务健康度检查。
    • GET /api/v1/setup/status:获取当前向导初始化进度及配置项状态。
    • POST /api/v1/setup:提交并初始化超级管理员账号、数据库连接及系统配置。
  2. 认证与当前会话 (Auth & Session API):
    • POST /api/v1/auth/login / POST /api/v1/auth/logout:用户登录与安全登出。
    • GET /api/v1/user/info:获取当前登录用户基本信息、所属项目与角色权限。
  3. 用户与权限控制 (User Management API):
    • 支持超级管理员对平台成员进行增删改查、状态启停(启用/禁用)及角色授权。
  4. 项目与多租户协作 (Project Management API):
    • 支持项目资源隔离(项目资产独享)、成员角色(项目管理员、成员)细粒度分配。
  5. 托管域名与证书生命周期 (Domains & Certificates API):
    • 域名的添加、修改、删除、泛域名/多级子域名支持。
    • 证书自动化申请 (issue)、在线校验 ( alidate)、手动导入 (import)、历史版本查看与回滚 (history/rollback)。
  6. 远程部署与目标服务器 (Servers & Deployments API):
    • SSH/SFTP 目标服务器纳管、主机指纹核验与免密连接。
    • 证书远程下发、Nginx 重载与原子回滚保护。
  7. DNS 账户与凭据配置 (DNS Accounts API):
    • 多云厂商(阿里云、腾讯云等)DNS AccessKey 统一安全存储与项目归属绑定。
  8. 异步任务与审计日志 (Tasks & Audit Logs API):
    • 全局异步任务轮询、日志查看、执行明细报告与终止操作。
  9. 系统全局设置 (System Settings API):
    • 全局 SMTP 邮件通知配置、邮件模板测试及证书续期轮询周期策略配置。

🛠️ 本地开发与构建

1. 环境准备

  • Go:>= 1.26
  • Node.js:>= 24
  • npm:>= 11

2. 前端开发与构建

cd frontend

# 安装依赖
npm ci

# 启动本地开发热更新服务器
npm run dev

# 运行前端全量单元测试
npm test

# 编译前端生产静态资源
npm run build

3. 后端编译与启动

cd backend

# 编译服务端可执行文件
go build -trimpath -o ../bin/scert ./cmd/scert
go build -trimpath -o ../bin/scert-admin ./cmd/scert-admin

# 启动服务端(默认读取配置并初始化)
../bin/scert serve

📦 发布包制作与 CI/CD

项目配备统一的打包脚本 deploy/package.mjs,产物严格遵循 项目名+版本+架构 的命名规范:

# 打包 Linux amd64 归档包 (生成 Scert_v1.52.5_linux_amd64.tar.gz)
node deploy/package.mjs --target=linux_amd64 --version=v1.52.5

# 打包 Windows amd64 压缩包 (生成 Scert_v1.52.5_windows_amd64.zip)
node deploy/package.mjs --target=windows_amd64 --version=v1.52.5

发布包内包含:

  • scert / scert-admin(Linux 下含 scert-nginx 与 scert-storage)
  • web/ 编译好的前端生产静态资源
  • install-linux.sh / install-windows.ps1
  • systemd/ 与 nginx/ 配置示例模板
  • SHA256SUMS 完整性校验文件

推送版本标签(例如 git tag v1.52.5 && git push Scert v1.52.5)后,GitHub 与 Gitea 会自动触发 Actions 矩阵编译,生成各架构的发布包并自动挂载至 Release 资产清单中。


💻 生产环境部署

Linux (Ubuntu / Debian / CentOS / Rocky)

  1. 从 Release 页面下载对应架构的发布包并解压:

    tar -zxvf Scert_v1.52.5_linux_amd64.tar.gz
    cd Scert_v1.52.5_linux_amd64
    
  2. 执行安装脚本:

    chmod +x install-linux.sh scert scert-admin
    sudo ./install-linux.sh --source-dir .
    
  3. 启动并配置服务:

    sudo systemctl daemon-reload
    sudo systemctl enable Scert
    sudo systemctl start Scert
    
  4. 配置 Nginx 反向代理将标准 HTTPS 流量转发至 127.0.0.1:8443(参考 nginx/Scert.conf.example)。

Windows

  1. 解压 Scert_v1.52.5_windows_amd64.zip。
  2. 以管理员权限启动 PowerShell 并执行:
    powershell -ExecutionPolicy Bypass -File .\install-windows.ps1 -SourceDirectory .
    
  3. 服务将自动注册为 Windows 守护进程运行。

📄 开源与许可证

本项目所有权属于原开发团队。遵循安全合规及企业授权协议分发使用。