sgcSign Server

Un daemon de firma de código remoto autoalojado que envuelve el motor de sgcSign tras una API REST, una consola de administración web Bootstrap y un cliente de línea de comandos para pipelines CI/CD.

API REST + panel web
7 formatos de firma
Proyectos multi-tenant
Registro de auditoría con cadena hash

Qué obtienes

Un único host, Windows o Linux, acepta solicitudes de firma de agentes de build, desarrolladores y pipelines CI — con auditoría completa, aprobaciones y métricas integradas.

API REST

Endpoints /api/v1 protegidos con TLS para firma, verificación, comprobación de estado, métricas y flujos de aprobación. Contrato estable y orientado a máquinas para agentes de build y SDK.

Consola de administración web

Interfaz /admin basada en Bootstrap para usuarios, claves API, proveedores, proyectos, auditoría, aprobaciones, webhooks y métricas. Los operadores nunca necesitan editar JSON.

Instalador como servicio Windows

Asistente Inno Setup o despliegue por ZIP. El daemon se registra como servicio Windows, termina TLS por sí mismo y se ejecuta sin atención en un host endurecido.

Proyectos multi-tenant

Cada proyecto aísla un subconjunto de proveedores, claves API, visibilidad de auditoría y colas de aprobación. Varios equipos comparten un único servidor sin ver el material de firma del otro.

Flujo de aprobación en dos pasos

La misma clave API solicita, un administrador o admin de proyecto aprueba o rechaza, y solo entonces se firman los bytes. El hash SHA-256 y el tamaño del archivo se bloquean en la solicitud.

Registro de auditoría SHA-256

Cada acción — firma, verificación, inicio de sesión, aprobación, disparo de webhook — se añade a un registro de auditoría encadenado por hash. La manipulación es detectable; el scraping desde un SIEM es directo.

Métricas Prometheus

Contadores de firma / verificación / aprobación, histogramas de latencia de firma, indicadores de disponibilidad de proveedores. Exposición directa en formato texto Prometheus 0.0.4, sin base de datos adicional que gestionar.

Webhooks firmados con HMAC

21 eventos de ciclo de vida entregados con X-Sgcsign-Signature: sha256=…. La cola de reintentos en tres pasos mantiene sincronizados los sistemas SIEM, de chat y de tickets.

XAdES · PAdES · CAdES

El mismo motor que se distribuye en la biblioteca, expuesto a través de la API REST. Cada perfil por país, cada nivel de firma.

XAdES

Firmas XML para VeriFactu, FatturaPA, Facturae, KSeF, e-Factura, Peppol, myDATA y contratos laborales de la UE. POST /api/v1/sign/xades.

PAdES

Firmas PDF PAdES-Basic con actualizaciones incrementales que conservan el contenido original. Firmas visibles o invisibles. POST /api/v1/sign/pades.

CAdES

Firmas CMS / PKCS#7 detached o attached para datos binarios arbitrarios. Sello de tiempo + validación a largo plazo. POST /api/v1/sign/cades.

EET 2.0 checo

Construye y firma una venta registrada con una clave que custodia el servidor, opcionalmente la envía a la autoridad tributaria y devuelve la respuesta. Todas las cajas de una cadena comparten un mismo certificado de contribuyente. POST /api/v1/sign/eet.

Authenticode, ClickOnce, NuGet, VSIX

El daemon de firma habla con la fuente de certificados que configures: almacén de Windows, PFX, token hardware PKCS#11, Azure Trusted Signing, AWS KMS o Google KMS.

Authenticode

Firma .exe, .dll, .msi, .cab, .cat, .ocx, .sys. El modo solo-hash permite que los runners con poco ancho de banda intercambien unas pocas decenas de bytes a cambio de un blob PKCS#7 de 8 KB. Añade --page-hashes (page_hashes en la API) para incluir hashes de página en controladores en modo kernel, como signtool /ph.

ClickOnce

Firma manifiestos ClickOnce (.application / .manifest) para que los clientes Windows instalen sin avisos de confianza. POST /api/v1/sign/clickonce.

Paquetes NuGet

Firma paquetes .nupkg para que el cliente NuGet valide la identidad del editor. Compatible con firmas de autor y de repositorio. POST /api/v1/sign/nuget.

Extensiones VSIX

Firma paquetes de extensión de Visual Studio para que el VS Marketplace y el propio IDE los acepten como confiables. POST /api/v1/sign/vsix.

Seguridad y acceso

Inicio de sesión más robusto para la consola de administración y secretos cifrados en disco, de modo que una contraseña robada o un archivo de configuración copiado no abran las claves de firma.

Inicio de sesión en dos pasos

Las cuentas de la consola añaden un código de 6 dígitos de cualquier aplicación autenticadora TOTP, con 10 códigos de recuperación de un solo uso por si se pierde el teléfono. Con admin.require_2fa, todos los usuarios de la consola deben registrarse antes de acceder a cualquier otra página. Un administrador puede restablecer un segundo factor perdido.

Inicio de sesión con OpenID Connect

Accede a la consola con Microsoft Entra ID, Okta, Keycloak, Google o cualquier proveedor OpenID Connect estándar, mediante el flujo de código de autorización con PKCE. Los usuarios vinculan una identidad externa a su cuenta, y los nuevos usuarios pueden solicitar opcionalmente una cuenta que aprueba un administrador.

Consola reforzada

Cada respuesta incluye cabeceras de seguridad y una Content Security Policy estricta. Política de contraseñas configurable, contraseñas temporales que deben cambiarse en el primer inicio de sesión y sesiones que terminan en cuanto cambia el rol o los permisos que las respaldan.

Secretos cifrados en reposo

Las contraseñas de proveedores, los PIN, las credenciales de la nube y los secretos de webhooks se guardan cifrados con AES-256-GCM bajo una clave maestra ligada a la máquina (DPAPI en Windows). sgcSignServer --protect-secrets cifra en su sitio una configuración existente.

Control de firma y sellos de tiempo

El servidor decide quién puede firmar, con qué clave y con la aprobación de quién, y cada firma recibe un sello de tiempo incluso cuando un servidor de sellos de tiempo está caído.

Aprobaciones obligatorias

Marca un proveedor o un proyecto completo como que requiere aprobación, y el servidor rechaza la firma directa con approval_required. Cada aprobación firma una sola vez. La regla se aplica en todas las rutas de firma, incluida la firma de hash en bruto para signtool /dlib.

Ciclo de vida de las claves API

Regenera una clave mientras el secreto anterior sigue funcionando hasta 7 días, edita su caducidad, consulta quién es su propietario y limítala a una lista de proveedores permitidos. Con api_keys.self_service, los operadores crean y gestionan sus propias claves dentro de los límites que definas. Una clave también puede empezar su validez en el primer uso: es válida durante N días contados desde su primera llamada autenticada, con una fecha obligatoria de activar antes de, para que una clave sin usar nunca siga válida para siempre. Las subclaves solo funcionan cuando su clave principal está activada, la activación queda registrada en el registro de auditoría como apikey.activate y Community limita ambos valores a 30 días.

Protección de reintentos de PIN PKCS#11

El servidor cuenta los resultados de PIN incorrecto por token y deja de iniciar sesión tras max_pin_attempts, de modo que un PIN erróneo en la configuración nunca bloquea un token de hardware. El último intento solo se usa con allow_final_pin_try, y un administrador restablece la protección desde la consola.

Perfiles guardados en la CLI

sgcsign config guarda el servidor, el proveedor y otros ajustes en perfiles con nombre, y sgcsign auth set-key almacena la clave API, de modo que los scripts de compilación dejan de repetirlos. La CLI de Delphi y la herramienta .NET esegece.sgcsign.cli comparten los mismos archivos.

Sellos de tiempo con respaldo automático

  • Una lista global del servidor de servidores de sellos de tiempo RFC 3161 por defecto, probados en orden hasta que uno responde.
  • Listas tsa_urls por proveedor, y no_timestamp para una solicitud que no debe llevar sello de tiempo.
  • sgcsign timestamp añade un sello de tiempo a un archivo ya firmado con Authenticode, con el mismo respaldo.
timestamps
# sgcSignServer.conf.json
"timestamp": {
  "servers": ["http://timestamp.digicert.com", "http://timestamp.sectigo.com"],
  "timeout_ms": 30000
}

# Añadir sello de tiempo a un archivo ya firmado
sgcsign timestamp MyApp.exe --tsa http://timestamp.digicert.com --tsa http://timestamp.sectigo.com

Copias de seguridad, monitorización e instalación

Mantén el servidor en marcha durante años sin sorpresas: copias cifradas, avisos antes de que caduque un certificado, correo cuando algo requiere a una persona y un instalador para Windows.

Copias de seguridad cifradas programadas

Un único archivo contiene la configuración, la base de datos, la clave maestra y todos los archivos de claves y certificados, cifrado con AES-256-GCM bajo una frase de contraseña. Las copias se ejecutan según una programación o desde la consola, y sgcSignServer --archive restore reconstruye el servidor en la misma máquina o lo traslada a una nueva.

Monitorización de caducidad de certificados

Los certificados de firma y el certificado TLS del servidor se comprueban al arrancar y cada día. Los avisos a los 30, 14, 7 y 1 días restantes aparecen en el panel y salen como webhook cert.expiring, como correo y como métrica sgcsign_certificate_not_after_seconds.

Notificaciones por correo

Correo cuando se bloquea una cuenta, cuando cambia la autenticación en dos pasos o una contraseña, cuando falla una copia de seguridad o un certificado está a punto de caducar. SMTP con STARTTLS o TLS implícito, y en Windows el envío de correo no necesita bibliotecas OpenSSL.

Instalador de Windows

sgcSignServer_Setup.exe instala el servidor como servicio de Windows, crea el primer administrador y abre el puerto del cortafuegos. TLS usa un certificado autofirmado generado, un archivo PFX existente o HTTP sin cifrar para máquinas de prueba.

Cómo encajan las piezas

Un único servicio Windows termina TLS, expone /api/v1 + /admin y consulta el proveedor de claves configurado en cada llamada. El material de claves nunca vive en la base de datos.

Un solo binario, tres interfaces

  • Los agentes de build llaman a /api/v1 sobre HTTPS con una clave API tipo bearer.
  • Los operadores inician sesión en /admin desde cualquier navegador. Interfaz Bootstrap, cookies de sesión y control de acceso basado en roles.
  • Los proveedores de claves se consultan bajo demanda en PFX, almacén de Windows, PKCS#11, Azure TS, AWS KMS, GCloud KMS, Vault, Certum o CSC v2.
  • La base de datos SQLite almacena usuarios, claves API, registro de auditoría, sesiones y cola de webhooks. Nunca el material de claves en sí.
  • Los webhooks se disparan de forma asíncrona hacia los sistemas SIEM y de chat en cada evento auditado.
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)|
     +-------------+   +---------------+   +-----------+

A un curl de distancia

Una clave API tipo bearer, una subida de hash o de archivo y el binario firmado vuelve por stdout. Authenticode, CAdES, PAdES, XAdES, ClickOnce, NuGet y VSIX comparten la misma forma.

Firma un .exe en una sola llamada

  • X-API-Key o Authorization: Bearer — cualquiera de los dos métodos de auth funciona.
  • X-Project selecciona el tenant; la clave debe estar autorizada para el proyecto.
  • La respuesta lleva X-Sgcsign-Signer-Subject + X-Sgcsign-Duration-Ms para correlacionar logs.
  • Modo solo-hash para Authenticode: envía el SHA-256 y recibe un blob PKCS#7 minúsculo.
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

Tres pasos hasta un binario firmado

De un host Windows recién instalado al primer artefacto firmado en menos de cinco minutos.

1

Instalar

Ejecuta el asistente Inno Setup incluido o copia el ZIP en una carpeta. El daemon se registra como servicio Windows con el nombre sgcSignServer. Lo asocias al puerto :8443 y cargas tu certificado TLS.

2

Configurar un proveedor de claves

Añade un proveedor a sgcSignServer.conf.json — un archivo PFX, una cuenta Azure Trusted Signing, una clave AWS KMS, un usuario Certum SimplySign o cualquiera de los otros diez proveedores de claves. No se requiere reiniciar el servicio.

3

Emitir un token y llamar a la API

Abre /admin/apikeys, haz clic en Nueva clave API, limítala a un proyecto y copia el token en el almacén de secretos de tu runner CI. El agente de build llama a POST /api/v1/sign.

La mejor opción: All-AccessTodos los productos de eSeGeCe, con Premium Support incluido, desde €1,059 al año.
Ver precios de All-Access

Centraliza la firma en toda tu build farm

Deja de copiar certificados de firma en cada agente de build. Un sgcSign Server, un endpoint REST y auditoría y aprobaciones completas.