
Jerarquía PKI de dos niveles puramente PQC utilizando ML-DSA-65 (NIST FIPS 204) sobre EJBCA Community Edition — CA Raíz + CA Subordinada con CRL y OCSP
Una implementación práctica de NIST FIPS 204 (ML-DSA) en una jerarquía PKI de dos niveles utilizando EJBCA Community Edition.
📖 Guía completa: Construyendo una PKI Post-Cuántica: Cómo firmé una CA Raíz y una CA Subordinada usando ML-DSA en EJBCA
Una jerarquía PKI PQC pura completa ejecutándose en dos máquinas virtuales separadas, cada una con su propio contenedor EJBCA:
VM 1 — CA Raíz
└─ CA Raíz autofirmada ML-DSA-65
└─ CRL publicada y accesible
VM 2 — CA Subordinada
└─ CA Subordinada ML-DSA-65 firmada por la CA Raíz
└─ CRL publicada y accesible
└─ Respondedor OCSP activo
Cada certificado en la cadena — CA Raíz, CA Subordinada — está firmado exclusivamente con ML-DSA-65 (NIST FIPS 204). Sin RSA. Sin ECDSA. PQC puro de extremo a extremo.
ML-DSA (anteriormente CRYSTALS-Dilithium) es el algoritmo de firma digital post-cuántico estandarizado por NIST bajo FIPS 204. El conjunto de parámetros Dilithium3 (ML-DSA-65) fue seleccionado para este laboratorio — proporciona seguridad post-cuántica de 128 bits y es la opción general recomendada para la mayoría de implementaciones.
ejbca-pqc-lab/
├── README.md
├── root-ca/
│ └── setup-lab.sh # Ejecutar en VM1 — configura la máquina CA Raíz
└── sub-ca/
└── setup-lab.sh # Ejecutar en VM2 — configura la máquina CA Subordinada
chmod +x setup-lab.sh
sudo ./setup-lab.sh
Una vez completado, acceda a la interfaz de administración en:
https://<VM1_IP>:8443/ejbca/adminweb/
Importe superadmin.p12 desde el contenedor a su navegador:
docker cp ejbca:/opt/ejbca/p12/superadmin.p12 ~/superadmin.p12
Contraseña por defecto: ejbca
Luego siga el artículo de Medium para configurar la CA Raíz manualmente.
chmod +x setup-lab.sh
sudo ./setup-lab.sh
Una vez completado, acceda a la interfaz de administración en:
https://<VM2_IP>:8443/ejbca/adminweb/
Importe superadmin.p12 de la misma manera, luego siga el artículo de Medium para configurar la CA Subordinada.
ejbca-datadocker-compose.ymlToda la configuración de EJBCA se realiza manualmente a través de la interfaz de administración — perfiles de certificados, tokens criptográficos, creación de CA, configuraciones de CRL y OCSP. Esto es intencional. El script pone en marcha la plataforma. El artículo de Medium documenta cada decisión manual y por qué se tomó.
| Componente | CA |
|---|
ACME — El protocolo ACME (RFC 8555) no admite ML-DSA para la autenticación de clave de cuenta. Solo se permiten RSA y ECDSA. Incluir ACME requeriría una clave de cuenta clásica, rompiendo la historia PQC pura. El IETF está trabajando en un borrador PQC para ACME. Este laboratorio se actualizará cuando esté finalizado.
Confianza del navegador — Ningún almacén de confianza importante de navegadores reconoce ML-DSA aún. Este es un laboratorio PKI privado, no una jerarquía de confianza pública. Eso es esperado y correcto.
Mohammad Amin Kokash Ingeniero de Seguridad GitHub · Medium
MIT
| Estado |
|---|
| CRL | CA Raíz | ✅ |
| CRL | CA Subordinada | ✅ |
| OCSP | CA Subordinada | ✅ |
| OCSP | CA Raíz | ❌ No aplica |