2025-04-21 09:07:30
Когда вы переходите на `https://google.com` и у вас отсутствует файл `/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem`, происходит следующая последовательность сетевых соединений и действий:
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
Back to list