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

Как работает HTTPS и TLS? Что такое сертификат и как браузер его проверяет?

Компании, где спрашивали
SelectelSelectel

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

sobes.tech AI

HTTPS — это расширение HTTP с использованием протокола TLS (Transport Layer Security) для шифрования данных между клиентом и сервером. TLS обеспечивает конфиденциальность, целостность и аутентификацию.

Работа HTTPS/TLS:

  1. Клиент инициирует соединение с сервером.
  2. Сервер отправляет свой цифровой сертификат, который содержит публичный ключ и информацию о сервере, подписанную центром сертификации (CA).
  3. Клиент проверяет сертификат: проверяет подпись CA, срок действия, соответствие домену.
  4. Если сертификат валиден, клиент и сервер договариваются о параметрах шифрования и устанавливают общий секрет (например, через обмен ключами).
  5. Все последующие данные шифруются с использованием этого секрета.

Сертификат — это электронный документ, подтверждающий принадлежность публичного ключа конкретному субъекту (серверу). Он подписан доверенным центром сертификации, что гарантирует его подлинность.

Проверка сертификата браузером:

  • Проверяется цепочка сертификатов до доверенного корневого CA.
  • Проверяется срок действия сертификата.
  • Проверяется, что доменное имя в сертификате совпадает с адресом сайта.
  • Проверяется, не отозван ли сертификат (через CRL или OCSP).

Пример на Go для HTTPS сервера:

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

err := http.ListenAndServeTLS(":443", "server.crt", "server.key", nil)
if err != nil {
    log.Fatal(err)
}