В Сhrome (и практически всех chrome‑подобных браузерах) достаточно давно есть политика CACertificatesWithConstraints, которая, в том числе, позволяет доверять конкретному корневому сертификату только для фиксированного списка доменов. Сам сертификат при этом не требуется размещать в системном корневом хранилище. Это актуально для текущих проблем с отзывами сертификатов и переходом банков на корневой Минцифры https://habr.com/en/news/1066284/
Ниже простой powershell скрипт для винды и ungoogled‑chromium, в котором необходимо указать:
CertPath — полный локальный путь к сертификату Минцифры (нужен файл russian_trusted_root_ca.cer из архива https://gu‑st.ru/content/lending/android_russian_trusted_root_ca.zip)
PermittedDnsNames — массив доменов, для которых сертификат Минцифры разрешён как корневой. Удобно, что политика влияет сразу и на все поддомены указанного домена.
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)

zhka
04.08.2026 08:42А для огнелиса подобного решения никто не знает?
(ну кроме запуска отдельного профиля)
LF69ssop
04.08.2026 08:42Чем именно вас не устраивает вариант "принять риски и продолжить"?

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

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.

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

nokogerra
04.08.2026 08:42Это если вы установите сертификат рученками.
Даже если не установить CA issuer в трастстор и "принять риск и продолжить", трафик будет шифрованным. Точка. (если версия браузера поддерживает опцию продолжения).
Как это проверить я написал. Хотите верить в свою технически неграмотную теорию - пожалуйста, я больше не буду вас переубеждать. Но если то, как это работает вам интереснее, чем быть правым, то спросите хотя бы gemini или любую другую модельку.

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

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

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

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

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

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

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.

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

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

Fedorkov
04.08.2026 08:42А кто-нибудь настраивал в линуксе?

Xelld
04.08.2026 08:42Синтаксис: https://chromeenterprise.google/policies/ca-certificates-with-constraints/
Конфигурация политик в Linux: https://support.google.com/chrome/a/answer/9027408?hl=en

ger_soc_truda
04.08.2026 08:42Скачиваешь архив с сертами Минцифры РФ
Получаешь длинную строчку из корневого серта этим
openssl x509 -in russian_trusted_root_ca.cer -outform DER | base64 -w 0sudo mkdir -p /etc/opt/chrome/policies/managed
Делаешь файл /etc/opt/chrome/policies/managed/custom_ca_constraints.json
В файле пишешь
{
“CACertificatesWithConstraints”:[
{ “certificate”: “BASE64 серта из п.2”,
“constraints”: {
“permitted_dns_names”: [
“alfabank.ru”,
“vtb.ru”,
"другие.социально-значимые.сайты" ]
} }
]
}sudo chmod 644 /etc/opt/chrome/policies/managed/custom_ca_constraints.json
chrome://policy/ жмакай "Повторно загрузить правила"
Каждый раз, когда сайт добавляешь в custom_ca_constraints.json нужно жмакать "Повторно загрузить правила"

ivanovsa_ru
04.08.2026 08:42А в мобильном хроме есть такое?

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

rPman
04.08.2026 08:42а это правда работает как ожидается?

Pavel7 Автор
04.08.2026 08:42Базовые тестовые сценарии проходят:
1) Добавляем политику на два домена - оба домена перестают отваливаться с ошибкой сертификата
2) Удаляем из политики один из двух доменов - этот домен начинает отваливаться с ошибкой сертификата

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

Pavel7 Автор
04.08.2026 08:42Яндекс в https://habr.com/en/companies/yandex/news/1066624/ писал, что CT логи тут https://browser-resources.s3.yandex.net/ctlog/ctlog.json

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

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

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

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 тоже нужно прописать явно.

Ingref
04.08.2026 08:42После применения политики в хроме отключается безопасный DNS и возможность его указывать через настройки.
Нашёл такое решение:
Заходим в реестре в HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome
Добавляем строковый параметр DnsOverHttpsMode со значением
automatic.Добавляем строковый параметр DnsOverHttpsTemplates со значением в виде нужного вам DNS.
Перезагружаем хром.
Если у кого-то есть идеи получше, делитесь.

mltk
04.08.2026 08:42[удалено]

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\"

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

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

DaemonGloom
04.08.2026 08:42Здесь проблема в том, что придётся прописывать порядочно доменов вручную. Включая технические, которые далеко не всегда очевидны.
ddr5
Ну вот зачем вы с утра расстроили минцифры и яндекс? Он уже радостно потирали руки, ожидая что сейчас все побегут ставить импортозащемленные серты и браузеры. А тут на тебе, можно и не ставить.
tairbakiev
Ставить сертификат минцифры все равно придется, просто на ограниченный список доменов
ddr6
Нет, не придется. Данная фича не подразумевает установку сертификата. Он хранится в политике, привязанный к списку доменов.