Назад | Перейти на главную страницу

Проверка подлинности клиента SSL

В настоящее время у меня есть серверный SSL, поэтому клиенты имеют безопасное соединение с моим веб-сервером.

Я хочу реализовать клиентские SSL-сертификаты ДОПОЛНИТЕЛЬНО к обычному логину и паролю, но мне сложно понять, что именно должно произойти.

  1. Должен ли каждый пользователь получить свой сертификат?
    1. Должен ли он создаваться при создании учетной записи пользователя?
    2. Должен ли пользователь получать отдельный сертификат для каждого используемого устройства? (например, телефон, планшет, ПК)
    3. Какими должны быть поля в DN сертификата?
  2. Должен ли быть соответствующий закрытый ключ для каждого пользовательского сертификата или один ключ для всех сертификатов?
  3. Как распространяются эти пользовательские сертификаты? Есть ли автоматический способ их установки?
    1. Должны ли они храниться на сервере для загрузки?

Должен ли каждый пользователь получить свой сертификат?

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

  • Сертификаты должны создаваться для каждого пользователя при создании его учетной записи.
  • Сертификаты могут быть как для пользователей, так и для устройств.
    Это выбор реализации. Делайте то, что имеет смысл для вашей среды:
    • Если вы проверяете, что устройство авторизовано, имеет смысл сертификат для каждого устройства.
    • Если вы проверяете, что конкретный пользователь (U / P) является тем, кем они себя называют, сертификаты для каждого пользователя работают.

Должен быть один глобальный закрытый ключ или ключ для каждого сертификата?

Определенно один ключ на сертификат.

Все ваши пользовательские сертификаты должны быть общедоступной / частной парой, уникальной для пользователя (или устройства).
Они все должны быть подписанный одним доверенным лицом (сертификат CA вашей компании).


Как распространяются сертификаты пользователей?

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

Если вы храните пары сертификатов на сервере, вы должны быть уверены, что сервер безопасен - вы не хотите, чтобы кто-то получил в свои руки все ваши (действительные) сертификаты.
Повторный ввод всех ваших пользователей будет раздражать (и это довольно сложно объяснить).


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