SSL-сертификат принцип работы
Объясните пожалуйста про удостоверяющие SSL-сертификаты. Сколько не читал так и не смог понять механизма их работы.
Как я понимаю SSL-Сертификаты ввели, как противодействие перехвата публичных ключей в асимметричном шифровании, подмену этих ключей и как итог расшифровка, просушка и изменение зашифрованого трафика между Клиентом и Сервером.
Поэтому прежде, чем обменяться публичными ключами, Сервер на GET-запрос Клиента сначала посылает ему удостоверяющий Сертификат.
И тут все, я ничего не понимаю.
-Что из себя представляет этот сертификат?
-как тут задействуется Удостоверяющий центр и его цифровая подпись ?
-Почему нельзя перехватить сертификат и подсунуть свой ? итд...
Ответы (2 шт):
Сертификат служит для проверки что запрошенный сайт является подлинным, а не кто-то им притворяется. Проверив его подпись по центру сертификации браузер решает доверять ли ему.
В сертификате есть открытый ключ который служит шифрования общего ключа (pre master key) при 4х стороннем обмене ключами шифрования.
Если не вдаваться в сложную математику, и совсем на пальцах:
- В вашей операционной системе (и/или в браузере) уже есть много сертификатов корневых УЦ, которые установлены изначально.
- Когда браузер соединяется с сайтом по https, сайт первым делом отдаёт свой сертификат подписанный одним из корневых УЦ (возможно не напрямую, а через цепочку подписей).
- Браузер (про помощи сложной математики) проверяет что подпись (подписи) настоящие и что сертификат подходит к домену который он запрашивал.
- Далее (про помощи другой сложной математики) браузер и сервер договариваются о сессионном ключ шифрования
- и вся дальнейшая переписка между ними шифруется этим ключом.
Что из себя представляет этот сертификат?
Файл в котором описан срок действия сертификата, для каких доменов он подходит и публичный ключ от асимметричного шифрования. Это файл подписан УЦ и именно эту подпись проверяет браузер на шаге 3.
как тут задействуется Удостоверяющий центр и его цифровая подпись?
Владелец сервера заранее подписывает свой файл в УЦ. УЦ проверяет что домен(-ы) в сертификате действительно принадлежат владельцу сервиса. Сертификаты корневых УЦ уже есть у вашего браузера.
Почему нельзя перехватить сертификат и подсунуть свой?
Можно. Но перехватывающий в общем случае не сможет подсунуть свой сертификат для нужного домена с действительной подписью.
Именно из-за этой угрозы все очень скептически смотрят на российские корневые сертификаты, т.к. опасаются что государственный УЦ «забудет» проверить что ООО «Рога и копыта» владеют доменом google.com.