Я ищу решение для извлечения CA из экземпляра EJBCA, размещения его на внешнем диске, который, например, хранится в сейфе. Поэтому я сохраняю суб-CA только для подписания сертификатов конечных пользователей в экземпляре EJBCA.
Тогда я бы вернул его только тогда, когда мне нужно было снова сгенерировать суб-CA или отозвать уже созданный суб-CA.
Таким образом, я могу быть уверен, что даже если мой сервер скомпрометирован, я уверен, что скомпрометированы только оставшиеся вспомогательные CA, но мой корневой CA все еще действителен.
Есть решение, как это сделать?
Спасибо.
Отключение корневого ЦС - это разумная политика безопасности, так что это очень хорошее начало. Но если вы хотите, чтобы он был полностью разделен, вам не следует сначала создавать корневой ЦС и подчиненный ЦС на одном сервере, а затем удалять корневой ЦС - вместо этого вы должны настроить их отдельно с самого начала, чтобы вы не не нужно прилагать дополнительных усилий, чтобы разделить их. Я перечислю несколько способов сделать это ниже, а также способ просто заблокировать ключи, сохранив при этом фактические центры сертификации в одном месте.
Самый безопасный способ - это вложить деньги в проблему, т.е. получить отдельный сервер для корневого ЦС. Создайте корневой центр сертификации на этом сервере. Затем перейдите на сервер, на котором вы будете запускать выдающий ЦС, и создайте на нем вспомогательный ЦС. Попросите корневой CA подписать суб-CA; есть информация в руководство пользователя EJBCA о том, как это сделать. Как только это будет сделано, вы можете заблокировать сервер, отключив корневой ЦС.
Второй способ - иметь отдельный экземпляр EJBCA / JBoss и базу данных (обычно MySQL), где все данные хранятся на съемном диске. Преимущество в том, что у вас нет дополнительного сервера. Недостатком является некоторая дополнительная сложность того, что у вас есть - вам нужны отдельные файлы конфигурации и файлы конфигурации запуска / инициализации systemd и так далее. Но вы, по сути, поступите так же, как и с отдельным сервером, за исключением того, что вместо выключения всего сервера вы отключите JBoss и экземпляр базы данных, отключите диск, на котором находятся их данные, и заблокируйте диск. .
Вы можете оставить корневой ЦС вместе с выдающими ЦС, но удалить его закрытый ключ. Это фактически парализует его - он есть, но он ничего не может подписать, поэтому им нельзя злоупотреблять. Это самый дешевый способ, который также упрощает использование корневого центра сертификации. Пожалуйста, сделайте резервную копию перед первым тестированием!
Все шаги, указанные ниже, выполняются из командной строки, а не из веб-интерфейса. Вы можете сделать что-то из графического интерфейса, но вам по-прежнему нужен доступ к фактическому серверу, чтобы перемещать вещи, поэтому мне легче сделать все там для начала.
$ bin/ejbca.sh ca exportca TestCA /mnt/USBDrive/TestCA.p12 Using JBoss JNDI provider... Enter keystore password: YourVeryGoodPassword
Отключите USB-накопитель и заприте его в сейфе.
Удалите хранилище ключей с сервера
$ bin/ejbca.sh ca removekeystore TestCA Using JBoss JNDI provider...
Если вы сейчас посмотрите на графический интерфейс, вы увидите, что TestCA отключен и не может быть активирован.
$ bin/ejbca.sh ca restorekeystore TestCA /mnt/USBDrive/TestCA.p12 -s SignatureKeyAlias -e EncryptionKeyAlias Using JBoss JNDI provider... Enter keystore password: YourVeryGoodPassword $
И, конечно же, снова удалите хранилище ключей, как на шаге 3, когда закончите с тем, что вы делаете.