Sobes.tech
Middle
18

Как работает HTTPS? Как клиент и сервер работают с сертификатами?

Companies where asked
Сбер.clouds

Answer from AI

sobes.tech AI

HTTPS — это расширение HTTP, использующее протокол TLS/SSL для защиты данных при передаче между клиентом и сервером.

Когда клиент (например, браузер) подключается к серверу по HTTPS, происходит TLS-рукопожатие:

  1. Клиент отправляет запрос на установление защищённого соединения.
  2. Сервер отправляет свой цифровой сертификат, который содержит публичный ключ и подтверждает подлинность сервера (выдан удостоверяющим центром — CA).
  3. Клиент проверяет сертификат: срок действия, цепочку доверия, совпадение домена.
  4. Если сертификат валиден, клиент генерирует секретный ключ сессии, шифрует его публичным ключом сервера и отправляет обратно.
  5. Сервер расшифровывает секретный ключ своим приватным ключом.
  6. Теперь обе стороны используют этот общий секрет для симметричного шифрования данных.

Таким образом, сертификаты обеспечивают аутентификацию сервера и защищают обмен данными от перехвата и подмены.

Пример проверки сертификата в Python с использованием библиотеки ssl:

import ssl
import socket

hostname = 'example.com'
context = ssl.create_default_context()
with socket.create_connection((hostname, 443)) as sock:
    with context.wrap_socket(sock, server_hostname=hostname) as ssock:
        cert = ssock.getpeercert()
        print(cert)

Этот код устанавливает TLS-соединение и выводит сертификат сервера.