Почему браузер может не открыть сайт банка, даже если тот использует шифрование
Сегодня сайты нескольких российских банков перестали открываться во многих браузерах. Причина — переход на национальные сертификаты безопасности, которые эти браузеры пока не распознают. В Яндекс Браузере такие сайты открываются как обычно. Расскажем, как устроен публичный контроль за сертификатами и какие компоненты решения мы открыли для всех.
Зачем сайту сертификат
Когда вы заходите на сайт банка, браузер не только шифрует данные. Он ещё проверяет, что перед ним настоящий сайт, а не его копия. Для этого нужен сертификат безопасности — цифровой документ сайта. В сертификате указано, какому сайту он принадлежит, кто его выдал и сколько он действует. Браузер проверяет эти данные. Если подтвердить сертификат не получается, появляется предупреждение.
С национальным сертификатом соединение шифруется так же, как с зарубежным. Но браузеру ещё нужно проверить, кто его выдал. Для этого он сверяется со своим встроенным списком. Национального удостоверяющего центра в списках многих браузеров нет — поэтому сайты с его сертификатами не открываются.
Как Яндекс Браузер проверяет сертификаты
В Яндекс Браузере Национальный удостоверяющий центр есть во встроенном списке. Но это решает только часть задачи: браузер понимает, кто выдал сертификат, однако сам выпуск сертификатов остаётся за пределами проверки.
Для такой проверки мы используем публичные логи Certificate Transparency. Каждый выпущенный сертификат попадает в такой лог. Когда пользователь открывает сайт, браузер проверяет наличие этой записи, адрес сайта, срок действия сертификата и подписи. Если что-то не сходится, сайт не открывается.
Запись в логе нельзя незаметно удалить или изменить. Поэтому владелец сайта или независимый исследователь может увидеть сертификат, выпущенный по ошибке или без разрешения владельца домена.
Эта система работает в Яндекс Браузере с 2022 года. За четыре года мы не зафиксировали ни одного случая её компрометации. Публичные логи позволяют проверить работу системы независимо от нас.
Код решения открыт для всех
Мы не устанавливаем национальный сертификат на всё устройство. Проверка работает только внутри Яндекс Браузера и не меняет правила для других приложений.
Чтобы эту механику можно было проверить и использовать в других продуктах, мы опубликовали код двух проектов. Первый — патч для Chromium с поддержкой сертификата НУЦ, проверкой записей в публичных логах и тестами. Его можно взять за основу для любого браузера на Chromium.
Второй проект — библиотеки для Android и iOS. С их помощью разработчики могут проверять национальные сертификаты в мобильных приложениях, в том числе во встроенных браузерных окнах.
Открытый код позволяет изучить логику проверки, найти ошибку, предложить исправление или добавить такую поддержку в свой продукт.
Так пользователи могут открывать сайты банков и других российских организаций без ручной установки сертификатов и отключения проверок безопасности.







