Перейти к содержимому
Skip to content
← Все статьи

SSL Pinning: что это и когда использовать

Что такое SSL Pinning?

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

В стандартном TLS доверие иерархическое: браузер или ОС доверяют набору корневых CA (~150 на большинстве систем), и любой сертификат, подписанный ими (или их посредниками), принимается. Это удобно, но создаёт большую поверхность атаки. Если хотя бы один CA скомпрометирован, злоумышленники могут выпустить валидные сертификаты для любого домена.

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

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

Стандартная модель доверия через CA имеет известные слабости:

Пиннинг защищает от всех этих сценариев, позволяя приложению независимо верифицировать личность сервера.

Что можно «закрепить»

Существует несколько стратегий пиннинга с разными компромиссами:

Объект пиннингаЧто закрепляетсяГибкостьБезопасность
Leaf-сертификатТочный серверный сертификатНизкая — ломается при каждом обновленииНаивысшая
Публичный ключПубличный ключ сервера (SPKI-хэш)Средняя — переживает обновление сертификата при сохранении ключаВысокая
Промежуточный CAСертификат выдающего CAВысокая — любой сертификат от этого CA подходитСредняя
Корневой CAСертификат корневого CAНаивысшая — любая цепочка к этому корнюСамая низкая (из вариантов пиннинга)

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

Методы реализации

HTTP Public Key Pinning (HPKP) — устарел

HPKP был механизмом пиннинга через проверку HTTP-заголовков в браузерах:

Public-Key-Pins:
  pin-sha256="base64+primary==";
  pin-sha256="base64+backup==";
  max-age=5184000;
  includeSubDomains

HPKP устарел в 2018 году и удалён из Chrome 72. Причины: риск «окирпичивания» сайтов при ошибке в настройке (перманентный отказ в обслуживании), сложность ротации ключей и появление Certificate Transparency как альтернативы.

Пиннинг в мобильных приложениях

Пиннинг наиболее распространён в мобильных приложениях, где вы контролируете клиент:

// Android — OkHttp certificate pinning
CertificatePinner pinner = new CertificatePinner.Builder()
    .add("api.example.com",
         "sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAA=")
    .add("api.example.com",
         "sha256/BBBBBBBBBBBBBBBBBBBBBBBBBBBB=") // резервный
    .build();

OkHttpClient client = new OkHttpClient.Builder()
    .certificatePinner(pinner)
    .build();

Certificate Transparency как альтернатива

Certificate Transparency требует от CA логировать каждый выданный сертификат в публичные, аудируемые журналы. Браузеры проверяют наличие сертификатов в CT-логах. Это не предотвращает ложную выдачу, но делает её обнаруживаемой. С 2018 года Chrome требует CT-логирование для всех новых сертификатов.

Когда использовать пиннинг

Пиннинг уместен когда:

Пиннинг НЕ подходит для:

Риски и подводные камни

Лучшие практики

Заключение

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

Проверьте ваш сайт прямо сейчас

Проверить →
Другие статьи: SSL/TLS
SSL/TLS
TLS 1.3: что изменилось и почему это важно
16.03.2026 · 24 просм.
SSL/TLS
SSL/TLS сертификаты: как работает HTTPS
10.03.2025 · 26 просм.
SSL/TLS
Как проверить SSL-сертификат сайта: пошаговое руководство
12.03.2026 · 14 просм.
SSL/TLS
Certificate Transparency Logs: обнаружение поддельных сертификатов и мониторинг домена
16.03.2026 · 27 просм.