Назад к вопросам
СБЕР
Middle
3
Как клиент проверяет подлинность сервера (сертификаты)?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Клиент проверяет подлинность сервера с помощью проверки TLS-сертификата, который сервер предоставляет при установлении защищённого соединения (например, HTTPS). Процесс включает следующие шаги:
- Клиент получает сертификат сервера.
- Проверяет, что сертификат подписан доверенным центром сертификации (CA), используя корневые сертификаты, хранящиеся в системе или приложении.
- Проверяет, что доменное имя в сертификате совпадает с адресом сервера.
- Проверяет срок действия сертификата.
В 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.