Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Чим HTTPS відрізняється від HTTP?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)HTTPS - це HTTP поверх шару TLS: дані шифруються, сервер автентифікується SSL/TLS-сертифікатом, а цілісність повідомлень перевіряється; працює на порту 443 замість 80 і вимагає сертифіката від довіреного центру. **Ключове:** HTTP передає все у відкритому вигляді (паролі, cookies, токени можна перехопити), тому сьогодні HTTPS - обов'язковий стандарт для будь-якого сучасного сайту чи API.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення## 1. Базова різниця | Характеристика | **HTTP** | **HTTPS** | |---|---|---| | Розшифрування | HyperText Transfer Protocol | HyperText Transfer Protocol Secure | | Безпека | Не шифрує дані | Шифрує дані (TLS/SSL) | | Порт за замовчуванням | 80 | 443 | | Префікс в URL | `http://` | `https://` | | Сертифікат | Не потрібен | Потрібен SSL/TLS-сертифікат | | Використовується для | Внутрішні мережі, тести, старі сайти | Усі сучасні сайти й API | > Простіше кажучи: **HTTPS = HTTP + шифрування + автентифікація + захист цілісності.** ## 2. Що таке HTTP HTTP - це **простий текстовий протокол** для передачі даних між клієнтом (браузером, застосунком) і сервером. Коли ти надсилаєш запит `GET /`, браузер відкрито надсилає його по мережі, а сервер відповідає текстом. Приклад (у вигляді "сирих" даних): ```javascript GET /login HTTP/1.1 Host: example.com ``` Відповідь: ```javascript HTTP/1.1 200 OK Content-Type: text/html ``` Мінус: усе передається **у відкритому вигляді**, включно з паролями, cookies і токенами - будь-хто, хто перехопить трафік (наприклад, через Wi-Fi), зможе прочитати чи підмінити дані. ## 3. Що додає HTTPS HTTPS використовує **TLS (Transport Layer Security)** - це шар між TCP і HTTP, який: - **шифрує** дані, що передаються (ніхто не може їх прочитати); - **автентифікує сервер** (гарантія, що ти спілкуєшся зі справжнім сайтом); - **перевіряє цілісність** даних (ніхто не підмінив повідомлення дорогою). ## 4. Як працює HTTPS (у 3 кроки) 1. **Клієнт підключається до сервера** на порту 443 і каже: "Хочу встановити захищене з'єднання". 2. **Сервер надсилає свій TLS-сертифікат**, виданий довіреним центром (CA). 3. **TLS-рукостискання (handshake):** - клієнт перевіряє сертифікат, - сторони домовляються про алгоритми шифрування, - створюють спільний сеансовий ключ, - тепер увесь трафік шифрується цим ключем. Далі HTTP-запити йдуть **всередині** зашифрованого тунелю TLS. Ззовні видно лише те, що ти підключений до сайту, але не те, що саме ти передаєш. ## 5. Навіщо потрібен сертифікат SSL/TLS-сертифікат: - підтверджує, що сайт - **справжній** (його видав довірений центр, наприклад Let's Encrypt); - містить **публічний ключ** для встановлення захищеного каналу; - має термін дії (зазвичай 90 днів чи 1 рік). Без сертифіката браузери: - показують червоне попередження "Не захищено"; - можуть **блокувати** доступ до сайту. ## 6. Чому HTTPS - стандарт сьогодні - Захист логінів, паролів, платежів, токенів і cookies. - SEO: Google понижає сайти без HTTPS. - Сучасні API, Service Workers, PWA - вимагають HTTPS. - Усі браузери за замовчуванням переходять на `https://`. ## 7. Аналогія > HTTP - це листівка: усі на пошті можуть її прочитати. > HTTPS - це конверт із замком: лише адресат може відкрити й зрозуміти, що всередині. ## 8. Технічно | Компонент | HTTP | HTTPS | |---|---|---| | Протокол рівня OSI | Прикладний | Прикладний (поверх TLS) | | Порт | 80 | 443 | | Шифрування | Немає | TLS (AES, RSA, ECDHE та ін.) | | Перевірка цілісності | Немає | Є (HMAC) | | Продуктивність | Швидше (без шифрування) | Трохи повільніше, але безпечно | | Сумісність | Усі клієнти | Усі сучасні клієнти | ## 9. У Node.js це виглядає так - HTTP-сервер: ```javascript import http from 'node:http'; http.createServer((req, res) => res.end('Hello HTTP')).listen(80); ``` - HTTPS-сервер: ```javascript import https from 'node:https'; import fs from 'node:fs'; const options = { key: fs.readFileSync('key.pem'), cert: fs.readFileSync('cert.pem'), }; https.createServer(options, (req, res) => { res.end('Hello HTTPS'); }).listen(443); ``` ## 10. Коротко > **HTTP** - передає дані відкритим текстом. > **HTTPS** - використовує шифрування (TLS) і сертифікат для безпечної передачі. > > Сьогодні HTTPS - обов'язковий стандарт: він захищає користувачів, підвищує довіру, покращує SEO і забезпечує безпеку всієї веб-інфраструктури.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.