Ingeniería Artículo técnico 8 min de lectura

Almacenamiento seguro de archivos .p12

y claves de firma electrónica en la nube

Tu archivo .p12 contiene la clave privada con la que se firman tus comprobantes. Quien lo tenga, junto con su clave, puede firmar documentos a tu nombre. Guardarlo bien no es un detalle técnico: es protección de tu identidad tributaria.

CIFRADO DE SOBRE KMS

  • KMS Clave maestra NUNCA SALE
  • DEK Clave de datos CIFRADA
  • .p12 Archivo de firma AES-256-GCM
  • RAM Se descifra solo al firmar EN MEMORIA
REGLA El archivo y su clave nunca viajan juntos.
01 — CONCEPTO

Qué hay dentro de un .p12

Es un contenedor (formato PKCS#12) que guarda tu certificado y tu clave privada, protegido con una contraseña. El certificado es público. La clave privada no lo es. Con ambas puedes firmar.

02 — EVÍTALOS

Errores que vemos con más frecuencia

ERRORPOR QUÉ ES PELIGROSO
Subir el .p12 a un repositorio de códigoQueda en el historial para siempre, aunque lo borres después
Guardar el archivo y su clave en el mismo lugarLa contraseña existe para proteger el archivo. Si viajan juntos, no protege nada
Dejarlo en una carpeta del servidor sin cifrarCualquiera con acceso al disco o a un respaldo lo obtiene
Enviarlo por correo o por chatQueda copiado en servidores y dispositivos que no controlas
Usar la misma contraseña para todosSi se filtra una, se filtran todas
Escribir la clave en los registros (logs)Los logs se copian, se envían y se retienen
03 — BUENAS PRÁCTICAS

El modelo recomendado

  1. Cifra el archivo en reposo Guárdalo siempre cifrado, nunca en texto plano.
  2. Separa el archivo de su clave El archivo va en un almacén; la clave, en un gestor de secretos distinto.
  3. Usa cifrado de sobre (envelope encryption) Un KMS protege una clave maestra que nunca sale de él. Esa clave maestra cifra una clave de datos, y la clave de datos cifra tu archivo.
  4. Descifra solo en memoria, solo al firmar El archivo descifrado no debe tocar el disco ni los registros.
  5. Da el mínimo acceso Solo el servicio que firma puede leer el certificado, y solo ese.
  6. Audita cada uso Registra quién y cuándo accedió al certificado.

Este ejemplo muestra la parte de cifrar y descifrar el archivo con AES-256-GCM, que además detecta si alguien lo alteró:

jscifrado.js
import crypto from "node:crypto";

// En producción, la clave de datos la genera y la protege un KMS (cifrado de sobre).
// Aquí se recibe como parámetro para mostrar solo el cifrado del archivo.
export function cifrar(contenido, claveDatos) {
  const iv = crypto.randomBytes(12);
  const cifrador = crypto.createCipheriv("aes-256-gcm", claveDatos, iv);
  const cifrado = Buffer.concat([cifrador.update(contenido), cifrador.final()]);
  return { iv, etiqueta: cifrador.getAuthTag(), cifrado };
}

export function descifrar({ iv, etiqueta, cifrado }, claveDatos) {
  const descifrador = crypto.createDecipheriv("aes-256-gcm", claveDatos, iv);
  descifrador.setAuthTag(etiqueta);
  return Buffer.concat([descifrador.update(cifrado), descifrador.final()]);
}
04 — MULTI-TENANT

Si tienes varios clientes (multi-tenant)

  • Una clave por cliente Así un incidente en uno no expone a los demás.
  • Aislamiento de acceso El proceso que firma para el cliente A no debe poder leer el certificado del cliente B.
  • Offboarding Cuando un cliente se va, elimina su certificado y su clave de datos, y confirma que también salen de los respaldos.
05 — CICLO DE VIDA

Ciclo de vida del certificado

  1. Alta Verifica el archivo, cífralo y registra su fecha de vencimiento.
  2. Uso Descifra en memoria y firma. Nada más.
  3. Antes de vencer Avisa con anticipación para renovar. Un certificado vencido provoca firmas inválidas.
  4. Renovación Carga el nuevo y retira el anterior.
  5. Baja Elimina el certificado, su clave y sus copias.
06 — SEGÚN TU ESCALA

Cuánta seguridad necesitas

ESCENARIOQUÉ USAR
Poco volumen y un solo certificadoUn gestor de secretos y cifrado en reposo son suficientes
Varios clientes o volumen altoKMS con cifrado de sobre y una clave por cliente
Exigencias regulatorias altasMódulos de seguridad de hardware (HSM), donde la clave privada nunca sale del dispositivo
07 — FLASHPI

Cómo lo hace Flashpi

Conclusión

Un .p12 mal guardado es una puerta abierta a tu identidad tributaria. Cífralo, sepáralo de su clave, descífralo solo cuando firmes y registra cada uso.

SIGUE LEYENDO

Del comprobante a la autorización

Ver todos los artículos
Empieza hoy

Solicita tu API key de pruebas

Prueba la API en el ambiente de pruebas del SRI y pasa a producción cuando estés listo.