Коротка відповідь
seniorHTTPS — це протокол передачі даних через інтернет, який поєднує HTTP з TLS/SSL для шифрування. Клієнт встановлює TCP‑з’єднання, виконує TLS‑handshake, після чого надсилає HTTP‑запит у зашифрованому вигляді. Сервер відповідає, розкриваючи шифрування і повертаючи зашифрований HTTP‑response.
Повне пояснення
Що це і навіщо HTTPS — захищений варіант HTTP, що забезпечує конфіденційність і цілісність даних між клієнтом і сервером. Використовується для онлайн‑банкінгу, e‑комерції та будь‑яких додатків, де потрібна безпека.
Ключові принципи/терміни
- TLS (Transport Layer Security) – протокол шифрування, що замінює SSL.
- Handshake – процес узгодження криптографічних параметрів.
- Certificate Authority (CA) – орган, що видає цифрові сертифікати.
- Public/Private key – пара ключів для шифрування і підпису.
Як це працює
- TCP‑з’єднання: клієнт відкриває TCP‑соединение на порт 443.
- TLS‑handshake: клієнт запитує сертифікат сервера, перевіряє його підпис CA, обирає алгоритм шифрування і генерує симетричний ключ.
- HTTP‑запит: після успішного handshake клієнт надсилає HTTP‑запит, зашифрований симетричним ключем.
- HTTP‑response: сервер розшифровує запит, обробляє його і повертає зашифрований відповідь.
- Закриття: при завершенні сесії обидві сторони закривають TLS‑канал.
Практика і реалізація (JavaScript/TypeScript)
import https from 'https';
const options = { hostname: 'example.com', port: 443, path: '/', method: 'GET' };
const req = https.request(options, res => {
console.log(`statusCode: ${res.statusCode}`);
});
req.end();
Тестування
- Unit: перевірка функції, що генерує TLS‑options.
- Integration: використання
supertestзhttpsсервером. - E2E:
Playwrightдля перевірки HTTPS‑з’єднання через браузер.
Безпека і приватність
- Валідація сертифікатів: перевірка CN, SAN і дати дії.
- Перевага
HSTS(HTTP Strict Transport Security) для примусової HTTPS‑з’єднання. - Захист від
CRIME/BREACH: використання TLS 1.3.
Оптимізація і масштабування
- TLS‑session resumption:
Session IDабоTicketдля зменшення накладних витрат. - HTTP/2: мультиплексування запитів над одним TLS‑каналом.
Часті помилки і edge cases
- Невірний сертифікат →
ERR_CERT_AUTHORITY_INVALID. - Відсутність підтримки TLS 1.3 →
ERR_SSL_VERSION_OR_CIPHER_MISMATCH. - Перевищення часу handshake →
ERR_SSL_CLIENT_AUTH_CERT_NEEDED. - Підключення через проксі без
CONNECT→ERR_SSL_PROTOCOL_ERROR.
Діагностика
- OpenSSL s_client:
openssl s_client -connect example.com:443. - Wireshark: перевірка TLS‑handshake.
- Browser DevTools: вкладка Security для перегляду сертифікату.
Альтернативи
- HTTP/3 (QUIC): UDP‑базований протокол, що підтримує TLS 1.3.
- mTLS: двостороннє аутентифікація для сервіс‑на‑сервіс комунікації.