Вопрос к спецам по HTTPS/SSL.
Есть чудесный сервис CloudFlare, который в т.ч. позволяет проксировать SSL до вашего сайта. Ваш браузер открывает https://www.pupkin.ru, коннектится по факту к серверам CloudFlare, которые отдают свой сертификат, а ваши запросы пересылают на ваш физический сервер. Но как это работает? Пример вот: https://www.washingtonian.com/
Смотрим сертификат: он от ... ssl391151.cloudflaressl.com
Это что, MITM в чистом виде? Получается, все HTTPS соединения можно сниффить, просто имея какой-то валидный HTTPS сертификат?
Я понимаю, что тут идёт подмена DNS, а затем SNI. Но я не понимаю детали происходящего. Вообще. Мне казалось, браузер сверяет FQDN с common name в сертификате - по факту ничего такого нет.
Что самое интересное,
openssl s_client -quiet -connect cloudflare_protected_website.com:443
вываливается с ошибкой
SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert internal error:s23_clnt.c:744:
Т.е. что-то тут не так.
Объясните по пунктам как браузер открывает одно, ему дают другое, а он счастлив (DNS подмена ясна - тут никаких открытий - просто NS указаны от cloudflare).
Объясните по пунктам почему это нельзя использовать, чтобы снифить весь HTTPS трафик кого и где угодно.
Перемещено leave из talks