Перейти до вмісту
Glossary 2 хв читання 906 переглядів

SSL-піннінг

Дізнайтеся про SSL-піннінг, критичний механізм безпеки, що запобігає атакам типу "людина посе

Security
SSL-піннінг

Закріплення SSL (SSL Pinning) — це механізм безпеки, за якого клієнтська програма жорстко кодує або "закріплює" очікуваний криптографічний сертифікат або відкритий ключ сервера, що призводить до збою з'єднань, коли проксі-сервер намагається перехопити трафік за допомогою іншого, навіть якщо дійсного, сертифіката. Цей процес підвищує безпеку, запобігаючи атакам "людина посередині" (MITM), які покладаються на представлення довіреного, але неочікуваного сертифіката.

Як працює закріплення SSL

Закріплення SSL працює на стороні клієнта, розширюючи стандартний процес валідації рукостискання TLS. Зазвичай, під час рукостискання TLS клієнт перевіряє сертифікат сервера за своїм сховищем довіри (колекцією довірених кореневих Центрів сертифікації). Якщо ЦС зі сховища довіри підписав сертифікат сервера, з'єднання продовжується.

При закріпленні SSL клієнтська програма зберігає конкретний ідентифікатор — повний сертифікат або його відкритий ключ — для очікуваного сервера. Коли ініціюється з'єднання:
1. Сервер надає свій сертифікат.
2. Клієнт виконує стандартну перевірку ланцюжка довіри, використовуючи своє сховище довіри ЦС.
3. Додатково, клієнт порівнює наданий сертифікат або відкритий ключ сервера зі своїм попередньо закріпленим значенням.
4. Якщо обидві перевірки пройдені (довірений ЦС і закріплене значення збігаються), з'єднання продовжується.
5. Якщо закріплене значення не збігається, навіть якщо сертифікат підписаний довіреним ЦС, з'єднання негайно припиняється з помилкою валідації.

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

Типи закріплення SSL

Існує два основні типи закріплення SSL:

  • Закріплення сертифіката (Certificate Pinning): Клієнт закріплює точний сертифікат X.509 сервера. Цей метод є дуже специфічним, але вимагає оновлення програми щоразу, коли сертифікат сервера оновлюється або змінюється.
  • Закріплення відкритого ключа (Public Key Pinning): Клієнт закріплює відкритий ключ, витягнутий із сертифіката сервера. Це забезпечує більшу гнучкість, ніж закріплення сертифіката, оскільки відкритий ключ зазвичай залишається постійним, навіть якщо сам сертифікат оновлюється (за умови, що пара ключів не змінюється). Це часто реалізується шляхом закріплення хешу інформації про відкритий ключ суб'єкта (SPKI).
Характеристика Закріплення сертифіката Закріплення відкритого ключа
Що закріплюється Повний сертифікат X.509 Відкритий ключ (наприклад, хеш SPKI)
Гнучкість Низька; вимагає оновлення програми при оновленні сертифіката Вища; дозволяє оновлення сертифіката з тим самим ключем
Вплив на оновлення Високий; потрібне оновлення програми, якщо сертифікат змінюється Низький; оновлення програми лише при зміні пари ключів
Специфічність Дуже висока Висока
Ризик впровадження Вищий ризик "зламати" програму, якщо погано керувати Нижчий ризик, більш стійкий до змін сертифікатів

Приклад: Концептуальне закріплення Android (Java)

```java
import okhttp3.CertificatePinner;
import okhttp3.OkHttpClient;
import okhttp3.Request;

public class PinnedHttpClient {

public static void main(String[] args) throws Exception {
    // Приклад хешу SHA256 відкритого ключа.
    // У реальній програмі це було б отримано з сертифіката цільового сервера.
    String hostname = "api.example.com";
    String sha256_publicKey_hash = "sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; // Замініть на фактичний хеш

    CertificatePinner certificatePinner = new CertificatePinner.Builder()
            .add(hostname, sha256_publicKey_hash)
            .build();

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

    Request request = new Request.Builder()
            .url("https://" + hostname + "/data")
            .build();

    // Цей виклик завершиться невдачею, якщо відкритий ключ сервера не збігається із закріпленим хешем,
    // навіть якщо сертифікат підписаний довіреним ЦС.
    try {
        client.newCall(request).execute();
        System.out.println("З'єднання успішне (або було б, якби викона
Оновлено: 04.03.2026
Назад до категорії

Читайте також

Glossary 3 хв

Що таке мобільний проксі? Пояснення 4G/5G проксі

Мобільний проксі спрямовує трафік через реальний 4G/5G пристрій, надаючи вам IP-адресу оператора, яку використовують тисячі реальних користувачів — тип, який найважче заблокувати. Ось як працює GProxy і коли його варто використовувати.

Glossary 3 хв

Що таке ISP проксі? Пояснення статичних резидентських проксі-серверів

ISP-проксі — це статична IP-адреса, розміщена в дата-центрі, але зареєстрована у резидентного ISP — резидентна довіра зі швидкістю дата-центру та фіксованою IP. Ось як вони працюють і коли їх використовувати.

Glossary 3 хв

HTTP vs HTTPS Proxy: у чому різниця?

HTTP-проксі може читати ваш вебтрафік; HTTPS-проксі тунелює його зашифрованим через CONNECT. Ось справжня різниця, що саме може бачити проксі та який з них використовувати.

Glossary 4 хв

Що таке проксі? Повний посібник для початківців

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

Glossary 4 хв

SOCKS5 vs HTTP Proxy: відмінності, швидкість та коли використовувати кожен з них

SOCKS5 та HTTP проксі вирішують різні завдання. HTTP проксі розуміє вебтрафік і може кешувати або фільтрувати його; SOCKS5 наосліп перенаправляє будь-яке TCP/UDP з'єднання — торенти, ігри, електронну пошту, а не лише вебперегляд. Жоден з них не шифрує трафік сам по собі. Ось коли саме кожен з них виграє.

Glossary 1 хв

CDN та Проксі: Як вони працюють

CDN та проксі — як вони працюють разом — термін з галузі проксі та мережевих технологій.

Спробуйте наші проксі

20,000+ проксі в 100+ країнах світу

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.