TrashNotes

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
← Previous Next →
Back to list