证枢是一套证书控制台:向 ACME 证书机构申请免费证书,按域名替换 Nginx 证书目录里的旧文件,然后重启或重载 Nginx。Vue 3 管理台和 Go 服务打在同一个可执行文件里,浏览器打开即可使用。
它解决的是日常运维里反复出现的几件事:证书快到期没人看、申请和部署拆在不同工具里、通配符证书要手工改 DNS、私钥散落在多台机器上。

能力一览
| 能力 | 做什么 |
|---|---|
| 证书申请 | 向 Let's Encrypt 等 ACME 机构申请单域名、多域名或通配符证书 |
| 自动部署 | 只覆盖证书目录中的 域名.pem 与 域名.key,检测通过后再重启或重载 Nginx |
| 单独领取 | 先拿到证书材料,下载后自行安装到 Nginx、httpd 或 IIS |
| 到期总览 | 看证书数量、已部署数量、30 天内到期和失败任务 |
| 定时续期 | 用 Cron 在到期窗口内重新申请,已绑定 Nginx 的证书同时部署 |
| 任务追踪 | 每次执行记录触发来源、阶段和错误 |
| 权限控制 | 租户隔离,管理员、运维、只读三种内置角色,也可自定义授权 |
控制台
登录后左侧菜单按当前账号的权限显示。租户由账号归属决定,登录时不用填写租户编号。
| 页面 | 用途 |
|---|---|
| 总览 | 证书总数、已部署、30 天内到期(含已过期)、失败与执行中任务,以及即将到期的证书列表 |
| 证书 | 新建、按名称或域名搜索、按状态筛选,并执行申请、签发并部署、部署、下载、删除 |
| 数据源 | 登记 ACME 账户和 Nginx 部署目标,可测试连通性、注册账户 |
| 流水线 | 查看绑定到证书的签发流水线,选择「只申请」或「申请并部署」 |
| 任务 | 查看每次执行的编号、来源、状态、阶段、时间和错误 |
| 调度 | 为流水线设置 Cron,启用或停用 |
| 用户 | 新建用户、分配角色 |
| 角色 | 查看内置角色,并为非管理员角色勾选权限 |
右上角可以修改密码。首次使用默认管理员时,系统会提示先改掉初始密码。
一次签发怎么走
创建证书时指定名称、域名、验证方式、ACME 账户、密钥类型,以及到期前多少天可以续期(1 到 60 天,默认 30 天)。勾选「允许调度自动续期」后,定时任务才会在窗口内重新申请。创建前需要同意 ACME 服务条款。
密钥可选 EC P-256 或 RSA 2048。
证书状态:
| 状态 | 含义 |
|---|---|
| 草稿 | 已创建,尚未成功签发 |
| 签发中 | 正在向证书机构申请 |
| 已签发 | 证书材料已保存,尚未部署到 Nginx |
| 已部署 | 证书文件已写入目录,并完成重启或重载 |
| 失败 | 本次申请或部署没有成功,可在任务里查看原因 |
一次执行分成三段:
- 提取:按当前登录租户读取证书、ACME 账户和 Nginx 目标。还没进入续期窗口时停止,避免无意义地重复申请。
- 申请:按所选验证方式向证书机构申请。
- 部署:仅在需要部署时执行。按主域名覆盖证书目录里的
域名.pem和域名.key。例如*.nbsaas.com写成nbsaas.com.pem与nbsaas.com.key。接着执行nginx -t,通过后再重启或重载。检测失败会恢复旧文件。平台不修改 Nginx 配置文件,配置里需要事先写好这两个文件的路径。
可以只申请、不部署。DNS-01 创建证书时不选 Nginx 即可。HTTP-01 仍要借用 Nginx 的网站根目录完成验证,但可以只申请、不立刻重启。库里还没有证书材料时,「部署」会沿用磁盘上已有的证书文件,只做重启。
域名验证
HTTP-01 把挑战文件写到 Nginx 的网站根目录,例如 /var/www/acme/.well-known/acme-challenge/。签发前,域名必须能通过 80 端口访问到这个目录。适合已经解析到本机、且可以开放 80 端口的站点。
DNS-01 调用 ACME 账户绑定的云厂商 DNS,写入 _acme-challenge TXT 记录,等待解析生效后再完成验证。通配符证书只能走这条路径。耗时通常长于 HTTP-01。
证书机构与 DNS
创建 ACME 数据源时填写联系邮箱,并选择证书机构。平台会生成账户私钥。可以创建后立即注册,也可以稍后在列表里点「注册」。密钥不会出现在接口响应里;更新时把密钥留空,表示保留原值。
内置机构:
| 机构 | 说明 |
|---|---|
| Let's Encrypt 生产环境 | 浏览器信任,用于正式域名 |
| Let's Encrypt 测试环境 | 不消耗生产额度,证书不受浏览器信任。默认目录是测试环境 |
| ZeroSSL | 需要在 ZeroSSL 控制台创建外部账号绑定(EAB) |
| Google Trust Services | 需要 Google Public CA 的 EAB 密钥 |
| Buypass / Buypass 测试环境 | 测试环境证书不受浏览器信任 |
| SSL.com | 需要 SSL.com 提供的 EAB 密钥 |
| 自定义目录 | 填写任意兼容 RFC 8555 的 ACME 目录地址 |
生产环境目录是 https://acme-v02.api.letsencrypt.org/directory。
DNS-01 可绑定的云厂商:
- 阿里云 DNS
- 腾讯云 DNS、DNSPod Token
- 华为云 DNS
- 百度智能云 DNS
- 火山引擎 DNS
- Amazon Route 53
- Azure DNS(公共云、中国区、美国政府云)
- Google Cloud DNS
- Cloudflare
- DigitalOcean
不绑定云厂商时,该账户只能做 HTTP-01。
下载证书
已签发的证书可以下载三种压缩包,尚未签发时不能下载。列表里能看到到期时间和剩余天数。私钥不会出现在列表和详情里,只能通过下载取出。
| 格式 | 压缩包内容 |
|---|---|
| Nginx | 域名.pem、域名.key,以及一份仅供对照的 nginx.conf。自动部署不会把这份配置写到服务器上 |
| httpd | server.crt、server.key、chain.crt、httpd.conf。没有中间证书时省略证书链。apache 与此相同 |
| IIS | certificate.pfx 和 iis.txt。下载时填写 8 到 64 位密码,PFX 使用 IIS 可导入的传统 PKCS#12 |
部署到 Nginx
Nginx 数据源记录这些信息:
nginx程序路径,例如/usr/sbin/nginx- 服务管理方式:向进程发信号,或通过 systemd
- 动作:重启或重载。默认是重启
- systemd 服务名
- HTTP-01 网站根目录
- 证书目录,例如
/usr/local/nginx/conf/certs - 是否在重启前执行
nginx -t - 是否演练:只写文件,不重启
信号模式执行 nginx -s quit 后再启动;systemd 模式执行 systemctl restart nginx。可执行程序只允许 nginx、systemctl、service,参数按数组传递,不经过 shell。
自动续期
调度绑定一条签发流水线,使用五段 Cron,例如每天凌晨 3 点 15 分:15 3 * * *。可以随时启用或停用,页面上能看到下次执行时间和上次结果。
续期时,没有绑定 Nginx 的证书只会重新申请。已绑定 Nginx 的证书在窗口内会申请并部署。证书上的「允许调度自动续期」关闭后,定时任务不会改这张证书。
权限与租户
数据按租户隔离。请求里不能自行指定租户,租户只从登录令牌解析。
首次启动会创建默认租户和三个内置角色:
| 角色 | 能做的事 |
|---|---|
| 管理员 | 当前租户的全部权限,含用户、角色和授权 |
| 运维 | 申请、部署证书,管理数据源、流水线和调度 |
| 只读 | 查看证书、任务、流水线、数据源、用户和角色 |
管理员角色的权限固定为全部,不能在页面上裁剪。其他角色可以按资源动作勾选,例如「单独申请证书」「下载证书」「部署证书并重启 Nginx」。
默认管理员用户名是 admin。密码来自环境变量 SSL_ADMIN_PASSWORD,未设置时是 Admin@123456。这个账号只在空库时创建,登录后应立即修改密码。
怎么运行
三种常见方式,控制台默认都在 http://127.0.0.1:8080。
单个程序。 前端构建后打进二进制。启动后由程序自己托管页面,浏览器直接访问,不需要单独的前端服务。
Docker Compose。 同一容器里运行 Nginx 和控制台。80 端口提供 HTTP-01 目录,8080 是控制台。初始化后会写入容器内的 ACME 账户和 Nginx 数据源,证书目录是 /usr/local/nginx/conf/certs。
Linux systemd。 用安装脚本注册服务,程序放在 /usr/local/bin/sslplatform,配置在 /etc/sslplatform,数据在 /var/lib/sslplatform。首次安装会生成管理员密码并写到 /etc/sslplatform/initial-admin.txt。服务以 root 运行,以便写入 Nginx 证书目录并执行重启。再次安装只替换程序,已有配置、密钥和管理员密码保持不变。卸载默认保留配置和数据库。
也可以在 Windows 上一次打出 Linux、Windows、macOS 的可执行文件和压缩包,覆盖 amd64、arm64 以及 32 位 ARM。压缩包里带配置和启动脚本。
使用时要注意
- 默认 ACME 目录是 Let's Encrypt 测试环境,证书不受浏览器信任。正式站点要改成生产目录。
- Nginx 配置需要事先指向证书目录里的
域名.pem和域名.key。平台只替换这两个文件。 - HTTP-01 依赖 80 端口和网站根目录;通配符必须使用已绑定云厂商 DNS 的账户。
- 私钥保存在本机 SQLite 中,数据库文件权限为
0600。下载和部署是取出私钥的途径,列表和详情不会返回私钥。 - 云厂商密钥建议使用最小权限,例如只授予对应 DNS 产品的管理权限。