
Hierarquia PKI de dois níveis PQC pura usando ML-DSA-65 (NIST FIPS 204) no EJBCA Community Edition — Root CA + Sub CA com CRL e OCSP
Uma implementação prática do NIST FIPS 204 (ML-DSA) em uma hierarquia PKI de dois níveis usando EJBCA Community Edition.
📖 Passo a passo completo: Construindo uma PKI Pós-Quântica: Como Assinei uma CA Raiz e uma Sub CA Usando ML-DSA no EJBCA
Uma hierarquia PKI PQC pura completa executada em duas máquinas virtuais separadas, cada uma com seu próprio contêiner 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
Cada certificado na cadeia — CA Raiz, Sub CA — é assinado exclusivamente com ML-DSA-65 (NIST FIPS 204). Sem RSA. Sem ECDSA. PQC puro de ponta a ponta.
ML-DSA (anteriormente CRYSTALS-Dilithium) é o algoritmo de assinatura digital pós-quântico padronizado pelo NIST sob o FIPS 204. O conjunto de parâmetros Dilithium3 (ML-DSA-65) foi selecionado para este laboratório — ele fornece segurança pós-quântica de 128 bits e é a opção de uso geral recomendada para a maioria das implantações.
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
Após a conclusão, acesse a IU de Administração em:
https://<VM1_IP>:8443/ejbca/adminweb/
Importe superadmin.p12 do contêiner para o seu navegador:
docker cp ejbca:/opt/ejbca/p12/superadmin.p12 ~/superadmin.p12
Senha padrão: ejbca
Em seguida, siga o artigo do Medium para configurar a CA Raiz manualmente.
chmod +x setup-lab.sh
sudo ./setup-lab.sh
Após a conclusão, acesse a IU de Administração em:
https://<VM2_IP>:8443/ejbca/adminweb/
Importe superadmin.p12 da mesma forma, depois siga o artigo do Medium para configurar a Sub CA.
ejbca-datadocker-compose.ymlToda a configuração do EJBCA é feita manualmente através da IU de Administração — perfis de certificado, tokens criptográficos, criação de CA, configurações de CRL e OCSP. Isso é intencional. O script coloca a plataforma em funcionamento. O artigo do Medium documenta cada decisão manual e por que foi tomada.
| Componente | CA | Status |
|---|
ACME — O protocolo ACME (RFC 8555) não suporta ML-DSA para autenticação de chave de conta. Apenas RSA e ECDSA são permitidos. Incluir ACME exigiria uma chave de conta clássica, quebrando a história PQC pura. A IETF está trabalhando em um rascunho de ACME PQC. Este laboratório será atualizado quando isso for finalizado.
Confiança do navegador — Nenhum repositório de confiança de navegador importante reconhece ML-DSA ainda. Este é um laboratório PKI privado, não uma hierarquia publicamente confiável. Isso é esperado e correto.
Mohammad Amin Kokash Engenheiro de Segurança GitHub · Medium
MIT
| CRL | CA Raiz | ✅ |
| CRL | Sub CA | ✅ |
| OCSP | Sub CA | ✅ |
| OCSP | CA Raiz | ❌ Não aplicável |