Первая часть (где она хранится?)
Вот частичный ответ, основанный на моем исследовании: информация HSTS хранится в формате JSON в $PROFILE/TransportSecurity
, где $PROFILE
- это место, где Chrome хранит такие вещи в вашей системе.
(Это с Chromium версии 34.0.1847.116 (Developer Build 260972) Ubuntu 13.10
.)
Этот файл используется для кэширования информации на каждом сайте, который вы посетили с помощью HTTPS; Вы можете легко определить те, для которых вы включили определенные отпечатки открытого ключа, с помощью chrome://net-internals/#hsts
, посмотрев непустые dynamic_spki_hashes
.
К сожалению, ключи объекта JSON полностью непрозрачны (по крайней мере для меня): они представляют собой 32-байтовые двоичные строки, закодированные в base64. Вот пример:
"xxxx 32 byte base64 encoded string xxxx=": {
"dynamic_spki_hashes": [ "sha1/oMSnRgDtpy3AvsuajLYHyljudF4=" ],
"dynamic_spki_hashes_expiry": 1496120402.263232,
"expiry": 1441256424.39423,
"mode": "force-https",
"pkp_include_subdomains": true,
"pkp_observed": 1409720402.26327,
"static_spki_hashes": [ ],
"sts_include_subdomains": true,
"sts_observed": 1409720424.39423
},
Я не уверен, как сохранить эти файлы TransportSecurity, чтобы скопировать их на другой компьютер или другой профиль. Я попытался скопировать весь файл TransportSecurity в новый каталог профиля; однако при запуске Chrome с этим профилем он не распознал информацию HSTS в файле TransportSecurity.
Возможно, кто-то, кто лучше разбирается во внутренностях Chrome, может помочь нам понять, как не только просматривать, но и передавать эту информацию.
Вторая часть (недействительные сертификаты)
Я думаю, что цель HSTS - сделать практически невозможным переопределение предупреждения браузера и посещение сайта с недействительным сертификатом.
Тем не менее, если у вас есть конкретная действительно веская причина для принятия сертификата, который не нравится Chrome, я ожидаю, что вы можете переопределить его, добавив отпечаток открытого ключа этого сертификата, используя chrome://net-internals/#hsts
.