В Сhrome (и практически всех chrome‑подобных браузерах) достаточно давно есть политика CACertificatesWithConstraints, которая, в том числе, позволяет доверять конкретному корневому сертификату только для фиксированного списка доменов. Сам сертификат при этом не требуется размещать в системном корневом хранилище. Это актуально для текущих проблем с отзывами сертификатов и переходом банков на корневой Минцифры https://habr.com/en/news/1066284/

Ниже простой powershell скрипт для винды и ungoogled‑chromium, в котором необходимо указать:

  1. CertPath — полный локальный путь к сертификату Минцифры (нужен файл russian_trusted_root_ca.cer из архива https://gu‑st.ru/content/lending/android_russian_trusted_root_ca.zip)

  2. PermittedDnsNames — массив доменов, для которых сертификат Минцифры разрешён как корневой. Удобно, что политика влияет сразу и на все поддомены указанного домена.

  3. PolicyKey — путь к ветке политик. В примере — путь для chromium, для chrome он, предположительно, HKLM:\SOFTWARE\Policies\Google\Chrome\CACertificatesWithConstraints

#requires -RunAsAdministrator

$CertPath = '.\russian_trusted_root_ca.cer'
$PermittedDnsNames = @('alfabank.ru', 'vtb.ru')
$PolicyKey = 'HKLM:\SOFTWARE\Policies\Chromium\CACertificatesWithConstraints'

# --- 1. Load cert and emit single-line base64 (handles both PEM and DER input) ---
$cert = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new($CertPath)
$b64  = [Convert]::ToBase64String($cert.RawData)

Write-Host "Subject : $($cert.Subject)"
Write-Host "Issuer  : $($cert.Issuer)"
Write-Host "Expires : $($cert.NotAfter)"
if ($cert.Subject -ne $cert.Issuer) {
    Write-Warning "Subject != Issuer - this is not a self-signed root. Confirm it's the intended trust anchor."
}

# --- 2. Build the policy entry JSON ---
$obj = [ordered]@{
    certificate = $b64
    constraints = [ordered]@{
        permitted_dns_names = @($PermittedDnsNames)
    }
}
$entry = $obj | ConvertTo-Json -Compress -Depth 5

# Guard against PowerShell collapsing a single-element array into a scalar
if ($PermittedDnsNames.Count -eq 1 -and $entry -notmatch '"permitted_dns_names":\[') {
    $entry = $entry -replace '"permitted_dns_names":("[^"]*")', '"permitted_dns_names":[$1]'
}

# --- 3. Write it ---
New-Item -Path $PolicyKey -Force | Out-Null
Get-Item $PolicyKey | Select-Object -ExpandProperty Property |
    ForEach-Object { Remove-ItemProperty -Path $PolicyKey -Name $_ }   # clear stale entries
New-ItemProperty -Path $PolicyKey -Name '1' -Value $entry -PropertyType String -Force | Out-Null

Write-Host "`nWrote to $PolicyKey value '1':"
Write-Host $entry

После прогона скрипта, достаточно сделать Reload policies в chrome://policy/ и убедиться, что политика появилась со статусом OK.

Комментарии (47)


  1. ddr5
    04.08.2026 08:42

    Ну вот зачем вы с утра расстроили минцифры и яндекс? Он уже радостно потирали руки, ожидая что сейчас все побегут ставить импортозащемленные серты и браузеры. А тут на тебе, можно и не ставить.


    1. tairbakiev
      04.08.2026 08:42

      Ставить сертификат минцифры все равно придется, просто на ограниченный список доменов


      1. ddr6
        04.08.2026 08:42

        Нет, не придется. Данная фича не подразумевает установку сертификата. Он хранится в политике, привязанный к списку доменов.


  1. zhka
    04.08.2026 08:42

    А для огнелиса подобного решения никто не знает?
    (ну кроме запуска отдельного профиля)


    1. Pavel7 Автор
      04.08.2026 08:42

      Нет, судя по документации, ничего похожего в политиках в FF нет


    1. LF69ssop
      04.08.2026 08:42

      Чем именно вас не устраивает вариант "принять риски и продолжить"?


      1. aPiks
        04.08.2026 08:42

        Тем, что весь трафик будет идти не зашифрованным и mitm атаки могут проводить даже школьники с рутованым вндроидом?


        1. nokogerra
          04.08.2026 08:42

          Так уверенно писать подобную чушь - это сильно. Трафик в любом случае будет зашифрованным. Аутентификации, фактически, не будет, это да. Однако, можно достоверно знать, что удалённый хост доверенный (например, это собственная лаба с самоподписанным сертификатом). Ради интереса возьмите любой хост с сертификатом, issuer которого отсутствует в трастсторе браузера, подключитесь к нему “приняв риск”, снимите с интерфейса трафик wireshark/tcpdump и посмотрите на зашифрованную кашу. К этому же выводу можно прийти просто логически из-за того, что большинство lb/reverse proxy перед хостами в современных реалиях вообще не имеют plain листенеров и, фактически, поддерживают только https листенер с tls termination (в случае tls passthrough termination случается дальше на бэкэнде, но это не важно в данном случае). Однако, если удалить issuer’а сертификата такого портала (который только с https листенером) из трастстора и постучаться потом на этот портал, то подключиться будет возможно (“приняв риск” ofc) и трафик будет шифрованным, т.к. портал просто не поддерживает ничего, кроме http over tls.


          1. aPiks
            04.08.2026 08:42

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


            1. nokogerra
              04.08.2026 08:42

              Это если вы установите сертификат рученками.

              Даже если не установить CA issuer в трастстор и "принять риск и продолжить", трафик будет шифрованным. Точка. (если версия браузера поддерживает опцию продолжения).

              Как это проверить я написал. Хотите верить в свою технически неграмотную теорию - пожалуйста, я больше не буду вас переубеждать. Но если то, как это работает вам интереснее, чем быть правым, то спросите хотя бы gemini или любую другую модельку.


              1. Ingref
                04.08.2026 08:42

                Объясните, пожалуйста, как это позволяет не допустить MiTM? Например, если злоумышленник перехватит DNS-запрос и браузер по домену банка получит IP-адрес злоумышленника.


                1. sergey-gornostaev
                  04.08.2026 08:42

                  На сколько я вижу,@nokogerraне отрицает возможность MITM, только заявление о том, что трафик будет нешифрованным.


                1. Sputterspark
                  04.08.2026 08:42

                  Чтобы осуществить MitM, нужно иметь приватный ключ УЦ Минцифры, которым можно выпустить себе поддельный сертификат для условного pornhub.com, которому будет доверять клиент с установленным в доверенные сертификатом УЦ Минцифры, и использовать этот поддельный сертификат для вклинивания в поток трафика между настоящим порнхабом и клиентом. То есть школьники с рутованным андроидом такие атаки проводить всё-таки не смогут, как заявляет aPiks.


                  1. Ingref
                    04.08.2026 08:42

                    Так если у человека установлен сертификат минцифры, то у него и не будет предложения о рисках. Речь идёт только о случае, когда сертификат минцифры не установлен, и человек соглашается принять риски.


                1. nokogerra
                  04.08.2026 08:42

                  Я вообще не говорил о mitm, я говорил о шифровании. Если сертификат удалённого хоста не от доверенного CA, то трафик будет шифрованным, вы просто не знаете с кем. Но это официально, а на самом деле вы можете банально знать issuer'а данного сертификата, пусть его даже и нет в трастсторах или, вообще, знать серийный номер конкретного сертификата. Или просто работать в маленькой инфре/лабе, где везде самоподписанные сертификаты. Ключевое о чём я говорил - это что трафик НЕ "не зашифрованный". А человек смешал тёплое и мягкое.


                  1. Ingref
                    04.08.2026 08:42

                    Так ведь злоумышленник может указать в своём сертификате любой issuer. Единственный способ проверить - это сравнить хэш корневого сертификата сайта с хэшем корневого сертификата минцифры.

                    В остальном согласен.


      1. Pavel7 Автор
        04.08.2026 08:42

        Тем, что если сайт говорит HSTS, то большинство браузеров просто не даст "принять риски и продолжить", это прям в спеке HSTS прописано.

        Failing secure connection establishment on any warnings or errors (per Section 8.4 ("Errors in Secure Transport Establishment")) should be done with "no user recourse". This means that the user should not be presented with a dialog giving her the option to proceed. Rather, it should be treated similarly to a server error where there is nothing further the user can do with respect to interacting with the target web application, other than wait and retry.


        1. Ingref
          04.08.2026 08:42

          Кстати, это можно обойти через "Delete domain security policies" вот тут - chrome://net-internals/#hsts


        1. barbeer
          04.08.2026 08:42

          На этот случай есть ещё "thisisunsafe", хотя и не так удобно, как просто "принять и продолжить".


  1. Fedorkov
    04.08.2026 08:42

    А кто-нибудь настраивал в линуксе?



    1. ger_soc_truda
      04.08.2026 08:42

      1. Скачиваешь архив с сертами Минцифры РФ

      2. Получаешь длинную строчку из корневого серта этим
        openssl x509 -in russian_trusted_root_ca.cer -outform DER | base64 -w 0

      3. sudo mkdir -p /etc/opt/chrome/policies/managed

      4. Делаешь файл /etc/opt/chrome/policies/managed/custom_ca_constraints.json

      5. В файле пишешь
        {
        “CACertificatesWithConstraints”:[
        { “certificate”: “BASE64 серта из п.2”,
        “constraints”: {
        “permitted_dns_names”: [
        alfabank.ru”,
        vtb.ru”,
        "другие.социально-значимые.сайты" ]
        } }
        ]
        }

      6. sudo chmod 644 /etc/opt/chrome/policies/managed/custom_ca_constraints.json

      7. chrome://policy/ жмакай "Повторно загрузить правила"

      8. Каждый раз, когда сайт добавляешь в custom_ca_constraints.json нужно жмакать "Повторно загрузить правила"


  1. ivanovsa_ru
    04.08.2026 08:42

    А в мобильном хроме есть такое?


    1. Pavel7 Автор
      04.08.2026 08:42

      Сама политика есть, но добавлять их можно только через MDM, насколько я знаю.


  1. rPman
    04.08.2026 08:42

    а это правда работает как ожидается?


    1. Pavel7 Автор
      04.08.2026 08:42

      Базовые тестовые сценарии проходят:

      1) Добавляем политику на два домена - оба домена перестают отваливаться с ошибкой сертификата

      2) Удаляем из политики один из двух доменов - этот домен начинает отваливаться с ошибкой сертификата


      1. rPman
        04.08.2026 08:42

        MiTM атака с добавленным таким образом корневым сертификатом на другие домены 'не проходит'?


        1. Pavel7 Автор
          04.08.2026 08:42

          Не проходит, сценарий 2 как раз про это.


    1. ger_soc_truda
      04.08.2026 08:42

      Да


  1. vis_inet
    04.08.2026 08:42

    Подскажите, пожалуйста, начиная с какой версии Chrome для Windows поддерживает это ?


    1. Pavel7 Автор
      04.08.2026 08:42

      С версии 132


  1. TheRaven
    04.08.2026 08:42

    Еще бы PermittedDnsNames в какой-нибудь конфиг вынести и будет хорошо


  1. Shvedov
    04.08.2026 08:42

    Для Edge, на разных ОС


    1. itoolsy
      04.08.2026 08:42

      Для macOS можно через интерфейс все сделать edge://settings/privacy/security - certificate-manager - добавить вручную custom сертификат - редактировать его и в modification можно настроить SNI / CDIR в качестве Constraints


  1. mltk
    04.08.2026 08:42

    Где взять фиксированный список доменов, которые перешли на сертификаты Минцифры?


    1. Pavel7 Автор
      04.08.2026 08:42

      1. mltk
        04.08.2026 08:42

        Логи логами, но список доменов, перешедших на сертификат Минцифры, по этой ссылке не получить.


    1. de_gamer
      04.08.2026 08:42

      Все крупные российские сервисы перейдут на НУЦ в конечном счёте, это очередная попытка посучить ножками без всякого смысла. Далее ждём физического обрыва связности с европейскими провайдерами и dns войн с разделением зоны ru на "весьмирснами" версию и нашу суверенную.


  1. IRT
    04.08.2026 08:42

    Хм, Альфа и ВТБ открываются после этого скрипта, добавил Сбер и ФСТЭК — не хотят, в чем может быть причина?


    1. Pavel7 Автор
      04.08.2026 08:42

      Политика проверяет все SANы сертификата на нахождение в списке, т.е. для сбера, например, кроме sberbank.ru нужно добавлять и sbrf.ru. У ФСТЭК ещё больше список:

      DNS Name: fstec.ru

      DNS Name: www.fstec.ru

      DNS Name: www.*.fstec.ru

      DNS Name: *.fstec.ru

      DNS Name: fstec.gov.ru

      DNS Name: xn--j1andg1c.xn--p1ai

      1 надо добавить, 2,3,4 учтутся автоматом, 5 и 6 тоже нужно прописать явно.


      1. belyvoron
        04.08.2026 08:42

        Боюсь, что весьма скоро нужна будет политика *.ru


  1. Ingref
    04.08.2026 08:42

    После применения политики в хроме отключается безопасный DNS и возможность его указывать через настройки.

    Нашёл такое решение:

    1. Заходим в реестре в HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome

    2. Добавляем строковый параметр DnsOverHttpsMode со значением automatic.

    3. Добавляем строковый параметр DnsOverHttpsTemplates со значением в виде нужного вам DNS.

    4. Перезагружаем хром.

    Если у кого-то есть идеи получше, делитесь.


  1. mltk
    04.08.2026 08:42

    [удалено]


    1. mltk
      04.08.2026 08:42

      По большому счёту, можно не выделываться, а сразу просто один готовый ключ в реестр прописать и всё:

      Windows Registry Editor Version 5.00
      
      [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Edge\CACertificatesWithConstraints]
      "1"="{\"certificate\":\"MIIFwjCCA6qgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwcDELMAkGA1UEBhMCUlUxPzA9BgNVBAoMNlRoZSBNaW5pc3RyeSBvZiBEaWdpdGFsIERldmVsb3BtZW50IGFuZCBDb21tdW5pY2F0aW9uczEgMB4GA1UEAwwXUnVzc2lhbiBUcnVzdGVkIFJvb3QgQ0EwHhcNMjIwMzAxMjEwNDE1WhcNMzIwMjI3MjEwNDE1WjBwMQswCQYDVQQGEwJSVTE/MD0GA1UECgw2VGhlIE1pbmlzdHJ5IG9mIERpZ2l0YWwgRGV2ZWxvcG1lbnQgYW5kIENvbW11bmljYXRpb25zMSAwHgYDVQQDDBdSdXNzaWFuIFRydXN0ZWQgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMfFOZ8pUAL3+r2nqqE0Zp52selXsKGFYoG0GM5bwz1bSFtCt+AZQMhkWQheI3poZAToYJu69pHLKS6QXBiwBC1cvzYmUYKMYZC7jE5YhEU2bSL0mX7NaMxMDmH2/NwuOVRj8OImVa5s1F4Uzn4Kv3PFlDBjjSjXKVY9kmjUBsXQrIHeaqmUIsPIlNWUnimXS0I0abExqkbdrXbXYwCOXhOO2pDUx3ckmJlCMUGacUTnylyQW2VsJIyIGA8V0xzdaeUXg0VZ6ZmNUr5YBer/EAOLPb8NYpsAhJe2mXjMB/J9HNsoFMBFJ0lLOT/+dQvjbdRZoOT8eqJpWnVDU+QL/qEZnz57N88OWM3rabJkRNdU/Z7x5SFIM9FrqtN8xewsiBWBI0K6XFuOBOTD4V08o4TzJ8+Ccq5XlCUW2L48pZNCYuBDfBh7FxkB7qDgGDiaftEkZZfApRg2E+M9G8wkNKTPLDc4wH0FDTijhgxR3Y4PiS1HL2Zhw7bD3CbslmEGgfnnZojNkJtcLeBHBLa52/dSwNU4WWLubaYSiAmA9IUMX1/RpfpxOxd4Ykmhz97oFbUaDJFipIggx5sXePAlkTdWnv+RWBxlJwMQ25oEHmRguNYf4Zr/Rxr9cS93Y+mdXIZaBEE0KS2iLRqaOiWBki9IMQU4phqPOBAaG7A+eP8PAgMBAAGjZjBkMB0GA1UdDgQWBBTh0YHlzlpfBKrS6badZrHF+qwshzAfBgNVHSMEGDAWgBTh0YHlzlpfBKrS6badZrHF+qwshzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAALIY1wkilt/urfEVM5vKzr6utOeDWCUczmWX/RX4ljpRdgF+5fAIS4vHtmXkqpSCOVeWUrJV9QvZn6L227ZwuE15cWi8DCDal3Ue90WgAJJZMfTshN4OI8cqW9E4EG9wglbEtMnObHlms8F3CHmrw3k6KmUkWGoa+/ENmcVl68u/cMRl1JbW2bM+/3A+SAg2c6iPDlehczKx2oa95QW0SkPPWGuNA/CE8CpyANIhu9XFrj3RQ3EqeRcSAQQod1RNuHpfETLU/A2gMmvn/w/sx7TB3W5BPs6rprOA37tutPq9u6FTZOcG1OqjC/B7yTqgI7rbyvox7DEXoX7rIiEqyNNUguTk/u3SZ4VXE2kmxdmSh3TQvybfbnXV4JbCZVaqiZraqc7oZMnRoWrXRG3ztbnbes/9qhRGI7PqXqeKJBztxRTEVj8ONs1dWN5szTwaPIvhkhO3CO5ErU2rVdUr89wKpNXbBODFKRtgxUT70YpmJ46VVaqdAhOZD9EUUn4YaeLaS8AjSF/h7UkjOibNc4qVDiPP+rkehFWM66PVnP1Msh93tc+taIfCEYVMxjh8zNbFuoc7fzvvrFILLe7ifvEIUqSVIC/AzplM/Jxw7buXFeGP1qVCBEHq391d/9RAfaZ12zkwFsl+IKwE/OZxW8AHa9i1p4GO0YSNuczzEm4=\",\"constraints\":{\"permitted_dns_names\":[\"alfabank.ru\",\"vtb.ru\",\"yabank.yandex.ru\",\"uralsib.ru\",\"psbank.ru\",\"rshb.ru\",\"sberbank.ru\",\"sber.ru\",\"sberbank.com\",\"sbrf.ru\",\"lkk.lenenergo.ru\",\"fstec.ru\",\"fstec.gov.ru\",\"xn--j1andg1c.xn--p1ai\"]}}"
      
      

      Это для MS Edge. для Google Chrome нужно поменять "\Microsoft\Edge\" на "\Google\Chrome\"


      1. Pavel7 Автор
        04.08.2026 08:42

        Как выше отметили, в Edge есть обёртка для политики edge://certificate-manager/localcerts/usercerts где можно накликать всё необходимое без редактирования реестра.


  1. ddr6
    04.08.2026 08:42

    Вообще очень странно, почему ваша статья еще в топе. Везде тиражируют только файрфокс (что априори неудобно и неправильно) и прямую установку сертов, тогда как данный вариант в разы лучше и правильнее. Навалитесь плюсами, кто может.


    1. DaemonGloom
      04.08.2026 08:42

      Здесь проблема в том, что придётся прописывать порядочно доменов вручную. Включая технические, которые далеко не всегда очевидны.