Я пытаюсь настроить заголовок Public Key Pinning в nginx 1.7.12 (Public-Key-Pins
) но мне кажется что-то не хватает. Я знаю, как создавать соответствующие pin-sha256
поля.
Думал, будет так работать:
pin-sha256
(ни каких-либо промежуточных или корневых сертификатов), тогда это должно означать ошибку, и браузер должен: report-uri
конечная точка с информацией по запросуЧто на самом деле происходит
В случае с 2. в Firefox просто The site specified an invalid Public-Key-Pins header.
предупреждение в консоли, и визит продолжается как обычно (в случае 1 предупреждений нет, поэтому заголовок должен быть правильным). В Chrome нет признаков того, что ни одно из значений sha256 не может быть сопоставлено с текущим сертификатом, посещение работает все время.
(для тестирования использовались Firefox 37 и Chrome 41 в Arch Linux).
Что мне не хватает? Каким должно быть реальное поведение Public-Key-Pins
заголовок, и как я могу вызвать ошибку в настройке, чтобы проверить случай сбоя?
Мой текущий заголовок имеет примерно такую форму (короткий максимальный возраст для тестирования, правильно заполненный FQDN
:
Public-Key-Pins: pin-sha256="XOwgEECL9p3X2PctwnsIvbV+ySJ975dNYbm8wxkjzXg="; pin-sha256="NxVoMtbt/y2GI3lV/ROFIcDyz8kj/W8JTtoszmBezOg="; pin-sha256="aM2laE5XUTDaWo6RnfKZ9OZHrNz/KQmRxCRO6YmWHGE="; max-age=900; report-uri="https://<FQDN>/hpkp";
Чтобы ваш PIN-код был принят, он должен:
Чтобы проверить это:
Некоторые документы: https://developer.mozilla.org/en-US/docs/Web/Security/Public_Key_Pinning
Чтобы быть более конкретным: «Если я не включаю pin-sha256 сертификата (ни какой-либо промежуточный или корневой сертификат)», тогда браузер не сохраняйте булавку. Браузер отображается при ошибке подключения только тогда, когда уже сохраненный список контактов не соответствует текущей цепочке сертификатов.
https://scotthelme.co.uk/hpkp-toolset и https://report-uri.io/home/pkp_analyse может помочь