Server sgcSign
Un daemon di firma del codice remoto self-hosted che incapsula il motore sgcSign dietro un'API REST, una console di amministrazione web Bootstrap e pipeline CI/CD pronte all'uso.
Un daemon di firma del codice remoto self-hosted che incapsula il motore sgcSign dietro un'API REST, una console di amministrazione web Bootstrap e pipeline CI/CD pronte all'uso.
Un singolo host Windows accetta richieste di firma da agenti di build, sviluppatori e pipeline CI — con audit completo, approvazioni e metriche integrate.
Endpoint /api/v1 protetti da TLS per firma, verifica, salute, metriche e flussi di approvazione. Contratto stabile e machine-friendly per agenti di build e SDK.
UI Bootstrap su /admin per utenti, chiavi API, provider, progetti, audit, approvazioni, webhook e metriche. Gli operatori non devono mai modificare JSON.
Wizard Inno Setup o estrazione da zip. Il daemon si registra come servizio Windows, termina TLS direttamente e funziona senza supervisione su un host irrobustito.
Ogni progetto isola un sottoinsieme di provider, chiavi API, visibilità dell'audit e code di approvazione. Più team condividono un solo server senza vedere il materiale di firma reciproco.
La stessa chiave API richiede, un admin o un project admin approva o rifiuta, e solo allora i byte vengono firmati. Hash SHA-256 e dimensione del file sono fissati nella richiesta.
Ogni azione — firma, verifica, login, approvazione, webhook — viene aggiunta a un audit log con catena di hash. Le manomissioni sono rilevabili; lo scraping per SIEM è semplice.
Contatori firma / verifica / approvazione, istogrammi di latenza della firma, gauge di disponibilità dei provider. Esposizione testuale diretta in Prometheus 0.0.4 senza database aggiuntivi da gestire.
13 eventi del ciclo di vita consegnati con X-Sgcsign-Signature: sha256=…. Una coda di retry a tre tentativi mantiene SIEM, chat e sistemi di ticketing sincronizzati.
Lo stesso motore fornito nella libreria, esposto tramite API REST. Ogni profilo per paese, ogni livello di firma.
Firme XML per VeriFactu, FatturaPA, Facturae, KSeF, e-Factura, Peppol, myDATA e contratti di lavoro UE. POST /api/v1/sign/xades.
Firme PDF PAdES-Basic con aggiornamenti incrementali che preservano il contenuto originale. Firme visibili o invisibili. POST /api/v1/sign/pades.
Firme CMS / PKCS#7 detached o attached per dati binari arbitrari. Timestamp + validazione a lungo termine. POST /api/v1/sign/cades.
Il daemon di firma comunica con la sorgente di certificati che configuri: archivio Windows, PFX, token hardware PKCS#11, Azure Trusted Signing, AWS KMS, Google KMS.
Firma .exe, .dll, .msi, .cab, .cat, .ocx, .sys. La modalità solo hash consente ai runner a bassa banda di scambiare poche dozzine di byte per un blob PKCS#7 di 8 KB.
Firma manifest ClickOnce (.application / .manifest) in modo che i client Windows possano installare senza prompt di trust. POST /api/v1/sign/clickonce.
Firma pacchetti .nupkg in modo che il client NuGet validi l'identità del publisher. Supporto a firme author e repository. POST /api/v1/sign/nuget.
Firma pacchetti di estensione Visual Studio in modo che VS Marketplace e l'IDE stesso li accettino come affidabili. POST /api/v1/sign/vsix.
Gli agenti di build chiamano un endpoint REST stabile invece di installare certificati di firma su ogni runner.
Un'action composita invia l'artefatto all'API REST del server. Il token, emesso dall'admin web e limitato a un progetto, non lascia mai il secret store del runner.
Un task della pipeline esegue il client CLI sgcSign, che carica il binario, attende l'approvazione se richiesta e scarica il risultato firmato — tutto in un unico passaggio.
Snippet di declarative pipeline che usa curl o la CLI inclusa. Funziona con agenti Linux e Windows; la firma appare come artefatto di build.
Immagine con il daemon e una configurazione di provider di esempio. Esegui il container, monta il tuo certificato TLS + i segreti del provider e hai un servizio di firma portatile.
Distribuisci su Kubernetes per una firma completamente ridondante e scalabile. Abbinala a un KMS cloud (Azure Trusted Signing, AWS KMS, Google KMS) per pod keyless.
Un singolo servizio Windows termina TLS, espone /api/v1 + /admin e raggiunge il provider di chiavi configurato a ogni chiamata. Il materiale delle chiavi non vive mai nel database.
/api/v1 su HTTPS con una chiave API bearer.
/admin da qualsiasi browser. UI Bootstrap, cookie di sessione, accesso basato sui ruoli.
+----------------------------+
| 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 AwayA bearer API key, a multipart upload, and the signed binary streams back to stdout. Authenticode, CAdES, PAdES, XAdES, ClickOnce, NuGet, VSIX share the same shape.
X-API-Key or Authorization: Bearer — either auth method works.
X-Project selects the tenant; the key must be authorised for the project.
X-Sgcsign-Signer-Subject + X-Sgcsign-Duration-Ms for log correlation.
# 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
From a fresh Windows host to the first signed artefact in under five minutes.
Run the bundled Inno Setup wizard or drop the zip into a folder. The daemon registers itself as a Windows service called sgcSignServer. Bind to :8443 and load your TLS certificate.
Add a provider to sgcSignServer.conf.json — a PFX file, Azure Trusted Signing account, AWS KMS key, Certum SimplySign user, or any of the other ten key providers. No service restart required.
Open /admin/apikeys, click New API key, scope it to a project, copy the token into your CI runner secret. Build agent calls POST /api/v1/sign.