> Что такое SSL pinning, зачем он нужен и как работает? (iOS, Swift, Android)

Уровень: junior · Роль: mobile · Категория: Технические вопросы

Компании: Иннотех

Стек: iOS, Swift, Android

> Пример ответа

SSL pinning (привязка SSL-сертификата) - это механизм защиты от атак типа "человек посередине" (MITM) на мобильных устройствах. В отличие от стандартной проверки цепочки сертификатов, которая доверяет любому сертификату, подписанному доверенным центром (CA), SSL pinning жёстко привязывает приложение к конкретному сертификату или публичному ключу сервера.

Зачем нужен:
На мобильных платформах (iOS, Android) злоумышленник может установить свой корневой сертификат на устройство (например, через перехват трафика в корпоративной сети или вредоносное ПО). Без pinning приложение спокойно примет поддельный сертификат, и трафик будет расшифрован. Pinning предотвращает это, проверяя, что сертификат сервера совпадает с заранее известным "отпечатком" (hash) или самим сертификатом, вшитым в код приложения.

Как работает:

  1. Разработчик получает сертификат сервера (или его публичный ключ) и вычисляет его хеш (например, SHA-256).

  2. Этот хеш вшивается в бинарник приложения (или загружается через безопасный канал при первом запуске).

  3. При каждом HTTPS-соединении приложение проверяет, что сертификат сервера соответствует сохранённому хешу.

  4. Если хеш не совпадает - соединение разрывается, даже если цепочка CA валидна.

Примеры реализации:

  • iOS (Swift): Используется URLSession с делегатом URLSessionDelegate, где в didReceive challenge проверяется SecTrustEvaluateWithError и сравнивается отпечаток сертификата.

  • Android (Kotlin/Java): Через TrustManager в HttpsURLConnection или OkHttp с кастомным CertificatePinner (например, OkHttpClient.Builder().certificatePinner(...)).

Важно:

  • Pinning требует обновления приложения при смене сертификата сервера (иначе приложение сломается).

  • Рекомендуется пинить публичный ключ, а не весь сертификат - это упрощает ротацию.

  • Для надёжности можно хранить несколько запасных ключей (backup pins).

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью