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]