sgcSign 服务器

一个自托管远程代码签名守护进程,将 sgcSign 引擎封装在 REST API、Bootstrap Web 管理台和内置 CI/CD 流水线背后。

REST API + Web 管理台
7 种签名格式
多租户项目
哈希链审计日志

您将获得

单台 Windows 主机接受来自构建代理、开发者和 CI 流水线的签名请求——内置完整审计、审批和指标功能。

REST API

TLS 加密的 /api/v1 端点,用于签名、验证、健康检查、指标和审批工作流。为构建代理和 SDK 提供稳定、机器友好的接口。

Web 管理台

基于 Bootstrap 的 /admin UI,用于管理用户、API 密钥、提供者、项目、审计、审批、Webhook 和指标。运营者无需编辑 JSON。

Windows 服务安装程序

Inno Setup 向导或 zip 解压安装。守护进程自我注册为 Windows 服务,自行终止 TLS,在加固的主机上无人值守运行。

多租户项目

每个项目隔离一组提供者、API 密钥、审计可见性和审批队列。多个团队共享一台服务器,互不查看对方的签名材料。

两步审批工作流

同一 API 密钥发起请求,管理员或项目管理员批准或拒绝,之后才对字节进行签名。SHA-256 哈希和文件大小被锁定到请求中。

SHA-256 审计日志

每个操作——签名、验证、登录、审批、Webhook 触发——都追加到哈希链审计日志中。篡改可被检测;SIEM 抓取简单直接。

Prometheus 指标

签名/验证/审批计数器、签名延迟直方图、提供者可用性仪表。直接 Prometheus 0.0.4 文本格式输出,无需管理额外数据库。

HMAC 签名的 Webhook

13 个生命周期事件通过 X-Sgcsign-Signature: sha256=… 发送。三次重试队列保持 SIEM、聊天和工单系统同步。

XAdES · PAdES · CAdES

与组件库相同的引擎,通过 REST API 公开。支持每个国家配置文件,每个签名等级。

XAdES

用于 VeriFactu、FatturaPA、Facturae、KSeF、e-Factura、Peppol、myDATA 和 EU 劳动合同的 XML 签名。POST /api/v1/sign/xades

PAdES

PAdES-Basic PDF 签名,增量更新保留原始内容。支持可见或不可见签名。POST /api/v1/sign/pades

CAdES

针对任意二进制数据的 CMS / PKCS#7 分离或附属签名。时间戳 + 长期验证。POST /api/v1/sign/cades

Authenticode、ClickOnce、NuGet、VSIX

签名守护进程与您配置的任何证书源通信:Windows 存储、PFX、PKCS#11 硬件令牌、Azure Trusted Signing、AWS KMS、Google KMS。

Authenticode

.exe.dll.msi.cab.cat.ocx.sys 签名。纯哈希模式使低带宽运行器只需传输几十字节即可获得 8 KB PKCS#7 数据块。

ClickOnce

对 ClickOnce 清单(.application / .manifest)签名,使 Windows 客户端安装时无需信任提示。POST /api/v1/sign/clickonce

NuGet Packages

.nupkg 包签名,使 NuGet 客户端验证发布者身份。支持作者签名和仓库签名。POST /api/v1/sign/nuget

VSIX Extensions

对 Visual Studio 扩展包签名,使 VS Marketplace 和 IDE 本身将其视为可信。POST /api/v1/sign/vsix

适用于所有主流流水线的即插即用

构建代理调用稳定的 REST 端点,而非在每个运行器上安装签名证书。

GitHub Actions

复合操作将制品发布到服务器的 REST API。令牌由 Web 管理台颁发,限定于特定项目,永远不离开运行器密钥存储。

Azure DevOps

流水线任务运行 sgcSign CLI 客户端,上传二进制文件,如需审批则轮询状态,并下载已签名的结果——一步完成。

Jenkins

使用 curl 或内置 CLI 的声明式流水线片段。支持 Linux 和 Windows 代理;签名作为构建制品出现。

Docker

包含守护进程和示例提供者配置的镜像。运行容器,挂载 TLS 证书 + 提供者密钥,即可获得便携式签名服务。

Helm Chart

在 Kubernetes 上部署,实现完全冗余、横向扩展的签名服务。与云 KMS(Azure Trusted Signing、AWS KMS、Google KMS)配合,实现无密钥 Pod。

各组件如何协同工作

单个 Windows 服务终止 TLS,公开 /api/v1 + /admin,每次调用时访问配置的密钥提供者。密钥材料永远不存储在数据库中。

单一二进制,三个接口

  • 构建代理通过 HTTPS 使用 Bearer API 密钥访问 /api/v1
  • 运营者在任何浏览器中登录 /admin。Bootstrap UI、会话 Cookie、基于角色的访问控制。
  • 密钥提供者按需从 PFX、Windows 存储、PKCS#11、Azure TS、AWS KMS、GCloud KMS、Vault、Certum、CSC v2 获取。
  • SQLite 数据库持久化用户、API 密钥、审计日志、会话和 Webhook 队列。永远不存储密钥材料本身。
  • Webhook 在每个审计事件上异步触发到 SIEM 和聊天系统。
topology.txt
                +----------------------------+
                |   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 共享相同的形式。

一次调用签署 .exe

  • X-API-KeyAuthorization: Bearer——两种认证方式均可使用。
  • X-Project 选择租户;密钥必须授权用于该项目。
  • 响应携带 X-Sgcsign-Signer-Subject + X-Sgcsign-Duration-Ms 用于日志关联。
  • Authenticode 纯哈希模式:发送 SHA-256,接收一个小的 PKCS#7 数据块。
sign-binary.sh
# 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 主机到第一个已签名制品,不超过五分钟。

1

安装

运行内置 Inno Setup 向导,或将 zip 解压到文件夹。守护进程自我注册为名为 sgcSignServer 的 Windows 服务。绑定到 :8443 并加载您的 TLS 证书。

2

配置密钥提供者

sgcSignServer.conf.json 添加提供者——PFX 文件、Azure Trusted Signing 账户、AWS KMS 密钥、Certum SimplySign 用户,或其他任何密钥提供者。无需重启服务。

3

颁发令牌,调用 API

打开 /admin/apikeys,点击新建 API 密钥,将其限定于某个项目,将令牌复制到 CI 运行器密钥中。构建代理调用 POST /api/v1/sign

集中管理构建场中的签名

停止将签名证书复制到每个构建代理。一台 sgcSign 服务器、一个 REST 端点、完整审计和审批。