Недавно мы приобрели сертификат SSL для нашего домена. Мы преобразовали все сертификаты в хранилище ключей Java, но теперь мы спрашиваем себя, где мы должны хранить их для дальнейшего использования.
Используют ли люди управление исходным кодом, например, BitBucket, для этих типов файлов или просто генерируют каждый раз, когда это необходимо, или что-то еще?
Нам интересно, есть ли стандартное решение или какие-либо "лучшие практики" для хранения этих сертификатов для будущего использования.
ssl-certificate
certificate
best-practices
AmericanKryptonite
источник
источник
Ответы:
Есть несколько решений:
Один из вариантов - это конкретное хранилище ключей либо на основе аппаратного устройства, либо модуля аппаратного обеспечения безопасности, либо аналога на основе программного обеспечения.
Другой способ - просто отозвать старый ключ и сгенерировать новую пару секретный / открытый ключ при возникновении ситуации. Это несколько сдвигает проблему от поддержания безопасности ключа к защите имени пользователя / пароля учетной записи с поставщиком сертификатов и их процедур для повторной выдачи. Преимущество заключается в том, что большинство организаций уже имеют привилегированное решение для управления учетными записями, например 1 2
Существует несколько способов автономного хранения: от распечатки печатной копии пары закрытых и открытых ключей, включая пароль (но это будет собака для восстановления), до простого хранения их на цифровых носителях, рассчитанных на длительное хранение. ,
Действительно плохие места - это GitHub, ваша команда WiKi или сетевой ресурс (и вы поняли).
Обновление 2015/4/29: Keywhiz кажется интересным подходом.
источник
Нет, сертификаты SSL не входят в систему контроля версий, по крайней мере, в часть закрытого ключа.
Обращайтесь с ними так же, как с паролем. Наши фактически хранятся точно так же, как и наши пароли - в KeePass. Он позволяет прикреплять файлы и шифруется.
источник
Если вы поместите закрытый ключ в систему контроля версий, любой, кто имеет к нему доступ, сможет выдать себя за ваш сервер. Если ваш веб-сервер не использует PFS (совершенная прямая секретность), то также возможно расшифровать любой захваченный трафик SSL с помощью общедоступных инструментов с открытым исходным кодом, таких как Wireshark.
Вы можете защитить ключ с помощью DES или AES, зашифровав его парольной фразой с использованием OpenSSL. OpenSSL доступен для Linux, OSX и Windows.
OpenSSL также может удалить фразу-пароль, если она не удобна (например, на веб-сервере, который запускается автоматически, но не поддерживает автоматический ввод фраз-паролей).
Добавление ключевой фразы с использованием шифрования AES (более безопасно, чем DES): -
Удаление фразы-пароля (вам будет предложено ввести фразу-пароль): -
источник
Другой вариант, после прочтения о KeyWhiz, был Хранилище HashiCorp. Это не просто менеджер паролей, а хранилище секретов, я думаю, что-то похожее на KeyWhiz. Он написан на GO, и клиент также работает как сервер, и подключается к множеству бэкэндов и методов аутентификации. Vault также с открытым исходным кодом, с опцией Enterprise также.
Поскольку ключи SSL и сертификаты являются просто текстовыми файлами, вы можете кодировать их с помощью base64 и сохранять их в виде строки в Vault или даже просто в виде текста в Vault. Здесь нет WebUI или GUI, его командной строки или скриптов, и он имеет очень хороший, стабильный веб-API для загрузки.
источник
Я бы порекомендовал заглянуть в автономный HSM (например, аппаратный токен шифрования или CAC) для хранения закрытого ключа и сертификата. Это не только защищает закрытый ключ от случайного взлома, но также обеспечивает некоторую базовую криптографическую разгрузку.
Если у вас есть больше криптографических активов для управления, я бы порекомендовал обратиться к программному обеспечению Enterprise Key & Certificate Management, которое может автоматизировать обновления, отслеживать жизненный цикл, автоматизировать подготовку к конечным точкам и т. Д. Большинство из них хранит актив в зашифрованном виде в состоянии покоя. CLOB в базе данных.
источник