К основному содержимому

SSL pinning: что это такое и как работает в приложениях

Безопасность · 10.10.2026 · 4 мин чтения
Иллюстрация к статье «SSL pinning: что это такое и как работает в приложениях»

SSL pinning — это когда приложение доверяет не любому действительному сертификату от любого удостоверяющего центра, а заранее заданному сертификату или открытому ключу сервера, зашитому прямо в код.

Зачем нужен пиннинг

Пиннинг защищает от ситуации, когда соединение подтверждает сертификат, которому формально можно доверять, но он выпущен не для настоящего сервера: подставной удостоверяющий центр, перехват трафика на уровне корпоративной сети или скомпрометированный центр сертификации, выписавший чужой сертификат на нужное имя.

От чего пиннинг не защищает: от взлома самого сервера, от уязвимости в коде приложения и от утечки данных после того, как зашифрованное соединение уже установлено. Он проверяет только то, с кем именно установлено соединение, а не что происходит дальше.

Как обычно работает доверие без пиннинга

Без пиннинга приложение проверяет только одно: подписан ли сертификат сервера одним из центров, которым доверяет операционная система. Любой из сотен таких центров формально равноправен. Приложению безразлично, какой именно центр выпустил сертификат, лишь бы цепочка подписей сходилась к доверенному корню.

Что именно прикрепляют

Прикрепить можно разные части сертификата, и от выбора зависит, насколько часто придётся обновлять приложение.

Что прикрепляютНасколько хрупко при продлении сертификата
Сертификат целикомСамый хрупкий вариант: меняется при каждом продлении, даже если ключ остался тем же
Открытый ключПереживает продление, если ключ не менялся, ломается только при смене самого ключа
Промежуточный центрУстойчивее всего, но защищает слабее — доверие смещается на весь центр целиком

Главная опасность

При плановой смене сертификата на сервере приложение с устаревшим пиннингом перестаёт соединяться с сервером у всех пользователей одновременно — причём произойдёт это не постепенно, а сразу после переключения сертификата. Починить это можно только обновлением самого приложения, а обновление доходит до пользователей не мгновенно и не до всех.

Именно эта особенность — главная причина, по которой пиннинг часто снимают после первого же болезненного инцидента со сменой сертификата.

Что делают вместо и вместе с пиннингом

Несколько практик снижают риск, не отказываясь от идеи полностью.

Запасной прикреплённый ключ, добавленный заранее, позволяет заменить рабочий сертификат без обновления приложения — доверие остаётся, потому что один из прикреплённых вариантов продолжает совпадать. Срок годности самого пиннинга ограничивают по времени, чтобы устаревшая привязка не осталась в приложении навсегда. На стороне домена похожую по духу защиту даёт CAA-запись: она ограничивает, какие удостоверяющие центры вообще имеют право выпускать сертификат для домена — подробнее в статье CAA-запись DNS.

Когда пиннинг уместен, а когда вреден

Решение зависит от того, кто управляет обновлением клиента и насколько быстро обновления доходят до пользователей.

Тип приложенияНасколько уместен пиннинг
Мобильное приложение банка или платёжного сервисаУместен при налаженном запасном ключе и контроле обновлений
Массовое потребительское приложение с редкими обновлениямиРискован: массовый сбой у всех пользователей сразу
Внутренний клиент, который сам соединяется с собственным серверомУдобен — обе стороны контролируются одной командой
Обычный сайт, который открывают в браузереНе применяется: браузер не поддерживает пиннинг под управлением сайта

Частые вопросы

Что такое SSL pinning простыми словами?

Это способ, при котором приложение доверяет не любому действительному сертификату, а конкретному сертификату или ключу сервера, заранее зашитому в код. Даже формально верный сертификат от другого источника такое приложение примет только в том случае, если он совпадает с прикреплённым образцом.

Нужен ли пиннинг обычному сайту?

Нет, браузеры не предоставляют сайтам возможность задавать свой пиннинг, и обычный сайт полагается на стандартную проверку сертификата операционной системой. Пиннинг применяют в собственных мобильных приложениях и API-клиентах, где разработчик управляет и клиентом, и сервером.

Что будет при продлении сертификата?

Если приложение прикрепило сертификат целиком или ключ, а продление поменяло именно прикреплённую часть, приложение перестанет соединяться с сервером у всех пользователей сразу. Избежать этого помогает заранее добавленный запасной прикреплённый ключ, который переживёт продление.

Чем пиннинг отличается от HSTS?

HSTS заставляет браузер обращаться к сайту только по защищённому соединению и не принимать попытки снизить его до обычного HTTP. Пиннинг — про доверие к конкретному сертификату или ключу внутри уже защищённого соединения, и применяется обычно не в браузере, а в отдельном приложении.

Вывод

Пиннинг стоит добавлять осознанно и вместе с запасным ключом, а не по умолчанию: цена ошибки — полная остановка приложения у всех пользователей сразу. Какие типы сертификатов вообще существуют — в статье типы SSL-сертификатов.

Статья помогла?
← Назад в базу знаний Задать вопрос поддержке