
Hiérarchie PKI à deux niveaux PQC pur utilisant ML-DSA-65 (NIST FIPS 204) sur EJBCA Community Edition — CA racine + CA subordonné avec CRL et OCSP
Une implémentation pratique de NIST FIPS 204 (ML-DSA) dans une hiérarchie PKI à deux niveaux utilisant EJBCA Community Edition.
📖 Procédure complète : Construire une PKI post-quantique : comment j'ai signé une AC racine et une AC intermédiaire avec ML-DSA sur EJBCA
Une hiérarchie PKI PQC pure complète fonctionnant sur deux machines virtuelles distinctes, chacune avec son propre conteneur EJBCA :
VM 1 — AC Racine
└─ AC racine auto-signée ML-DSA-65
└─ CRL publiée et accessible
VM 2 — AC Intermédiaire
└─ AC intermédiaire ML-DSA-65 signée par l'AC racine
└─ CRL publiée et accessible
└─ Répondeur OCSP actif
Chaque certificat de la chaîne — AC racine, AC intermédiaire — est signé exclusivement avec ML-DSA-65 (NIST FIPS 204). Pas de RSA. Pas d'ECDSA. PQC pur de bout en bout.
ML-DSA (anciennement CRYSTALS-Dilithium) est l'algorithme de signature numérique post-quantique normalisé par le NIST dans le cadre de FIPS 204. Le jeu de paramètres Dilithium3 (ML-DSA-65) a été choisi pour ce laboratoire — il offre une sécurité post-quantique de 128 bits et est l'option polyvalente recommandée pour la plupart des déploiements.
ejbca-pqc-lab/
├── README.md
├── root-ca/
│ └── setup-lab.sh # À exécuter sur VM1 — configure la machine AC Racine
└── sub-ca/
└── setup-lab.sh # À exécuter sur VM2 — configure la machine AC Intermédiaire
chmod +x setup-lab.sh
sudo ./setup-lab.sh
Une fois terminé, accédez à l'interface d'administration à l'adresse :
https://<VM1_IP>:8443/ejbca/adminweb/
Importez superadmin.p12 depuis le conteneur dans votre navigateur :
docker cp ejbca:/opt/ejbca/p12/superadmin.p12 ~/superadmin.p12
Mot de passe par défaut : ejbca
Suivez ensuite l'article Medium pour configurer l'AC racine manuellement.
chmod +x setup-lab.sh
sudo ./setup-lab.sh
Une fois terminé, accédez à l'interface d'administration à l'adresse :
https://<VM2_IP>:8443/ejbca/adminweb/
Importez superadmin.p12 de la même manière, puis suivez l'article Medium pour configurer l'AC intermédiaire.
ejbca-datadocker-compose.ymlToute la configuration EJBCA est effectuée manuellement via l'interface d'administration — profils de certificats, jetons cryptographiques, création d'AC, paramètres CRL et OCSP. C'est intentionnel. Le script met la plateforme en marche. L'article Medium documente chaque décision manuelle et la raison de ces choix.
| Composant |
|---|
ACME — Le protocole ACME (RFC 8555) ne prend pas en charge ML-DSA pour l'authentification par clé de compte. Seuls RSA et ECDSA sont autorisés. Inclure ACME nécessiterait une clé de compte classique, ce qui briserait l'histoire du PQC pur. L'IETF travaille sur un projet de PQC ACME. Ce laboratoire sera mis à jour lorsque celui-ci sera finalisé.
Confiance du navigateur — Aucun magasin de confiance majeur des navigateurs ne reconnaît encore ML-DSA. Il s'agit d'un laboratoire PKI privé, pas d'une hiérarchie publiquement reconnue. C'est attendu et correct.
Mohammad Amin Kokash Ingénieur Sécurité GitHub · Medium
MIT
| CA |
|---|
| Statut |
|---|
| CRL | AC Racine | ✅ |
| CRL | AC Intermédiaire | ✅ |
| OCSP | AC Intermédiaire | ✅ |
| OCSP | AC Racine | ❌ Non applicable |