#ssl
#ssl
Вопрос:
Я пытаюсь настроить 2-стороннюю взаимную аутентификацию ssl для своего веб-приложения. В настоящее время я не настроил свой клиент и тестирую свой веб-сервис через браузер.
Я создал клиентский сертификат с помощью инструмента keychain на своем Mac и импортировал файл certificate.p12 в Firefox. У меня также есть файл certificate.cert. Насколько я понимаю, мне нужно добавить этот файл сертификата в хранилище доверия моих серверов.
Для этого мне нужно использовать следующую команду:
keytool -import -trustcacerts -alias <hostname of DP> -file <your file.crt> -keystore <truststorefile>
Однако, что мне добавить в качестве имени хоста моей системы? Что браузер покажет имя хоста для моего веб-сервера?
Ответ №1:
Во-первых, если у вас есть сертификаты клиента, выданные либо известным центром сертификации (например, Verisign, GoDaddy и т. Д.), Либо локально доверенным центром сертификации (например, вашим работодателем), вам не нужно ничего делать. Клиент просто предоставит сертификат с цепочкой, которая ведет к уже доверенному центру сертификации.
Если вы выпустили клиентские сертификаты из своего собственного центра сертификации, вам следует добавить сертификат центра сертификации (root) только в хранилище доверия сервера. Тогда все сертификаты клиентов, выданные этим центром сертификации, будут проверены без дальнейших усилий. Если вы сделаете сертификат CA долговечным, как это обычно делается, вы даже можете обновлять и / или заменять клиентские сертификаты без каких-либо усилий на сервере. И вы можете автоматически отозвать их, если настроили распространение CRL и / или OCSP, хотя центры сертификации DIY не всегда хотят прилагать к этому усилия.
Если вы создали самозаверяющий сертификат клиента, тогда и только тогда вам нужно добавить этот конкретный сертификат в хранилище доверия сервера. Хотя сертификаты сервера SSL / TLS должны быть идентифицированы по имени (именам) хоста (ов) сервера, сертификаты клиентов не требуются, а сертификаты CA (которые обычно находятся в вашем хранилище доверия по умолчанию) никогда не имеют имя хоста в качестве субъекта (хотя некоторые расширения обычно содержат URL-адреса, содержащие имена хостов). Сертификаты Codesigning также не должны использовать имя хоста.
Псевдоним записи сертификата в Java truststore не обязательно должен быть именем хоста; он должен быть уникальным, хотя он должен быть мнемоническим для субъекта сертификата. Если, например, ваши клиентские сертификаты предназначены для пользователей с именами Алиса и Боб (или, что более вероятно, для их компьютеров или любых других устройств), вы можете просто использовать alice
and bob
в качестве псевдонимов.