sgcSign Server

Samodzielnie hostowany demon zdalnego podpisywania kodu, który obudowuje silnik sgcSign interfejsem REST API, konsolą administracyjną Bootstrap i gotowymi pipeline'ami CI/CD.

REST API + panel administracyjny
7 formatów podpisu
Projekty wielodostępne
Dziennik audytu z łańcuchem haszowym

Co otrzymujesz

Jeden host Windows przyjmuje żądania podpisywania od agentów buildu, deweloperów i pipeline'ów CI — z wbudowanym pełnym audytem, zatwierdzeniami i metrykami.

REST API

Zabezpieczone TLS punkty końcowe /api/v1 do podpisywania, weryfikacji, sprawdzania stanu, metryk i przepływów zatwierdzeń. Stabilny, maszynowo-przyjazny kontrakt dla agentów buildu i SDK.

Panel administracyjny

Interfejs /admin oparty na Bootstrap do zarządzania użytkownikami, kluczami API, dostawcami, projektami, audytem, zatwierdzeniami, webhookami i metrykami. Operatorzy nie muszą edytować JSON.

Instalator usługi Windows

Kreator Inno Setup lub wrzucenie ZIP. Demon rejestruje się jako usługa Windows, sam obsługuje TLS i działa bezobsługowo na zabezpieczonym hoście.

Projekty wielodostępne

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.

Dwuetapowy przepływ zatwierdzeń

Ten sam klucz API składa żądanie, administrator lub administrator projektu zatwierdza albo odrzuca, i dopiero wtedy bajty są podpisywane. Hash SHA-256 i rozmiar pliku są zablokowane w żądaniu.

Dziennik audytu SHA-256

Każde działanie — podpisanie, weryfikacja, logowanie, zatwierdzenie, wywołanie webhooka — jest dołączane do dziennika audytu z łańcuchem haszowym. Manipulacje są wykrywalne; scrapowanie SIEM jest proste.

Metryki Prometheus

Liczniki podpisywania / weryfikacji / zatwierdzeń, histogramy opóźnień podpisywania, mierniki dostępności dostawcy. Bezpośrednia ekspozycja tekstu Prometheus 0.0.4 bez dodatkowej bazy danych do zarządzania.

Webhooki podpisane HMAC

13 zdarzeń cyklu życia dostarczanych z X-Sgcsign-Signature: sha256=…. Kolejka ponownych prób (trzy próby) synchronizuje systemy SIEM, czat i tickety.

XAdES · PAdES · CAdES

Ten sam silnik co w bibliotece, udostępniony przez REST API. Każdy profil krajowy, każdy poziom podpisu.

XAdES

Podpisy XML dla VeriFactu, FatturaPA, Facturae, KSeF, e-Factura, Peppol, myDATA i unijnych umów o pracę. POST /api/v1/sign/xades.

PAdES

Podpisy PDF PAdES-Basic z aktualizacjami przyrostowymi zachowującymi oryginalną treść. Widoczne lub niewidoczne podpisy. POST /api/v1/sign/pades.

CAdES

Podpisy CMS / PKCS#7 odłączone lub dołączone dla dowolnych danych binarnych. Znacznik czasu + długoterminowa walidacja. POST /api/v1/sign/cades.

Authenticode, ClickOnce, NuGet, VSIX

Demon podpisywania komunikuje się z dowolnie skonfigurowanym źródłem certyfikatów: magazyn Windows, PFX, token sprzętowy PKCS#11, Azure Trusted Signing, AWS KMS, Google KMS.

Authenticode

Podpisuje .exe, .dll, .msi, .cab, .cat, .ocx, .sys. Tryb tylko-hash pozwala agentom o małej przepustowości wymienić kilkadziesiąt bajtów na 8 KB obiekt PKCS#7.

ClickOnce

Podpisuje manifesty ClickOnce (.application / .manifest), aby klienty Windows instalowały bez monitów o zaufanie. POST /api/v1/sign/clickonce.

Pakiety NuGet

Podpisuje pakiety .nupkg, aby klient NuGet weryfikował tożsamość wydawcy. Obsługuje podpisy autora i repozytorium. POST /api/v1/sign/nuget.

Rozszerzenia VSIX

Podpisuje pakiety rozszerzeń Visual Studio, aby VS Marketplace i samo IDE akceptowały je jako zaufane. POST /api/v1/sign/vsix.

Gotowe dla każdego głównego pipeline'u

Agenty buildu wywołują stabilny punkt końcowy REST zamiast instalować certyfikaty podpisywania na każdym runnerze.

GitHub Actions

Akcja złożona wysyła artefakt do REST API serwera. Token wydany przez panel administracyjny, ograniczony do projektu, nigdy nie opuszcza magazynu sekretów runnera.

Azure DevOps

Zadanie pipeline uruchamia klienta CLI sgcSign, który przesyła plik binarny, sprawdza zatwierdzenie jeśli wymagane i pobiera podpisany wynik — wszystko w jednym kroku.

Jenkins

Fragment deklaratywnego pipeline'u używający curl lub dołączonego CLI. Działa zarówno z agentami Linux, jak i Windows; podpis pojawia się jako artefakt buildu.

Docker

Obraz z demonem i przykładową konfiguracją dostawcy. Uruchom kontener, podmontuj certyfikat TLS i sekrety dostawcy — i masz przenośną usługę podpisywania.

Helm Chart

Wdrażaj na Kubernetes dla w pełni redundantnego, skalowalnego podpisywania. Łącz z chmurowym KMS (Azure Trusted Signing, AWS KMS, Google KMS) dla podów bez kluczy.

Jak elementy pasują do siebie

Jedna usługa Windows obsługuje TLS, udostępnia /api/v1 + /admin i kontaktuje się ze skonfigurowanym dostawcą klucza przy każdym wywołaniu. Materiał kluczowy nigdy nie trafia do bazy danych.

Jeden plik binarny, trzy interfejsy

  • Agenty buildu wywołują /api/v1 przez HTTPS z kluczem API bearer.
  • Operatorzy logują się do /admin w dowolnej przeglądarce. Interfejs Bootstrap, ciasteczka sesji, dostęp oparty na rolach.
  • Dostawcy kluczy pobierani na żądanie z PFX, magazynu Windows, PKCS#11, Azure TS, AWS KMS, GCloud KMS, Vault, Certum, CSC v2.
  • Baza danych SQLite przechowuje użytkowników, klucze API, dziennik audytu, sesje i kolejkę webhooków. Nigdy samego materiału kluczowego.
  • Webhooki są wysyłane asynchronicznie do systemów SIEM i czatu przy każdym zdarzeniu audytowanym.
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)|
     +-------------+   +---------------+   +-----------+

Jedno wywołanie curl

Klucz API bearer, przesyłanie wieloczęściowe i podpisany plik binarny przesyłany strumieniowo z powrotem do stdout. Authenticode, CAdES, PAdES, XAdES, ClickOnce, NuGet, VSIX mają ten sam kształt.

Podpisz plik .exe jednym wywołaniem

  • X-API-Key lub Authorization: Bearer — obie metody uwierzytelniania działają.
  • X-Project wybiera dzierżawcę; klucz musi być autoryzowany dla projektu.
  • Odpowiedź zawiera X-Sgcsign-Signer-Subject + X-Sgcsign-Duration-Ms do korelacji logów.
  • Tryb tylko-hash dla Authenticode: wysyłasz SHA-256, otrzymujesz małą strukturę 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

Trzy kroki do podpisanego pliku binarnego

Od świeżego hosta Windows do pierwszego podpisanego artefaktu w mniej niż pięć minut.

1

Instalacja

Uruchom dołączony kreator Inno Setup lub wrzuć ZIP do folderu. Demon rejestruje się jako usługa Windows o nazwie sgcSignServer. Powiąż z :8443 i załaduj certyfikat TLS.

2

Skonfiguruj dostawcę klucza

Dodaj dostawcę do sgcSignServer.conf.json — plik PFX, konto Azure Trusted Signing, klucz AWS KMS, użytkownika Certum SimplySign lub któregokolwiek z pozostałych dziesięciu dostawców kluczy. Nie jest wymagane ponowne uruchomienie usługi.

3

Wydaj token, wywołaj API

Otwórz /admin/apikeys, kliknij Nowy klucz API, ogranicz go do projektu, skopiuj token do sekretu runnera CI. Agent buildu wywołuje POST /api/v1/sign.

Scentralizuj podpisywanie w całej farmie buildów

Przestań kopiować certyfikaty podpisywania na każdy agent buildu. Jeden sgcSign Server, jeden punkt końcowy REST, pełny audyt i zatwierdzenia.