Certificate Pinning #
Есть такая дополнительная степень защиты соединений — certificate pinning. Идея в том, что приложение или браузер не доверяет просто любому сертификату от авторитетного центра, а ждёт Зачем это нужно #
Обычная схема TLS держится на доверии к центрам сертификации. Если с ними что-то случится — сертификат могут подменить, и пользователь об этом не узнает. Пиннинг как раз и выручает: приложение сравнивает полученный сертификат с «прибитым гвоздями» внутри себя. Не совпало — соединение просто не устанавливается.
В мобильных приложениях (Android, iOS) это широко используется как дополнительная защита от MITM-атак: трафик перехватить можно, а вот подложить другой сертификат не получится — клиент его отбракует.
Как это выглядит на практике #
Разработчики «вшивают» в код приложения отпечаток сертификата или ключа сервера. При соединении приложение сверяет, что сервер отдал тот же самый материал. Если нет — отрубает соединение, даже если формально сертификат выдал вполне доверенный центр.
Минус в том, что этот механизм нужно аккуратно обслуживать: сертификаты со временем меняются и истекают. Если забыть обновить пиннинг — можно внезапно положить легитимный доступ для всех пользователей, пока не выйдет новая версия приложения.
