1

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

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

Какой из этих вариантов идеален или считается лучшей практикой?

Какова наилучшая практика хранения клиентских сертификатов?

Редактировать: Мой сервер фактически запускает службу на компьютере под управлением Windows с помощью IIS, которую будут использовать другие пользователи.

+1

Сертификаты являются общедоступной информацией. Они могут быть опубликованы как телефонный номер в телефонной книге. На самом деле нет лучшей практики для их обработки. Иногда вы увидите некоторые проблемы, связанные с конфиденциальностью, такие как утечка информации о пользователе на своих пользователях на основе общедоступной информации, такой как сертификаты и файлы журналов. Но это, похоже, не применимо здесь. Соответствующий закрытый ключ (или файл PKCS 12) - это другая история. – jww

+0

Нет ничего безопасного в том, чтобы иметь только сертификат клиента, и нет особых причин для этого. Что нужно проверить, является ли * владелец * сертификата * авторизованным * использовать ваш сервер. Для этого вам не нужны сертификаты, а только таблица subjectDN. Наличие фактического сертификата также вызывает проблемы, когда приходит время для обновления клиента. – EJP

ответ

1

1.) Для того, чтобы ответить на ваш фактический вопрос:

Вы можете хранить сертификаты X.509 в любом месте вы хотите, давайте называть местоположение по truststore. Если это ваша файловая система, база данных или где-то еще. Сертификаты X.509 могут быть преданы гласности всем, они не содержат никакой конфиденциальной информации. В сертификате X.509 хранится только открытый ключ публичной/частной ключевой пары.

Вам нужно только убедиться, что NO ONE ELSE не может добавлять/удалять/изменять сертификаты в вашем доверенном магазине. В противном случае злоумышленник сможет добавить, например, свой сертификат X.509 в ваш магазин доверия, и вы сразу же доверяете ему.

2.) Что касается вашего замечания

I will match the client cert from the incoming request to see if it matches any of the ones already stored, and if it does, the request will be honored. 

Простое сопоставление сертификатов недостаточно. Любой может отправить вам любой сертификат. Тот факт, что кто-то отправил вам сертификат, является no, подтверждающий, что данное лицо является владельцем закрытого ключа, соответствующего этому сертификату.

Для того, чтобы человек, который отправил вам запрос (ваш входящий запрос), должен сгенерировать подпись, например, входящий запрос. Если вы получаете входящий запрос вместе с подписью, вы можете использовать сертификат X.509, чтобы проверить, действительна ли подпись. Существует множество сигнатурных схем, вам нужно понять, что вы хотите использовать (некоторые из них простые, некоторые более сложные).

 Смежные вопросы

  • Нет связанных вопросов^_^