1. DNS-запрос:
- Ваш компьютер отправляет DNS-запрос на DNS-сервер, чтобы узнать IP-адрес домена
google.com. - DNS-сервер возвращает IP-адрес (например,
142.250.186.174).
2. TCP-соединение:
- Ваш компьютер устанавливает TCP-соединение с сервером Google по IP-адресу
142.250.186.174на порт 443 (HTTPS).
3. TLS Handshake:
- Client Hello: Ваш компьютер отправляет сообщение "Client Hello", в котором указывает поддерживаемые версии TLS, наборы шифров и другие параметры.
- Server Hello: Сервер Google отвечает сообщением "Server Hello", выбирая протокол TLS, набор шифров и отправляет свой SSL/TLS-сертификат.
- Certificate: Сервер Google отправляет цепочку сертификатов, включающую:
- Сертификат для
*.google.com. - Промежуточные сертификаты, выданные Google Trust Services.
- (Корневой сертификат не отправляется, так как предполагается, что он уже есть у клиента).
- Certificate Request (опционально): Сервер может запросить сертификат клиента (обычно не требуется для обычного просмотра веб-сайтов).
- Server Hello Done: Сервер завершает обмен приветствиями.
- Client Key Exchange: Ваш компьютер генерирует случайный секретный ключ, шифрует его с помощью публичного ключа из сертификата сервера и отправляет серверу.
- Change Cipher Spec: Клиент сообщает серверу, что дальнейшие сообщения будут зашифрованы.
- Finished: Клиент отправляет зашифрованное сообщение "Finished", подтверждая успешное завершение handshake.
- Change Cipher Spec: Сервер сообщает клиенту, что дальнейшие сообщения будут зашифрованы.
- Finished: Сервер отправляет зашифрованное сообщение "Finished", подтверждая успешное завершение handshake.
4. Проверка сертификата (с особенностями):
- Ваш браузер пытается проверить цепочку сертификатов, отправленную сервером, чтобы убедиться, что сертификат
*.google.comвыдан доверенным CA. - Проблема: У вас нет файла
/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem, который содержит список доверенных корневых сертификатов. Браузер использует свой встроенный список корневых сертификатов. - Браузер проверяет, есть ли в его встроенном списке корневой сертификат, которым подписан промежуточный сертификат Google Trust Services. Если да, то цепочка доверия устанавливается.
- Если корневой сертификат отсутствует, браузер может выдать предупреждение о небезопасном соединении. Однако, поскольку Google использует широко известные и доверенные CA, скорее всего, корневой сертификат уже есть в вашем браузере.
5. Шифрованный обмен данными:
- После успешного TLS handshake, ваш браузер отправляет HTTP-запрос
GET /на сервер Google. - Google отвечает HTTP-ответом, содержащим HTML-код главной страницы.
- Все данные передаются в зашифрованном виде.
Сетевые соединения
- DNS-запрос: UDP-соединение на DNS-сервер (обычно порт 53).
- TCP-соединение: TCP-соединение на сервер Google (порт 443).
- Обмен данными TLS: После установления TCP-соединения, происходит обмен зашифрованными сообщениями TLS.
Важные моменты
- Отсутствие
/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pemне означает, что проверка сертификата невозможна. Браузеры имеют встроенные списки доверенных корневых сертификатов. - Однако, использование системного хранилища сертификатов (как
/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem) более гибко, так как позволяет администратору системы добавлять или удалять доверенные CA. - Если браузер не может проверить цепочку доверия, он выдаст предупреждение о небезопасном соединении. Пользователь может проигнорировать это предупреждение, но это не рекомендуется.
Надеюсь, это подробное описание поможет вам понять, как работает SSL/TLS-соединение и какие сетевые соединения устанавливаются при посещении https://google.com`.
Citations:
[1] https://google.com
---
Answer from Perplexity: pplx.ai/share
[file-name 000113_2025-04-21_09-07-30.txt]