[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-ustroystvo-pk-i-seti-kak-rabotaet-http-https-chto-takoe-tls":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":23,"progress":24,"seo":25},235,"kak-rabotaet-http-https-chto-takoe-tls",7,"ustroystvo-pk-i-seti","Устройство ПК и сети","🖥️","Как работает HTTP\u002FHTTPS? Что такое TLS?","\u003C!-- grade: junior\u002Fmiddle -->\n\n**HTTP (HyperText Transfer Protocol)** — протокол прикладного уровня (L7) для передачи данных в Интернете, основанный на модели «запрос-ответ»: клиент отправляет запрос, сервер возвращает ответ.\n\n**HTTPS (HTTP Secure)** — HTTP, обёрнутый в шифрование TLS, обеспечивающее конфиденциальность, целостность и аутентификацию.\n\n**TLS (Transport Layer Security)** — криптографический протокол, обеспечивающий защищённую передачу данных поверх TCP.\n\n> **Аналогия из жизни:** HTTP — это открытка, которую может прочитать любой почтальон по дороге. HTTPS — это письмо в запечатанном конверте с печатью: никто не может его прочитать, изменить или подделать отправителя. TLS — это сам процесс запечатывания и проверки печати.\n\n### Структура HTTP-запроса\n\n```\nGET \u002Fapi\u002Fusers HTTP\u002F1.1        ← Метод, путь, версия протокола\nHost: example.com              ← Заголовки (headers)\nContent-Type: application\u002Fjson\nAuthorization: Bearer token123\n                               ← Пустая строка (разделитель)\n{\"name\": \"John\"}               ← Тело (body, для POST\u002FPUT\u002FPATCH)\n```\n\n### Структура HTTP-ответа\n\n```\nHTTP\u002F1.1 200 OK                ← Версия, код статуса, описание\nContent-Type: application\u002Fjson ← Заголовки\nContent-Length: 27\n                               ← Пустая строка\n{\"id\": 1, \"name\": \"John\"}     ← Тело ответа\n```\n\n### Почему HTTP небезопасен\n\nHTTP передаёт данные **открытым текстом** (plaintext). Это означает:\n- Любой узел на пути (Wi-Fi точка, провайдер, маршрутизатор) может **прочитать** данные — пароли, cookies, персональные данные\n- Данные можно **изменить** на лету (MITM — Man-in-the-Middle)\n- Невозможно **проверить**, что сервер — тот, за кого себя выдаёт\n\n### HTTPS = HTTP + TLS\n\nHTTPS обеспечивает три гарантии:\n\n| Гарантия | Что даёт |\n|---|---|\n| **Конфиденциальность** | Данные зашифрованы, третьи лица не могут их прочитать |\n| **Целостность** | Данные не могут быть незаметно изменены при передаче |\n| **Аутентификация** | Сертификат подтверждает, что сервер — тот, за кого себя выдаёт |\n\nПо умолчанию HTTPS использует порт **443**.\n\n### TLS Handshake (TLS 1.2, упрощённо)\n\n```\nКлиент                                    Сервер\n   |--- ClientHello ---------------------->|  Версия TLS, поддерживаемые шифры, client random\n   |\u003C-- ServerHello -----------------------|  Выбранный шифр, server random\n   |\u003C-- Certificate -----------------------|  Сертификат сервера (X.509)\n   |\u003C-- ServerHelloDone -------------------|\n   |--- ClientKeyExchange ---------------->|  Pre-master secret (зашифрован публичным ключом сервера)\n   |--- ChangeCipherSpec ----------------->|  Переключаюсь на шифрование\n   |--- Finished ------------------------->|  Зашифрованное подтверждение\n   |\u003C-- ChangeCipherSpec ------------------|  Сервер тоже переключается\n   |\u003C-- Finished --------------------------|  Зашифрованное подтверждение\n   |                                       |\n   |====== Зашифрованный HTTP-трафик ======|\n```\n\n**В TLS 1.3** handshake упрощён до **1 RTT** (round-trip time), что быстрее:\n- Клиент сразу отправляет свои параметры ключа в ClientHello\n- Сервер может ответить зашифрованными данными уже во втором сообщении\n- Поддерживается **0-RTT** для повторных подключений (ценой ослабления защиты от replay-атак)\n\n### Сертификат X.509\n\n- Содержит: доменное имя, публичный ключ сервера, срок действия, имя издателя (CA)\n- Подписан **удостоверяющим центром (CA — Certificate Authority)**: Let's Encrypt, DigiCert, Comodo\n- Клиент (браузер) проверяет подпись сертификата по **цепочке доверия** до корневого CA, встроенного в ОС\u002Fбраузер\n- Если цепочка нарушена или сертификат просрочен — браузер показывает предупреждение\n\n### Для Java-разработчика\n\n- Spring Boot HTTPS: настройка через `server.ssl.*` в `application.properties`\n- Java хранит доверенные CA-сертификаты в **truststore** (`$JAVA_HOME\u002Flib\u002Fsecurity\u002Fcacerts`)\n- Для добавления самоподписанного сертификата: `keytool -importcert -file cert.pem -keystore cacerts`\n- `RestTemplate`, `WebClient`, `HttpClient` — поддерживают HTTPS из коробки\n- Типичная production-конфигурация: TLS-терминация на Nginx\u002FALB, а не в самом Spring Boot\n\n### Вывод\n\nHTTP — основа веб-коммуникации, но без TLS он небезопасен. HTTPS (HTTP + TLS) стал стандартом де-факто: браузеры помечают HTTP-сайты как небезопасные, поисковики снижают их рейтинг. TLS обеспечивает шифрование, целостность и аутентификацию через механизм сертификатов.\n\n> **На собеседовании:** часто просят описать, что происходит при вводе `https:\u002F\u002Fexample.com` в браузере. Важно упомянуть DNS-разрешение → TCP handshake → TLS handshake → HTTP-запрос. Также спрашивают разницу между TLS 1.2 и 1.3 (1.3 быстрее — 1 RTT vs 2 RTT, удалены устаревшие шифры).","","junior",[15,16,17,18,19,20,21,22],"x509","сети","сертификат","http","tls","https","ssl","шифрование",[],null,{"title":26,"description":27,"ogTitle":28,"ogDescription":29,"keywords":30,"schemaAnswer":37,"featuredSnippetReady":38},"HTTP\u002FHTTPS и TLS — структура запроса, TLS handshake и сертификаты — Gymterview","HTTP — протокол запрос-ответ. HTTPS = HTTP + TLS: шифрование, целостность, аутентификация. TLS handshake: ClientHello → Certificate → KeyExchange. Сертификат X.509 и CA.","HTTP\u002FHTTPS и TLS — как работает шифрование веб-трафика","HTTP — открытый текст. HTTPS оборачивает HTTP в TLS: шифрование, целостность, аутентификация. TLS handshake согласовывает ключи. Сертификат X.509 подписан CA.",[31,32,33,34,35,36],"HTTP HTTPS разница","TLS что это","TLS handshake","HTTPS шифрование","сертификат X.509","SSL TLS","HTTP — протокол прикладного уровня на модели запрос-ответ, данные передаются открытым текстом. HTTPS = HTTP + TLS: обеспечивает шифрование, целостность и аутентификацию (порт 443). TLS Handshake: ClientHello → ServerHello + Certificate (X.509) → ClientKeyExchange → Finished. Сертификат содержит публичный ключ и подписан CA (Let's Encrypt, DigiCert). TLS 1.3 упрощён до 1 RTT.",true]