Middle
17
Как работает HTTPS? Как клиент и сервер работают с сертификатами?
Компании, где спрашивали
Сбер.clouds
Ответ от нейросети
sobes.tech AI
HTTPS — это расширение HTTP, использующее протокол TLS/SSL для защиты данных при передаче между клиентом и сервером.
Когда клиент (например, браузер) подключается к серверу по HTTPS, происходит TLS-рукопожатие:
- Клиент отправляет запрос на установление защищённого соединения.
- Сервер отправляет свой цифровой сертификат, который содержит публичный ключ и подтверждает подлинность сервера (выдан удостоверяющим центром — CA).
- Клиент проверяет сертификат: срок действия, цепочку доверия, совпадение домена.
- Если сертификат валиден, клиент генерирует секретный ключ сессии, шифрует его публичным ключом сервера и отправляет обратно.
- Сервер расшифровывает секретный ключ своим приватным ключом.
- Теперь обе стороны используют этот общий секрет для симметричного шифрования данных.
Таким образом, сертификаты обеспечивают аутентификацию сервера и защищают обмен данными от перехвата и подмены.
Пример проверки сертификата в 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-соединение и выводит сертификат сервера.