Что такое закрепление сертификатов?

Закрепление сертификатов — это метод безопасности, в котором принимаются только авторизованные или закрепленные сертификаты при установке безопасного сеанса. Любая попытка установить безопасный сеанс с использованием другого сертификата отклоняется.

Журнал закреплений сертификатов

Закрепление сертификатов первоначально было разработано как средство сорвать атаки человека в середине (MITM). Закрепление сертификатов впервые стало популярным в 2011 году в результате компрометации Центра сертификации DigiNotar ( ЦС), где злоумышленник смог создать дикие карта сертификаты для нескольких громких веб-сайтов, включая Google. Chrome был обновлен на "закрепление" текущих сертификатов для веб-сайтов Google и отклонит любое подключение, если был представлен другой сертификат. Даже если злоумышленник нашел способ убедить ЦС выпустить мошеннический сертификат, он по-прежнему будет признан Chrome недействительным, и подключение отклонено.

Хотя веб-браузеры, такие как Chrome и Firefox, были одними из первых приложений для реализации этого метода, диапазон вариантов использования быстро расширяется. Устройства Интернета вещей, мобильные приложения iOS и Android, а также разрозненные коллекции программных приложений начали использовать этот метод для защиты от атак "Человек в середине".

В течение нескольких лет закрепление сертификатов считалось хорошей практикой безопасности. Надзор за ландшафтом инфраструктуры открытого ключа (PKI) улучшился с прозрачностью практики выдачи общедоступных доверенных ЦС.

Как устранить закрепление сертификатов в приложении

Как правило, приложение содержит список авторизованных сертификатов или свойств сертификатов, включая различающиеся имена субъектов, отпечатки, серийные номера и открытые ключи. Приложения могут закреплять отдельные конечные или конечные сертификаты сущностей, подчиненные сертификаты ЦС или даже сертификаты корневого ЦС.

Если приложение явно указывает список допустимых центров сертификации, может потребоваться периодически обновлять закрепленные сертификаты при изменении или истечении срока действия центров сертификации. Чтобы определить закрепление сертификатов, рекомендуется выполнить следующие действия.

  • Если вы разработчик приложения, найдите исходный код для любого из следующих ссылок на ЦС, изменяющийся или истекающий срок действия. Если есть совпадение, обновите приложение, чтобы включить отсутствующие ЦС.

    • Отпечатки сертификатов
    • Различающиеся имена субъектов
    • Общие имена
    • Серийные номера
    • Открытые ключи
    • Другие свойства сертификата
  • Если пользовательское клиентское приложение интегрируется с API Azure или другими службами Azure, и вы не уверены, используете ли он закрепление сертификатов, проверка с поставщиком приложений.

Ограничения для закрепления сертификатов

Практика закрепления сертификатов стала широко спорной, так как она несет неприемлемые затраты на гибкость сертификатов. Одна из конкретных реализаций, закрепление открытого ключа HTTP (HPKP) не рекомендуется полностью

Поскольку нет единого веб-стандарта для того, как выполняется закрепление сертификатов, мы не можем предложить прямое руководство по обнаружению его использования. Хотя мы не рекомендуем закреплять сертификаты, клиенты должны знать об ограничениях, которые эта практика создает, если они решили использовать его.

Следующие шаги