sgcSign 服务器
一个自托管远程代码签名守护进程,将 sgcSign 引擎封装在 REST API、Bootstrap Web 管理台和内置 CI/CD 流水线背后。
一个自托管远程代码签名守护进程,将 sgcSign 引擎封装在 REST API、Bootstrap Web 管理台和内置 CI/CD 流水线背后。
单台 Windows 主机接受来自构建代理、开发者和 CI 流水线的签名请求——内置完整审计、审批和指标功能。
TLS 加密的 /api/v1 端点,用于签名、验证、健康检查、指标和审批工作流。为构建代理和 SDK 提供稳定、机器友好的接口。
基于 Bootstrap 的 /admin UI,用于管理用户、API 密钥、提供者、项目、审计、审批、Webhook 和指标。运营者无需编辑 JSON。
Inno Setup 向导或 zip 解压安装。守护进程自我注册为 Windows 服务,自行终止 TLS,在加固的主机上无人值守运行。
每个项目隔离一组提供者、API 密钥、审计可见性和审批队列。多个团队共享一台服务器,互不查看对方的签名材料。
同一 API 密钥发起请求,管理员或项目管理员批准或拒绝,之后才对字节进行签名。SHA-256 哈希和文件大小被锁定到请求中。
每个操作——签名、验证、登录、审批、Webhook 触发——都追加到哈希链审计日志中。篡改可被检测;SIEM 抓取简单直接。
签名/验证/审批计数器、签名延迟直方图、提供者可用性仪表。直接 Prometheus 0.0.4 文本格式输出,无需管理额外数据库。
13 个生命周期事件通过 X-Sgcsign-Signature: sha256=… 发送。三次重试队列保持 SIEM、聊天和工单系统同步。
与组件库相同的引擎,通过 REST API 公开。支持每个国家配置文件,每个签名等级。
用于 VeriFactu、FatturaPA、Facturae、KSeF、e-Factura、Peppol、myDATA 和 EU 劳动合同的 XML 签名。POST /api/v1/sign/xades。
PAdES-Basic PDF 签名,增量更新保留原始内容。支持可见或不可见签名。POST /api/v1/sign/pades。
针对任意二进制数据的 CMS / PKCS#7 分离或附属签名。时间戳 + 长期验证。POST /api/v1/sign/cades。
签名守护进程与您配置的任何证书源通信:Windows 存储、PFX、PKCS#11 硬件令牌、Azure Trusted Signing、AWS KMS、Google KMS。
对 .exe、.dll、.msi、.cab、.cat、.ocx、.sys 签名。纯哈希模式使低带宽运行器只需传输几十字节即可获得 8 KB PKCS#7 数据块。
对 ClickOnce 清单(.application / .manifest)签名,使 Windows 客户端安装时无需信任提示。POST /api/v1/sign/clickonce。
对 .nupkg 包签名,使 NuGet 客户端验证发布者身份。支持作者签名和仓库签名。POST /api/v1/sign/nuget。
对 Visual Studio 扩展包签名,使 VS Marketplace 和 IDE 本身将其视为可信。POST /api/v1/sign/vsix。
构建代理调用稳定的 REST 端点,而非在每个运行器上安装签名证书。
复合操作将制品发布到服务器的 REST API。令牌由 Web 管理台颁发,限定于特定项目,永远不离开运行器密钥存储。
流水线任务运行 sgcSign CLI 客户端,上传二进制文件,如需审批则轮询状态,并下载已签名的结果——一步完成。
使用 curl 或内置 CLI 的声明式流水线片段。支持 Linux 和 Windows 代理;签名作为构建制品出现。
包含守护进程和示例提供者配置的镜像。运行容器,挂载 TLS 证书 + 提供者密钥,即可获得便携式签名服务。
在 Kubernetes 上部署,实现完全冗余、横向扩展的签名服务。与云 KMS(Azure Trusted Signing、AWS KMS、Google KMS)配合,实现无密钥 Pod。
单个 Windows 服务终止 TLS,公开 /api/v1 + /admin,每次调用时访问配置的密钥提供者。密钥材料永远不存储在数据库中。
/api/v1。
/admin。Bootstrap UI、会话 Cookie、基于角色的访问控制。
+----------------------------+
| Build agents / CI / CLI |
+-------------+--------------+
|
| HTTPS (TLS 1.2/1.3)
v
+-------------------------------------------+
| sgcSignServer.exe (Windows service) |
| /api/v1/* (signing, verify, health) |
| /admin/* (web console, sessions) |
+---+-----------------+---------------------+
| | |
v v v
+-------------+ +---------------+ +-----------+
| SQLite DB | | KeyProviders | | Webhooks |
| (audit/keys)| | PFX/HSM/KMS | | (outbound)|
+-------------+ +---------------+ +-----------+
curl 命令即可完成一个 Bearer API 密钥、一个多部分上传,已签名的二进制文件流式返回到标准输出。Authenticode、CAdES、PAdES、XAdES、ClickOnce、NuGet、VSIX 共享相同的形式。
X-API-Key 或 Authorization: Bearer——两种认证方式均可使用。
X-Project 选择租户;密钥必须授权用于该项目。
X-Sgcsign-Signer-Subject + X-Sgcsign-Duration-Ms 用于日志关联。
# Authenticode-sign MyApp.exe via the REST API
curl -X POST https://sign.example.com/api/v1/sign \
-H "Authorization: Bearer $TOKEN" \
-H "X-Project: production" \
-F "format=authenticode" \
-F "file=@./MyApp.exe" \
-o MyApp-signed.exe
# Headers returned by the server
# X-Sgcsign-Signer-Subject: CN=ACME Corp, O=ACME, C=US
# X-Sgcsign-Duration-Ms: 312
从全新 Windows 主机到第一个已签名制品,不超过五分钟。
运行内置 Inno Setup 向导,或将 zip 解压到文件夹。守护进程自我注册为名为 sgcSignServer 的 Windows 服务。绑定到 :8443 并加载您的 TLS 证书。
向 sgcSignServer.conf.json 添加提供者——PFX 文件、Azure Trusted Signing 账户、AWS KMS 密钥、Certum SimplySign 用户,或其他任何密钥提供者。无需重启服务。
打开 /admin/apikeys,点击新建 API 密钥,将其限定于某个项目,将令牌复制到 CI 运行器密钥中。构建代理调用 POST /api/v1/sign。