Перейти к содержимому
ecdsa.com

Закрепление сертификатов или открытых ключей

Ограничение сертификатов или открытых ключей, которые клиент принимает для хоста, фиксированным набором в дополнение к обычной проверке цепочки: клиент сверяет хеш ключа CA, промежуточного CA или собственного ключа сервера.
Другие написанияcertificate pinningpublic key pinningHPKPSSL pinningpin-sha256

Пин обычно — это хеш SubjectPublicKeyInfo (sha256/… в OkHttp и в конфигурации сетевой безопасности Android), поэтому продлённый сертификат с тем же ключом по-прежнему ему соответствует. Закрепление ключа CA или промежуточного CA надёжнее, чем закрепление конечного сертификата; в любом наборе пинов должен быть хотя бы один резервный ключ, который не используется в рабочей среде.

В вебе от динамического закрепления отказались: HTTP Public Key Pinning (RFC 7469) приводил к сбоям, которые владельцы сайтов устраивали сами себе, и к «враждебному закреплению» (hostile pinning); Chrome убрал его поддержку в версии 72 (2019 год), а Firefox отключил по умолчанию в версии 72 (2020 год). Браузеры хранят небольшой встроенный список пинов для доменов своих разработчиков. Certificate Transparency и CAA закрывают большую часть угроз, от которых защищал HPKP.

В мобильных приложениях и IoT закрепление по-прежнему распространено, но несёт тот же риск: из-за сокращения сроков действия сертификатов, ротации ключей CA (Let's Encrypt сменил промежуточные сертификаты в 2024 и 2026 годах) и прекращения доверия к CA перестают работать клиенты с закреплением, которые нельзя быстро обновить. Генератор пинов SPKI вычисляет пины по сертификатам или ключам.

Стандарты и ссылки

Все термины