Почему браузеры не доверяют самоподписанным SLL-сертификатам даже в случае localhost?

Рейтинг: 4Ответов: 2Опубликовано: 04.06.2023

Суть неавторитетных HTTPS-сертификатов в случае опубликованных в интернете сайтов более-менее ясна. Но почему браузеры поднимают тревогу на localhost-е?

введите сюда описание изображения

Как-то странно видеть подобные сообщения для сайтов/приложений, которые доступны по localhost-у. Что, кто-то другой может использовать мой localhost для публикации своих мошеннических сайтов? Если нет, то должна быть какая-то причина, по которой разработчики браузеров не доставили localhost в белый список.

Ответы

▲ 3Принят

Браузеры не доверяют самоподписанным SSL-сертификатам, даже если вы пытаетесь использовать их на локальном хосте, потому что это может привести к возможности атаки "человек-в-середине" (man-in-the-middle attack).

Самоподписанный SSL-сертификат может быть создан любым человеком, и браузеры не могут проверить, что он настоящий и действительно принадлежит веб-серверу, к которому вы пытаетесь подключиться. Это может открыть возможность для злоумышленников перехватить ваше соединение, перехватывая трафик и перенаправляя его на свой сервер.

Чтобы предотвратить эту атаку, браузеры доверяют только тем сертификатам, которые были выданы доверенными центрами сертификации CA, как (Let's Encrypt](https://letsencrypt.org/ru/docs/certificates-for-localhost/). Эти компании проверяют, что доменное имя, для которого вы запрашиваете сертификат, действительно принадлежит вам, и выдаете сертификат, который может быть использован для подключения к вашему веб-серверу.

Если вы работаете на локальном хосте и не хотите покупать действительный SSL-сертификат, вы можете использовать сертификат, который был выдан локальным CA, например OpenSSL. Для этого вам нужно создать самоподписанный сертификат с помощью OpenSSL, а затем добавить его в доверенные сертификаты вашего браузера.

Есть умельцы которые решили данную незадачу путём формирования следующего репозитория: https://github.com/FiloSottile/mkcert.

И в добавок могу порекомендовать Let's Encrypt, у которого есть удобная утилита cetrbot для данных целей. На github у меня есть подробноу руководство по использованию этой утилиты https://github.com/ekangash/laravel-quick-start/blob/develop/!cheatsheets/certbot.md

▲ 1

Самоподписанные SSL-сертификаты не могут быть проверены на достоверность с помощью третьей стороны, и браузеры должны отказываться от их использования с целью защиты пользователей от попадания в руки злоумышленников. Хотя localhost и используется часто для локальных тестов, большинство таких случаев не могут быть подтверждены третьими сторонами. Если пользователь использует самоподписанный SSL-сертификат для подключения к сайту, то кто-то другой может перехватить соединение, подменить оригинальный домен и предоставить ложные данные пользователю.