До основного вмісту

SSL pinning: що це таке і як працює в застосунках

Безпека · 10.10.2026 · 4 хв читання
Ілюстрація до статті «SSL pinning: що це таке і як працює в застосунках»

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

Пінінг захищає від ситуації, коли з'єднання підтверджує сертифікат, якому формально можна довіряти, але він виданий не для справжнього сервера: підставний засвідчувальний центр, перехоплення трафіку на рівні корпоративної мережі або скомпрометований центр сертифікації, що виписав чужий сертифікат на потрібне ім'я.

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

Як зазвичай працює довіра без пінінгу

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

Що саме прикріплюють

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

Що прикріплюютьНаскільки крихко при продовженні сертифіката
Сертифікат цілкомНайкрихкіший варіант: змінюється при кожному продовженні, навіть якщо ключ лишився тим самим
Відкритий ключПереживає продовження, якщо ключ не змінювався, ламається лише при зміні самого ключа
Проміжний центрНайстійкіший, але захищає слабше — довіра зміщується на весь центр цілком

Головна небезпека

При плановій зміні сертифіката на сервері застосунок із застарілим пінінгом перестає з'єднуватися з сервером у всіх користувачів одночасно — причому станеться це не поступово, а одразу після перемикання сертифіката. Полагодити це можна лише оновленням самого застосунку, а оновлення доходить до користувачів не миттєво і не до всіх.

Саме ця особливість — головна причина, через яку пінінг часто знімають після першого ж болісного інциденту зі зміною сертифіката.

Що роблять замість і разом з пінінгом

Декілька практик знижують ризик, не відмовляючись від ідеї повністю.

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

Коли пінінг доречний, а коли шкідливий

Рішення залежить від того, хто керує оновленням клієнта і наскільки швидко оновлення доходять до користувачів.

Тип застосункуНаскільки доречний пінінг
Мобільний застосунок банку чи платіжного сервісуДоречний за налагодженим запасним ключем і контролем оновлень
Масовий споживчий застосунок з рідкісними оновленнямиРизикований: масовий збій у всіх користувачів одразу
Внутрішній клієнт, що сам з'єднується з власним серверомЗручний — обидві сторони контролюються однією командою
Звичайний сайт, що відкривають у браузеріНе застосовується: браузер не підтримує пінінг під керуванням сайту

Часті питання

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

Це спосіб, за якого застосунок довіряє не будь-якому дійсному сертифікату, а конкретному сертифікату чи ключу сервера, заздалегідь зашитому в код. Навіть формально правильний сертифікат з іншого джерела такий застосунок прийме лише тоді, коли він збігається з прикріпленим зразком.

Чи потрібен пінінг звичайному сайту?

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

Що станеться при продовженні сертифіката?

Якщо застосунок прикріпив сертифікат цілком або ключ, а продовження змінило саме прикріплену частину, застосунок перестане з'єднуватися з сервером у всіх користувачів одразу. Уникнути цього допомагає заздалегідь доданий запасний прикріплений ключ, який переживе продовження.

Чим пінінг відрізняється від HSTS?

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

Висновок

Пінінг варто додавати усвідомлено і разом із запасним ключем, а не за умовчанням: ціна помилки — повна зупинка застосунку у всіх користувачів одразу. Які типи сертифікатів взагалі існують — у статті типи SSL-сертифікатів.

Чи була стаття корисною?
← Назад до бази знань Поставити питання підтримці