Sobes.tech
Назад к вопросам
Junior — Middle
78

Как осуществляется передача сертификатов во время установления HTTPS-соединения?

Компании, где спрашивали
Mail.ruMail.ru

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

sobes.tech AI

Во время установления HTTPS-соединения происходит TLS-рукопожатие, в рамках которого сервер передаёт клиенту свой сертификат. Этот сертификат содержит публичный ключ сервера и подтверждает его подлинность, подписанную центром сертификации (CA). Клиент проверяет сертификат, убеждаясь, что он действителен и соответствует ожидаемому домену.

В Go для работы с HTTPS используется пакет crypto/tls. При установлении соединения сервер автоматически отправляет свой сертификат, если он настроен в tls.Config.

Пример настройки HTTPS-сервера в Go:

package main

import (
    "crypto/tls"
    "log"
    "net/http"
)

func main() {
    srv := &http.Server{
        Addr: ":443",
        TLSConfig: &tls.Config{
            // Сертификат и ключ загружаются автоматически при запуске сервера
        },
    }

    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        w.Write([]byte("Hello HTTPS"))
    })

    log.Fatal(srv.ListenAndServeTLS("server.crt", "server.key"))
}

Здесь ListenAndServeTLS автоматически загружает сертификат и ключ и во время TLS-рукопожатия отправляет сертификат клиенту.