Поддержка сайтов с национальными сертификатами в Яндекс Браузере.
Национальный удостоверяющий центр выдаёт сертификаты на домены только тех организаций, которые явно это запросили. Полный список этих доменов публично доступен по адресу www.gosuslugi.ru/tls.
Яндекс Браузер применяет национальные сертификаты не для всего рунета, а только на тех сайтах, которые есть в списке на www.gosuslugi.ru/tls. Попытка применить сертификат на других доменах приведёт к стандартной ошибке и недоступности сайта для пользователя.
Национальные сертификаты используют общепринятую открытую криптографию и работают по стандартным правилам (это обычный RSA с длинным ключом, ровно такой же, какой выписывают другие центры сертификации).
Подробнее о проблеме
Как вы можете знать, ряд российских сайтов уже столкнулись с отзывом выданных TLS-сертификатов. Напомню, что наличие действующего авторитетного сертификата жизненно важно для любого сайта, который работает с данными пользователей. Без сертификата невозможно удостовериться, что данные передаются именно тому сайту, который указан в адресной строке браузера, а не подделке злоумышленников. Как следствие, любой современный браузер не пускает пользователей на сайт, если его сертификат отозван (это нормальное, ожидаемое поведение).
Проблема в том, что российским сайтам всё сложнее получить такой сертификат. Удостоверяющие центры всё чаще отзывают ранее выданные сертификаты и отказывают в их выдаче. Да, сайты могут начать использовать самоподписанные сертификаты. Но к ним нет и не будет никакого доверия со стороны браузеров из-за отсутствия контроля в их выдаче и применении. А значит, проблема с доступом к сайтам никуда не денется.
К чему это может привести? Несколько вариантов:
Пользователям придётся передавать свои личные данные по протоколу http, то есть без шифрования, в явном виде (такие данные легко похитить на любом участке сети между сайтом и пользователем).
Потребуется для каждого сайта как-то находить и устанавливать на компьютер его недоверенный корневой сертификат, чтобы браузеры перестали «ругаться» на самоподписанные сертификаты. При этом ни у браузеров, ни у пользователей не будет никакого контроля за их применением. Например, несколько лет назад мы уже рассказывали о злоумышленниках, которые вмешиваются в трафик пользователей, тайно устанавливая корневые сертификаты на компьютер. Так что этот вариант крайне опасен.
Теоретически браузеры могли бы прекратить проверять сертификаты. Но на практике никто на такое не пойдёт, потому что это равноценно переходу на http. Сертификаты без контроля не имеют смысла. Например, по этой причине мы сознательно вырезали из нашего браузера флаг —ignore-certificate-errors, который поддерживается в проекте Chromium. Потому что это опасно.
Ещё есть вариант отказаться от использования интернета для всех сценариев, где есть риск перехвата данных.
Вряд ли можно назвать какой-либо из этих вариантов приемлемым.
Есть альтернативная инициатива — создать национальные удостоверяющие центры (НУЦ) и поддержать их корневые сертификаты в браузерах. НУЦ смогут выдавать сертификаты тем (и только тем!) сайтам, которые к ним обратятся. Наличие альтернативы позволит не допустить ситуации, при которой пользователи лишатся доступа к онлайн-сервисам.
Первый такой НУЦ уже появился — на базе Госуслуг. Сейчас он работает так:
- Юридическое лицо (владелец сайта) отправляет подписанную заявку на Госуслуги.
- Госуслуги проверяют принадлежность домена.
- В случае успеха помещают домен в публичный список, который доступен всем по адресу www.gosuslugi.ru/tls.
- НУЦ выписывает сертификат на сайт. Это обычный RSA с длинным ключом, ровно такой же, какой выписывают другие центры сертификации. Дальше ключи можно использовать как обычные TLS-сертификаты. То есть всё работает согласно общепринятой открытой криптографии и по известным правилам.
Конечно же, это решение не заработало бы без поддержки браузеров. Мы признали неполный авторитет сертификатов НУЦ в Яндекс Браузере в версиях для Windows и Android.
Неполный авторитет — это значит, что сертификаты НУЦ будут признаваться только для тех доменов, которые помещены в публичный список на gosuslugi.ru/tls. Если посещаемого сайта нет в этом списке, то попытка применить новый сертификат приведёт к стандартной ошибке и не даст посетить сайт. И нет, нельзя выпустить сертификат по маске так, чтобы покрыть все домены второго уровня (например, все *.ru) — на стороне Браузера такое просто не заработает. Кроме того, все входящие к нам изменения этого списка будут проходить через контроль явных ошибок. Если очень грубо, то это первый шаг к Certificate Transparency, чтобы обеспечить аудируемость процедуры выдачи сертификатов.
Источник ХАБР