Sobes.tech
Назад к вопросам
Middle
3

Как клиент проверяет подлинность сервера (сертификаты)?

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

Клиент проверяет подлинность сервера с помощью проверки TLS-сертификата, который сервер предоставляет при установлении защищённого соединения (например, HTTPS). Процесс включает следующие шаги:

  1. Клиент получает сертификат сервера.
  2. Проверяет, что сертификат подписан доверенным центром сертификации (CA), используя корневые сертификаты, хранящиеся в системе или приложении.
  3. Проверяет, что доменное имя в сертификате совпадает с адресом сервера.
  4. Проверяет срок действия сертификата.

В Go для HTTPS-клиентов это происходит автоматически при использовании стандартного пакета net/http и crypto/tls. Если нужно, можно настроить tls.Config с параметром RootCAs для указания доверенных CA или использовать InsecureSkipVerify (не рекомендуется) для отключения проверки.

Пример настройки клиента с проверкой сертификата:

import (
    "crypto/tls"
    "crypto/x509"
    "io/ioutil"
    "net/http"
)

// Загрузка пользовательского CA
caCert, err := ioutil.ReadFile("ca.pem")
if err != nil {
    // обработка ошибки
}
caCertPool := x509.NewCertPool()
caCertPool.AppendCertsFromPEM(caCert)

client := &http.Client{
    Transport: &http.Transport{
        TLSClientConfig: &tls.Config{
            RootCAs: caCertPool,
        },
    },
}

resp, err := client.Get("https://example.com")
// ...

Таким образом, клиент доверяет серверу, если сертификат валиден и подписан доверенным CA.