[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-setevaya-bezopasnost-kak-rabotaet-tls-ssl-i-chto-takoe-tsepochka-doveriya-sertifikatov":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":16,"progress":17,"seo":18},846,"kak-rabotaet-tls-ssl-i-chto-takoe-tsepochka-doveriya-sertifikatov",24,"setevaya-bezopasnost","Сетевая безопасность","🔒","Как работает TLS\u002FSSL и что такое цепочка доверия сертификатов?","TLS (Transport Layer Security) — криптографический протокол, обеспечивающий конфиденциальность и целостность данных при передаче по сети. SSL — устаревший предшественник TLS. В production используется TLS 1.2 и TLS 1.3.\n\n### Процесс TLS Handshake (TLS 1.2)\n\n```\nКлиент                                          Сервер\n   │──── ClientHello (версии TLS, cipher suites) ──>│\n   │\u003C─── ServerHello (выбранный cipher suite) ──────│\n   │\u003C─── Certificate (сертификат сервера) ──────────│\n   │\u003C─── ServerKeyExchange (параметры DH) ──────────│\n   │\u003C─── ServerHelloDone ──────────────────────────│\n   │──── ClientKeyExchange (предмастер-секрет) ───>│\n   │──── ChangeCipherSpec ─────────────────────────>│\n   │──── Finished (зашифровано) ───────────────────>│\n   │\u003C─── ChangeCipherSpec ─────────────────────────│\n   │\u003C─── Finished (зашифровано) ───────────────────│\n   │\u003C═══ Зашифрованный обмен данными ══════════════>│\n```\n\nВ TLS 1.3 handshake сокращён до одного round-trip (1-RTT), что значительно ускоряет установку соединения.\n\n### Цепочка доверия сертификатов\n\n```\nRoot CA (корневой центр сертификации)\n  │ подписывает\n  ▼\nIntermediate CA (промежуточный центр сертификации)\n  │ подписывает\n  ▼\nLeaf Certificate (сертификат сервера \u002F конечного субъекта)\n```\n\n- Root CA — самоподписанный сертификат, хранится в хранилище доверенных сертификатов ОС\u002Fбраузера\n- Intermediate CA — промежуточный сертификат, подписанный Root CA\n- Leaf Certificate — сертификат конкретного сервера, подписанный Intermediate CA\n\nКлиент проверяет всю цепочку: leaf -> intermediate -> root. Если root CA присутствует в хранилище доверенных сертификатов — соединение доверенное.\n\n### Типы сертификатов\n\n| Тип | Описание | Применение |\n|-----|----------|-----------|\n| Самоподписанный | Подписан собственным ключом | Разработка, тестирование |\n| Let's Encrypt | Бесплатный, автоматически обновляемый | Публичные сервисы |\n| Коммерческий CA | Выдаётся DigiCert, GlobalSign и др. | Продуктивные среды |\n| Внутренний CA | Собственный CA организации | Внутренние сервисы, mTLS |\n\n### Создание самоподписанного сертификата\n\n```bash\n# Генерация ключа и сертификата\nopenssl req -x509 -newkey rsa:4096 -keyout server.key -out server.crt \\\n  -days 365 -nodes -subj \"\u002FCN=app-server.mybank.local\"\n\n# Просмотр содержимого сертификата\nopenssl x509 -in server.crt -text -noout\n\n# Проверка цепочки сертификатов удалённого сервера\nopenssl s_client -connect app-server.mybank.local:443 -showcerts\n```\n\n### Получение сертификата Let's Encrypt\n\n```bash\n# Установка certbot\nsudo apt install certbot python3-certbot-nginx\n\n# Получение сертификата\nsudo certbot --nginx -d api.mybank.com\n\n# Автоматическое продление\nsudo certbot renew --dry-run\n```\n\n### Работа с сертификатами в Java\n\nJava использует хранилища ключей (KeyStore) и доверенных сертификатов (TrustStore):\n\n```bash\n# Импорт сертификата в TrustStore\nkeytool -import -alias mybank-ca -file ca.crt \\\n  -keystore truststore.jks -storepass changeit\n\n# Просмотр содержимого KeyStore\nkeytool -list -v -keystore keystore.jks -storepass changeit\n\n# Конвертация PEM -> PKCS12 для Java\nopenssl pkcs12 -export -in server.crt -inkey server.key \\\n  -out keystore.p12 -name server -CAfile ca.crt -caname root\n```\n\nНастройка в Spring Boot:\n\n```yaml\nserver:\n  ssl:\n    key-store: classpath:keystore.p12\n    key-store-password: ${SSL_KEYSTORE_PASSWORD}\n    key-store-type: PKCS12\n    enabled: true\n    protocol: TLS\n    enabled-protocols: TLSv1.3,TLSv1.2\n```\n\n> **На собеседовании:** интервьюер ожидает понимание TLS Handshake (хотя бы на уровне «клиент и сервер обмениваются сертификатами и договариваются о ключе шифрования»), цепочки доверия и разницы между KeyStore и TrustStore в Java. Частая ошибка — путать SSL и TLS и не знать, какие версии считаются безопасными.","","middle",[15],"network-security",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":23,"featuredSnippetReady":24},"Как работает TLS\u002FSSL и что такое цепочка доверия сертификато — Gymterview","TLS (Transport Layer Security) — криптографический протокол, обеспечивающий конфиденциальность и целостность данных при передаче по сети. SSL — устаревший предш","TLS (Transport Layer Security) — криптографический протокол, обеспечивающий конфиденциальность и целостность данных при ",[15,13],"TLS (Transport Layer Security) — криптографический протокол, обеспечивающий конфиденциальность и целостность данных при передаче по сети. SSL — устаревший предшественник TLS. В production используется TLS 1.2 и TLS 1.3.",true]