
Чистая двухуровневая иерархия PKI на основе PQC с использованием ML-DSA-65 (NIST FIPS 204) на EJBCA Community Edition — корневой ЦС + промежуточный ЦС с CRL и OCSP
Практическая реализация NIST FIPS 204 (ML-DSA) в двухуровневой иерархии PKI с использованием EJBCA Community Edition.
📖 Полное руководство: Создание пост-квантовой PKI: как я подписал корневой и промежуточный ЦС с помощью ML-DSA на EJBCA
Полная чистая PQC иерархия PKI, работающая на двух отдельных виртуальных машинах, каждая со своим собственным контейнером 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
Каждый сертификат в цепочке — корневой ЦС, промежуточный ЦС — подписан исключительно с помощью ML-DSA-65 (NIST FIPS 204). Никакого RSA. Никакого ECDSA. Чистый PQC от начала до конца.
ML-DSA (ранее CRYSTALS-Dilithium) — это стандартизированный NIST пост-квантовый алгоритм цифровой подписи в рамках FIPS 204. Для этой лабораторной работы выбран набор параметров Dilithium3 (ML-DSA-65) — он обеспечивает 128-битную пост-квантовую безопасность и является рекомендуемым универсальным вариантом для большинства развертываний.
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
После завершения перейдите в интерфейс администратора по адресу:
https://<VM1_IP>:8443/ejbca/adminweb/
Импортируйте superadmin.p12 из контейнера в ваш браузер:
docker cp ejbca:/opt/ejbca/p12/superadmin.p12 ~/superadmin.p12
Пароль по умолчанию: ejbca
Затем следуйте статье на Medium, чтобы вручную настроить корневой ЦС.
chmod +x setup-lab.sh
sudo ./setup-lab.sh
После завершения перейдите в интерфейс администратора по адресу:
https://<VM2_IP>:8443/ejbca/adminweb/
Импортируйте superadmin.p12 аналогичным образом, затем следуйте статье на Medium, чтобы настроить промежуточный ЦС.
ejbca-datadocker-compose.ymlВся настройка EJBCA выполняется вручную через интерфейс администратора — профили сертификатов, криптотокены, создание ЦС, настройки CRL и OCSP. Это сделано намеренно. Скрипт запускает платформу. Статья на Medium документирует каждое ручное решение и причину его принятия.
| Компонент |
|---|
ACME — Протокол ACME (RFC 8555) не поддерживает ML-DSA для аутентификации ключей учетной записи. Разрешены только RSA и ECDSA. Включение ACME потребовало бы классического ключа учетной записи, что нарушило бы чистоту PQC-истории. IETF работает над черновиком PQC ACME. Этот практикум будет обновлен, когда он будет завершен.
Доверие браузеров — Ни один крупный магазин доверенных корневых сертификатов браузеров пока не распознает ML-DSA. Это частная лабораторная PKI, а не иерархия, пользующаяся общественным доверием. Это ожидаемо и правильно.
Мохаммад Амин Кокаш Инженер по безопасности GitHub · Medium
MIT
| ЦС |
|---|
| Статус |
|---|
| CRL | Корневой ЦС | ✅ |
| CRL | Промежуточный ЦС | ✅ |
| OCSP | Промежуточный ЦС | ✅ |
| OCSP | Корневой ЦС | ❌ Не применимо |