
Pura gerarchia PKI a due livelli che utilizza ML-DSA-65 (NIST FIPS 204) su EJBCA Community Edition — Root CA + Sub CA con CRL e OCSP
Un'implementazione pratica di NIST FIPS 204 (ML-DSA) in una gerarchia PKI a due livelli utilizzando EJBCA Community Edition.
📖 Guida completa: Costruire una PKI post-quantistica: come ho firmato una Root CA e Sub CA usando ML-DSA su EJBCA
Una gerarchia PKI PQC pura completa in esecuzione su due macchine virtuali separate, ciascuna con il proprio container EJBCA:
VM 1 — Root CA
└─ ML-DSA-65 self-signed Root CA
└─ CRL published and reachable
VM 2 — Sub CA
└─ ML-DSA-65 Sub CA signed by Root CA
└─ CRL published and reachable
└─ OCSP responder active
Ogni certificato nella catena — Root CA, Sub CA — è firmato esclusivamente con ML-DSA-65 (NIST FIPS 204). Nessun RSA. Nessun ECDSA. PQC puro dall'inizio alla fine.
ML-DSA (precedentemente CRYSTALS-Dilithium) è l'algoritmo di firma digitale post-quantistica standardizzato da NIST secondo FIPS 204. Il set di parametri Dilithium3 (ML-DSA-65) è stato selezionato per questo laboratorio — fornisce una sicurezza post-quantistica a 128 bit ed è l'opzione generica consigliata per la maggior parte delle implementazioni.
ejbca-pqc-lab/
├── README.md
├── root-ca/
│ └── setup-lab.sh # Run on VM1 — sets up the Root CA machine
└── sub-ca/
└── setup-lab.sh # Run on VM2 — sets up the Sub CA machine
chmod +x setup-lab.sh
sudo ./setup-lab.sh
Una volta completato, accedi all'interfaccia Admin all'indirizzo:
https://<VM1_IP>:8443/ejbca/adminweb/
Importa superadmin.p12 dal container nel tuo browser:
docker cp ejbca:/opt/ejbca/p12/superadmin.p12 ~/superadmin.p12
Password predefinita: ejbca
Quindi segui l'articolo Medium per configurare manualmente la Root CA.
chmod +x setup-lab.sh
sudo ./setup-lab.sh
Una volta completato, accedi all'interfaccia Admin all'indirizzo:
https://<VM2_IP>:8443/ejbca/adminweb/
Importa superadmin.p12 allo stesso modo, quindi segui l'articolo Medium per configurare la Sub CA.
ejbca-datadocker-compose.ymlTutta la configurazione di EJBCA viene eseguita manualmente tramite l'interfaccia Admin — profili certificato, token crittografici, creazione CA, impostazioni CRL e OCSP. Questa è una scelta intenzionale. Lo script fa funzionare la piattaforma. L'articolo Medium documenta ogni decisione manuale e il motivo per cui è stata presa.
| Componente | CA | Stato |
|---|
ACME — Il protocollo ACME (RFC 8555) non supporta ML-DSA per l'autenticazione della chiave dell'account. Sono ammessi solo RSA ed ECDSA. Includere ACME richiederebbe una chiave dell'account classica, rompendo la storia del PQC puro. L'IETF sta lavorando a una bozza di ACME PQC. Questo laboratorio verrà aggiornato quando sarà finalizzata.
Browser trust — Nessun trust store dei browser principali riconosce ancora ML-DSA. Questo è un laboratorio PKI privato, non una gerarchia pubblicamente fidata. È previsto e corretto.
Mohammad Amin Kokash Ingegnere della sicurezza GitHub · Medium
MIT
| CRL | Root CA | ✅ |
| CRL | Sub CA | ✅ |
| OCSP | Sub CA | ✅ |
| OCSP | Root CA | ❌ Non applicabile |