3.8 KiB
Development Secrets & Test Certificates
Este documento describe cómo generar y configurar secretos de prueba para el
entorno development del Factuges Document Signing Service.
⚠️ IMPORTANTE Este procedimiento es solo para desarrollo y pruebas internas. NO usar certificados reales ni secretos de producción.
Objetivo
En development queremos:
- Probar el flujo completo de firmado de PDFs
- Usar certificados de prueba (autofirmados)
- Almacenar secretos en Infisical
- Mantener el mismo flujo que en producción
La validez legal NO es un objetivo en development.
Qué secretos necesita el Signing Service
Para firmar documentos PDF se necesitan exactamente dos secretos:
| Secreto | Descripción |
|---|---|
PDF_CERT_PFX_B64 |
Certificado PKCS#12 (.pfx) codificado en base64 |
PDF_CERT_PASSWORD |
Password del certificado |
Estos secretos solo existen en Infisical, nunca en el repositorio.
1. Generar un certificado de prueba (local)
Usamos un certificado autofirmado, válido técnicamente pero no legalmente.
1.1 Generar clave privada y certificado
openssl req -x509 -newkey rsa:2048 \
-keyout dev.key \
-out dev.crt \
-days 3600 \
-nodes \
-subj "/C=ES/O=ACME DEV/CN=ACME DEV TEST CERT"
Esto genera:
- dev.key → clave privada
- dev.crt → certificado autofirmado
- expiración: 3600 días
1.2 Crear el archivo PFX (PKCS#12)
openssl pkcs12 -export \
-out dev.pfx \
-inkey dev.key \
-in dev.crt \
-password pass:devpassword
Resultado:
- archivo: dev.pfx
- password: devpassword
- ⚠️ Password solo para development
2. Convertir el certificado a base64
base64 dev.pfx > dev.pfx.b64
Comprueba que:
- el archivo no esté vacío
- contiene texto base64 válido
3. Guardar los secretos en Infisical (environment = development)
3.1 Desde la UI de Infisical
- Accede a Infisical Cloud
- Selecciona el Project
- Selecciona el Environment: development
- Ve a Secrets
- Crea los siguientes secretos:
Secreto 1
- Key: PDF_CERT_PFX_B64
- Value: contenido de dev.pfx.b64
- Type: secret
Secreto 2
- Key: PDF_CERT_PASSWORD
- Value: devpassword
- Type: secret
Guarda los cambios.
3.2 (Opcional) Usando Infisical CLI
infisical secrets set PDF_CERT_PFX_B64="$(cat dev.pfx.b64)"
infisical secrets set PDF_CERT_PASSWORD="devpassword"
##4. Configuración local del Signing Service
Ejemplo de .env local:
APP_ENV=development
SECRET_PROVIDER=infisical
INFISICAL_PROJECT_ID=your_project_id
INFISICAL_ENV_SLUG=development
INFISICAL_TOKEN_AUTH=your_dev_token_auth
PDF_CERT_PFX_SECRET_NAME=PDF_CERT_PFX_B64
PDF_CERT_PASSWORD_SECRET_NAME=PDF_CERT_PASSWORD
📌 El archivo .env NO debe commitearse.
5. Comprobación manual
-
- Arranca el Signing Service
-
- Llama al endpoint de firmado con un PDF de prueba
-
- Abre el PDF firmado con:
- Adobe Reader
- Okular
- Foxit
Resultado esperado:
- La firma aparece como válida técnicamente
- El visor muestra advertencia:
“El certificado no es de confianza”
✔️ Esto es correcto en development.
6. Casos de prueba recomendados
En development se recomienda probar:
Certificado caducado
- Generar un certificado con -days -1
- Verificar que el servicio bloquea la firma
Password incorrecto
- Cambiar PDF_CERT_PASSWORD
- Verificar error controlado
Certificado eliminado
- Borrar los secretos en Infisical
- Verificar error CERT_NOT_CONFIGURED
Rotación manual
- Reemplazar PDF_CERT_PFX_B64 por otro certificado
- Verificar que el servicio sigue firmando
7. Qué NO hacer nunca
❌ No usar certificados reales ❌ No reutilizar secretos de producción ❌ No commitear .pfx, .key, .crt ❌ No loguear secretos ❌ No compartir tokens de Infisical