Хранение сертификатов X509 в БД – да или нет?

StackOverflow https://stackoverflow.com/questions/174149

  •  05-07-2019
  •  | 
  •  

Вопрос

Мне нужно хранить сертификаты открытого ключа и один сертификат закрытого ключа для собственного приложения.

Член нашей команды предложил хранить сертификаты X509 в базе данных, а не хранить их в хранилище сертификатов Windows, как мы делали до сих пор.Мне не нравится изобретать велосипед, но мне нужно хотя бы обдумать эту идею.это означало бы, что наши данные будут более централизованы, что, я полагаю, хорошо.

Первоначальные препятствия, которые я вижу, следующие:

  • Закрытый ключ все равно нужно где-то хранить, и я не знаю, является ли хорошей идеей втиснуть его в таблицу «открытых ключей».Мне также не нравится идея создания таблицы для одного элемента.Возможно, просто сохраните закрытый ключ как локальный файл?(например, файл .pfx).
  • Списки отзыва.Вероятно, нам придется настроить процесс для работы с отозванными открытыми ключами.

У меня нет большого опыта работы с сертификатами X509, поэтому мой вопрос:Есть ли какие-либо другие проблемы, с которыми мы можем столкнуться при хранении сертификатов открытых ключей в базе данных вместо использования хранилища сертификатов Windows?

Стоит иметь в виду, что это приложение будет развернуто на нескольких серверах бизнес-клиентов, поэтому хранение всех данных в одном месте упростит резервное копирование.Да, и рассматриваемое собственное приложение разрабатывается на C#..

Спасибо!

Это было полезно?

Решение

Какова цель вашего приложения?

Если вы обрабатываете все криптографические данные в своем приложении и можете ссылаться на файл сертификата PKCS#12 + секретный ключ, то, вероятно, использование маршрута к базе данных подойдет.

Если вам нужно использовать Windows Crypto API для доступа к сертификатам, вы, вероятно, захотите продолжать использовать встроенное хранилище сертификатов.Здесь вы получаете некоторые преимущества, поскольку можете защитить закрытый ключ на внешнем устройстве, например, на смарт-карте или аппаратном модуле безопасности (HSM).

Вам необходимо приложить значительные усилия для защиты закрытого ключа, если вы храните все на локальном диске.Обязательно используйте надежную парольную фразу и используйте лучшие практики для защиты этой парольной фразы в своем приложении.

Другие советы

Я бы не хотел перемещать закрытый ключ в какое-либо другое место, если это действительно не необходимо.Это не требуется, если ключ используется для подписи, и потребуется только в том случае, если ключ используется для расшифровки и вы хотите заархивировать его на будущее.Даже в этом случае центр сертификации, выдавший сертификат, обычно сможет выполнить архивирование и восстановление.Это, безусловно, относится к более популярным центрам сертификации, таким как Microsoft и Entrust.

Если вам необходимо сохранить его, зашифруйте его с помощью AES и ключа, который вы можете защитить либо в HSM (аппаратный модуль безопасности), либо на смарт-карте.Не оставляйте этот ключ в виде обычного текста (в файле или реестре).

Вы также хотели бы защитить этот ключ при передаче между местом его создания и центральной базой данных.SSL или VPN и т. д.

Списки отзыва публикуются центром сертификации в большинстве сред, обычно в LDAP или в каталоге, или в обоих.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top