sgcSign Server

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

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

提供される機能

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

REST API

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

ウェブ管理コンソール

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

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

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

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

各プロジェクトでは、プロバイダー、APIキー、監査ログの閲覧範囲、承認キューの一部を分離できます。複数のチームが1台のサーバーを共有しても、互いの署名用マテリアルが見えることはありません。

2 段階承認ワークフロー

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

SHA-256 監査ログ

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

Prometheus メトリクス

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

HMAC 署名 Webhook

21 のライフサイクルイベントが 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。

チェコ EET 2.0

サーバーが保持するキーで登録済みの売上を構築して署名し、必要に応じて税務当局に送信して応答を返します。チェーン店の複数のレジで 1 つの納税者証明書を共有できます。POST /api/v1/sign/eet。

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 ブロブと交換できます。--page-hashes(API では page_hashes)を追加すると、signtool /ph と同様にカーネルモードドライバーにページハッシュを付けられます。

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。

セキュリティとアクセス

管理コンソールのサインインを強化し、ディスク上のシークレットを暗号化します。パスワードが盗まれたり、設定ファイルがコピーされたりしても、署名キーは開かれません。

2 要素サインイン

コンソールアカウントでは、任意の TOTP 認証アプリが生成する 6 桁のコードを追加し、スマートフォンを紛失した場合に備えて 10 個の使い捨てリカバリーコードを用意します。admin.require_2fa を設定すると、すべてのコンソールユーザーは他のページに進む前に登録を完了する必要があります。紛失した第 2 要素は管理者がリセットできます。

OpenID Connect サインイン

PKCE を使った認可コードフローで、Microsoft Entra ID、Okta、Keycloak、Google、または標準的な OpenID Connect プロバイダーからコンソールにサインインできます。ユーザーは外部 ID を自分のアカウントにリンクでき、新規ユーザーは管理者が承認するアカウントを任意で申請できます。

コンソールの堅牢化

すべてのレスポンスにセキュリティヘッダーと厳格なコンテンツセキュリティポリシーが付きます。パスワードポリシーは設定可能で、一時パスワードは初回サインイン時に変更が必要です。また、ロールや権限が変わるとセッションはただちに終了します。

保存時に暗号化されるシークレット

プロバイダーのパスワード、PIN、クラウド認証情報、Webhook シークレットは、マシンに紐付いたマスターキー(Windows では DPAPI)のもとで AES-256-GCM により暗号化して保存されます。sgcSignServer --protect-secrets は既存の設定をその場で暗号化します。

署名制御とタイムスタンプ

サーバーは、誰が、どのキーで、誰の承認を得たうえで署名できるかを決定します。1 台のタイムスタンプサーバーが停止していても、すべての署名にタイムスタンプが付きます。

承認の強制

プロバイダーまたはプロジェクト全体を承認必須にすると、サーバーは approval_required を返して直接署名を拒否します。承認 1 件につき署名は 1 回のみです。このルールは、signtool /dlib 向けの生ダイジェスト署名を含め、すべての署名経路で適用されます。

API キーのライフサイクル

キーを再生成しても、古いシークレットは最大 7 日間有効なままです。有効期限の編集、所有者の確認、許可するプロバイダーの一覧による制限も行えます。api_keys.self_service を使うと、オペレーターは設定した制限の範囲内で自分のキーを作成、管理できます。 キーは初回利用時から有効期間を開始させることもできます。最初の認証済み呼び出しから N 日間有効で、「有効化期限」の日付が必須のため、未使用のキーが無期限に有効なまま残ることはありません。サブキーは親キーが有効化されてから初めて動作し、有効化は監査ログに apikey.activate として記録され、Community エディションでは両方の値が 30 日に制限されます。

PKCS#11 PIN リトライガード

サーバーはトークンごとに誤った PIN の結果を数え、max_pin_attempts に達するとログインを停止します。そのため、設定内の誤った PIN によってハードウェアトークンがロックされることはありません。最後の試行は allow_final_pin_try を指定した場合にのみ使われ、管理者はコンソールからガードをリセットできます。

CLI 保存プロファイル

sgcsign config はサーバー、プロバイダーなどの設定を名前付きプロファイルに保存し、sgcsign auth set-key は API キーを保存します。ビルドスクリプトで毎回指定する必要がなくなります。Delphi CLI と .NET ツール esegece.sgcsign.cli は同じファイルを共有します。

自動フォールバック付きタイムスタンプ

  • サーバー全体の既定 RFC 3161 タイムスタンプサーバーの一覧を、応答があるまで順番に試行します。
  • プロバイダーごとの tsa_urls 一覧と、タイムスタンプを付けてはならないリクエスト向けの no_timestamp。
  • sgcsign timestamp は、すでに Authenticode 署名済みのファイルに、同じフォールバックでタイムスタンプを追加します。
timestamps
# sgcSignServer.conf.json
"timestamp": {
  "servers": ["http://timestamp.digicert.com", "http://timestamp.sectigo.com"],
  "timeout_ms": 30000
}

# 署名済みのファイルにタイムスタンプを付ける
sgcsign timestamp MyApp.exe --tsa http://timestamp.digicert.com --tsa http://timestamp.sectigo.com

バックアップ、監視、セットアップ

サーバーを何年も予期せぬ問題なく運用できます。暗号化バックアップ、証明書の期限切れ前の警告、人の対応が必要なときのメール、そして Windows インストーラーを備えています。

暗号化されたスケジュールバックアップ

1 つのアーカイブに、設定、データベース、マスターキー、およびすべてのキーと証明書ファイルが含まれ、パスフレーズのもとで AES-256-GCM により暗号化されます。アーカイブはスケジュールまたはコンソールから実行でき、sgcSignServer --archive restore は同じマシン上でサーバーを再構築するか、新しいマシンへ移行します。

証明書の有効期限監視

署名証明書とサーバーの TLS 証明書は、起動時と毎日チェックされます。残り 30 日、14 日、7 日、1 日の警告はダッシュボードに表示され、cert.expiring Webhook、メール、sgcsign_certificate_not_after_seconds メトリクスとして送信されます。

メール通知

アカウントがロックアウトされたとき、2 要素認証やパスワードが変更されたとき、バックアップが失敗したとき、証明書の期限が近づいたときにメールが届きます。SMTP は STARTTLS または暗黙的 TLS に対応し、Windows ではメーラーに OpenSSL ライブラリは不要です。

Windows インストーラー

sgcSignServer_Setup.exe は、サーバーを Windows サービスとしてインストールし、最初の管理者を作成して、ファイアウォールのポートを開きます。TLS には、生成される自己署名証明書、既存の PFX ファイル、またはテストマシン向けのプレーン HTTP を使用できます。

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

単一の 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 を呼び出します。

最もお得な選択: All-AccesseSeGeCe の全製品にプレミアムサポートが付いて、年間 €1,059 からご利用いただけます。
All-Access の価格を見る

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

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