sgcSign Server

sgcSign エンジンを REST API、Bootstrap ウェブ管理コンソール、すぐに使える CI/CD パイプラインの背後に配置したセルフホスト型リモートコード署名デーモンです。

REST API + ウェブ管理
7 種類の署名フォーマット
マルチテナントプロジェクト
ハッシュチェーン監査ログ

提供される機能

単一の Windows ホストがビルドエージェント、開発者、CI パイプラインからの署名リクエストを受け付けます — 完全な監査、承認、メトリクスが組み込まれています。

REST API

署名、検証、ヘルス、メトリクス、承認ワークフロー向けの TLS セキュア /api/v1 エンドポイント。ビルドエージェントと SDK 向けの安定したマシンフレンドリーなコントラクトです。

ウェブ管理コンソール

ユーザー、API キー、プロバイダー、プロジェクト、監査、承認、Webhook、メトリクス向けの Bootstrap ベースの /admin UI。オペレーターが JSON を編集する必要はありません。

Windows サービスインストーラー

Inno Setup ウィザードまたは zip ドロップ。デーモンは自身を Windows サービスとして登録し、TLS を自身で終端処理して、セキュアなホストでアンアテンデド実行します。

マルチテナントプロジェクト

Each project isolates a subset of providers, API keys, audit visibility, and approval queues. Several teams share one server without seeing each other's signing material.

2 段階承認ワークフロー

同じ API キーでリクエストし、管理者またはプロジェクト管理者が承認または却下し、その後にのみバイトが署名されます。SHA-256 ハッシュとファイルサイズがリクエストにロックされます。

SHA-256 監査ログ

すべてのアクション — 署名、検証、ログイン、承認、Webhook 起動 — がハッシュチェーン監査ログに追記されます。改ざんは検出可能で、SIEM スクレイピングも簡単です。

Prometheus メトリクス

署名/検証/承認カウンター、署名レイテンシヒストグラム、プロバイダー可用性ゲージ。追加データベースなしの Prometheus 0.0.4 テキスト形式で直接公開します。

HMAC 署名 Webhook

13 のライフサイクルイベントが X-Sgcsign-Signature: sha256=… とともに配信されます。3 回のリトライキューにより 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 パッケージ

.nupkg パッケージに署名して NuGet クライアントが発行者の身元を検証できるようにします。作成者とリポジトリの署名をサポートしています。POST /api/v1/sign/nuget

VSIX 拡張機能

Visual Studio 拡張機能パッケージに署名して VS Marketplace と IDE が信頼済みとして受け入れるようにします。POST /api/v1/sign/vsix

あらゆる主要パイプラインにすぐ組み込める

ビルドエージェントはすべてのランナーに署名証明書をインストールする代わりに安定した REST エンドポイントを呼び出します。

GitHub Actions

コンポジットアクションがアーティファクトをサーバーの REST API に送信します。ウェブ管理で発行されたトークンはプロジェクトにスコープされ、ランナーのシークレットストアから外れることはありません。

Azure DevOps

パイプラインタスクが sgcSign CLI クライアントを実行し、バイナリをアップロードし、必要に応じて承認を待機して、署名済み結果をダウンロードします — すべてワンステップで行えます。

Jenkins

curl またはバンドルされた CLI を使用した宣言型パイプラインスニペット。Linux と Windows の両方のエージェントで動作し、署名がビルドアーティファクトとして表示されます。

Docker

デーモンとサンプルプロバイダー設定を含むイメージ。コンテナを実行し、TLS 証明書とプロバイダーシークレットをマウントすれば、ポータブルな署名サービスが完成します。

Helm チャート

Kubernetes にデプロイして完全冗長でスケールアウトした署名を実現します。クラウド KMS(Azure Trusted Signing、AWS KMS、Google KMS)と組み合わせてキーレスポッドを実現できます。

各コンポーネントの連携方法

単一の Windows サービスが TLS を終端処理し、/api/v1 + /admin を公開し、すべての呼び出しで設定されたキープロバイダーにアクセスします。キーマテリアルはデータベースに保存されません。

単一バイナリ、3 つのインターフェース

  • ビルドエージェントは Bearer API キーを使用して HTTPS 経由で /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 キー、マルチパートアップロード、そして署名済みバイナリが stdout にストリーミングされます。Authenticode、CAdES、PAdES、XAdES、ClickOnce、NuGet、VSIX はすべて同じ形式を使用します。

1 回の呼び出しで .exe に署名する

  • X-API-Key または Authorization: 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

署名済みバイナリまで 3 ステップ

新しい Windows ホストから最初の署名済みアーティファクトまで 5 分以内。

1

インストール

バンドルされた Inno Setup ウィザードを実行するか、zip をフォルダーにドロップします。デーモンは sgcSignServer という名前の Windows サービスとして自身を登録します。:8443 にバインドして TLS 証明書を読み込みます。

2

キープロバイダーを設定する

sgcSignServer.conf.json にプロバイダーを追加します — PFX ファイル、Azure Trusted Signing アカウント、AWS KMS キー、Certum SimplySign ユーザー、またはその他 10 種類のキープロバイダーのいずれか。サービスの再起動は不要です。

3

トークンを発行して API を呼び出す

/admin/apikeys を開き、新しい API キーをクリックしてプロジェクトにスコープし、トークンを CI ランナーのシークレットにコピーします。ビルドエージェントが POST /api/v1/sign を呼び出します。

ビルドファーム全体で署名を一元管理する

すべてのビルドエージェントに署名証明書をコピーする作業を止めましょう。sgcSign Server 一台、REST エンドポイント一つで、完全な監査と承認が実現します。