| Two-factor sign-in |
TOTP codes from any authenticator app plus 10 single-use recovery codes. admin.require_2fa makes it mandatory for every console user, and an administrator can reset a lost second factor. |
Yes |
| OpenID Connect sign-in |
Console sign-in through Microsoft Entra ID, Okta, Keycloak, Google or any standard provider, with PKCE. Users link an external identity to their account, and account requests can optionally wait for an administrator's approval. |
Yes |
| Console hardening |
Security headers and a strict Content Security Policy on every response, a configurable password policy, temporary passwords replaced at the first sign-in, and sessions that end when the role or rights behind them change. |
Yes |
| Secrets encrypted at rest |
Provider passwords, PINs, cloud credentials and webhook secrets stored with AES-256-GCM under a machine-bound master key. --protect-secrets encrypts an existing configuration in place. |
Yes |
| Enforced approvals |
Approval required per provider or per project, checked by the server on every signing path, raw digest signing for signtool /dlib included. Each approval signs once. |
No |
| API key lifecycle |
Regenerate with an overlap window of up to 7 days, editable expiry, key owners, a list of allowed providers per key, and self-service keys for operators with api_keys.self_service. A key can also start its validity at first use: it is valid for N days counted from its first authenticated call, with a required activate-before date so an unused key never stays valid forever. Sub-keys work only once their parent key is activated, activation is recorded in the audit log as apikey.activate, and Community caps both values at 30 days. |
One active key, expiry up to 30 days |
| PKCS#11 PIN retry guard |
Stops logging in to a token after max_pin_attempts incorrect PINs and never spends the final try unless allow_final_pin_try is set, so a wrong PIN never locks a hardware token. |
No (no PKCS#11 provider) |
| Default timestamp servers |
A server-wide list of RFC 3161 timestamp servers tried in order with automatic fallback, per-provider tsa_urls, and no_timestamp to skip the timestamp on one request. |
Yes |
sgcsign timestamp |
Adds an RFC 3161 timestamp to a file that is already Authenticode signed, trying each --tsa server in turn. |
Yes |
--page-hashes |
Authenticode: adds one hash per 4 KB page of the image, the equivalent of signtool sign /ph, used by kernel-mode drivers with Memory integrity (HVCI). |
Yes |
| Encrypted scheduled backups |
One AES-256-GCM archive with the configuration, the database, the master key and the key and certificate files, written on a schedule or from the console. --archive restore restores it or moves the server to a new machine. |
Yes |
| Certificate expiry monitoring |
Daily check of the signing and TLS certificates with warnings at 30, 14, 7 and 1 days on the dashboard, the cert.expiring webhook, email and a Prometheus metric. |
Dashboard and email only |
| Email notifications |
Email for lockouts, two-factor and password changes, failed backups and expiring certificates, over SMTP with STARTTLS or implicit TLS. On Windows no OpenSSL libraries are needed. |
Yes |
| Windows installer |
sgcSignServer_Setup.exe installs the Windows service, creates the first administrator, opens the firewall port and sets up TLS with a self-signed certificate or an existing PFX file. |
No, Community runs from the zip with start.bat (plain HTTP) |
| CLI saved profiles |
sgcsign config keeps settings in named profiles and sgcsign auth set-key stores the API key, in the Delphi CLI and the .NET tool esegece.sgcsign.cli. |
Yes |