Как правильно установить заголовок HPKP (заголовок с открытым ключом)?

Я абсолютно запутался в заголовке Public-Key-Pinning. Как добавить его в Apache?

Что я сделал:
Взял хэш открытого ключа из моего сертификата домена, промежуточного сертификата и корневых сертификатов отдельно и добавил его в apache, mod_headers включен. Но ssllabs говорит: «Нет цепочки. Проверьте резервные контакты».

Header always set Public-Key-Pins "pin-sha256=\"Root-SSL-Public-Key\"; pin-sha256=\"Intermediate-SSL-Public-Key\"; pin-sha256=\"Domain-SSL-Public-Key\"; max-age=2592000; includeSubDomains"

person Example person    schedule 18.02.2020    source источник


Ответы (1)


HPKP - плохая идея. С его помощью слишком легко заблокировать ваш сайт, а защита, которую он обеспечивает, довольно мала, учитывая это.

Из-за этого почти все браузеры отказались от поддержки HPKP.

Одна из вещей, которую спецификация включает в себя для предотвращения взлома вашего сайта, заключается в том, что у вас должен быть хотя бы один пин-код. которого НЕ нет в вашем текущем сертификате и цепочке. То есть у вас должно быть два полностью независимых контакта — один от резервного ключа/сертификата/CA, поэтому, если вы потеряете контроль над своим основным, вы все равно сможете подключиться. Если вы закрепили только свой сертификат, промежуточный и корневой сертификаты, то все они относятся к одной цепочке и поэтому не соответствуют этому требованию.

Исправьте это, и это должно быть принято SSLLabs. Но, честно говоря, зачем беспокоиться, учитывая поддержку браузера и соотношение риска и вознаграждения?

person Barry Pollard    schedule 18.02.2020
comment
В значительной степени сейчас все основные браузеры удалили его поддержку. - person Barry Pollard; 18.02.2020
comment
Google использует жестко запрограммированный HPKP (еще более опасный ИМХО - tunetheweb.com/blog/ опасные-веб-защитные-функции), но у Google достаточно умных инженеров, чтобы знать, как правильно настроить это (без обид), а также как правильно управлять этим в будущем. У них также есть немало возможностей (особенно в их собственном браузере Chrome), чтобы починить что-то, если они случайно что-то сломают. - person Barry Pollard; 18.02.2020
comment
Правильный. Если значение HPKP было принято браузером — другой отказоустойчивый вариант — «неправильные» значения игнорируются, но если предположить, что это не так, и вы только что изменили свой сертификат, тогда да, он будет заблокирован до истечения максимального возраста. Хотя некоторые браузеры снова ограничивают максимальный возраст (думаю, 60 дней), чтобы уменьшить этот риск, а также позволяют локально очищать кеш браузера. - person Barry Pollard; 18.02.2020
comment
Ну, лично мне не нравится заголовок предварительной загрузки для HSTS по тем же причинам риска и вознаграждения, которые описаны в моем посте. Ваш заголовок CSP также довольно слаб, но его сложно исправить. Попробуйте свой сайт на securityheaders.com, чтобы получить последнюю информацию о заголовках безопасности. - person Barry Pollard; 18.02.2020