Как заставить его работать Закрепление сертификата (HPKP) и самоподписанный сертификат в локальной сети?

Мне нужно использовать SSL в локальной сети, и я хочу избежать ошибки недействительного сертификата браузера.

Моя идея состоит в том, чтобы сгенерировать самоподписанный сертификат, а затем использовать закрепление сертификата (HPKP), чтобы сообщить браузеру, что можно доверять только этому сертификату?

В настоящее время я изучаю все варианты, связанные с этой идеей. Я тестировал самоподписанный сертификат и заголовок HPKP (Public-Key-Pins) со значением, например:

"pin-sha256 =" somedataencodedbase64 = "; pin-max-age = 10; includeSubDomains"

Браузер не принимает его как безопасный. Мне все еще нужно завершить этот тест (с другим самоподписанным сертификатом, и мне нужно убедиться, что SPKI рассчитан правильно ...

Теперь вопросы:

  • Выдан ли самоподписанный сертификат для данного имени локального хоста (например, mylocalserver ) и закреплен в ответе сервера, даже действителен? Будет ли это работать?

  • Работает ли закрепление сертификата для имен локальных хостов (это означает, что оно работает только с доменными именами)?

  • Должен ли закрепленный сертификат сначала быть действительным или выдвинутые CA (это будет означать, что самоподписанные сертификаты не могут быть закреплены - если они не добавлены в Trust Store на клиенте)?

  • Каким будет самый простой способ иметь действующий SSL локально, поэтому мне не нужно настраивать клиент (клиентское хранилище доверия)?

  • Можем ли мы рассматривать закрепление сертификата в качестве альтернативы доверенному ЦС? Я где-то читал, что это просто дополнительно , так что это означает, что цепочка сертификатов сначала должна быть действительной, а затем вы можете ее закрепить?

  • Я также думаю, что все больше и больше, если эта идея вообще будет работать. Потому что тогда мы увидим больше использования этой техники. Каждый сгенерирует самоподписанный сертификат и просто прикрепит его ... И сэкономит несколько долларов на доверенном сертификате CA ... Или что я ошибаюсь или прав во всей концепции?

4
задан 4 October 2017 в 12:48
3 ответа

HPKP не заменяет обычную проверку. Вместо этого это дополнение к обычной проверке. Таким образом, если обычная проверка не удалась, поскольку сертификат самоподписан, HPKP не поможет.

8
ответ дан 3 December 2019 в 02:31

Является ли самоподписанный сертификат, выданный для данного имени локального хоста (например, mylocalserver) и закрепленный в ответе сервера, действительным? Будет ли это работать?

Да, HPKP просто объявляет подпись для данного сертификата x.509. Браузер (или любой веб-клиент) просто кэширует его на указанный период, а затем проверяет эту подпись во время дальнейших посещений.

Работает ли закрепление сертификата для имен локальных хостов (это будет означать, что оно работает только с доменными именами) ?

Имя локального хоста - это имя хоста, как и любое другое. Даже если коротко. Даже если у него есть локальный TLD. Дело в том, как ваш клиент решает эту проблему и что запрашивает в заголовке Host: HTTP-запроса. Если он разрешает хост foobar с правильным IP-адресом, а затем запрашивает этот Host: в HTTP-запросе, а для самоподписанного сертификата CN установлено значение foobar , тогда вся схема начинает работать.

Должен ли закрепленный сертификат сначала быть действительным или выдаваться СА (это будет означать, что самоподписанные сертификаты не могут быть закреплены - если они не добавлены в Trust Store на клиенте)?

Нет, не делают. Однако каким-то образом ваш веб-клиент должен иметь возможность доверять сертификату сервера. Либо он помещается в список сертификатов доверенных серверов, либо вы создаете исключения (это фактически то же самое, что и предыдущее), либо вы создаете локальный ЦС и подписываете сертификат сервера с помощью сертификата локального ЦС. Самозаверяющий сертификат сервера - это просто способ пропустить создание локального центра сертификации. Между прочим, все официальные CA используют самозаверяющий сертификат в качестве корневой точки своей инфраструктуры открытых ключей. Это законный способ создания CA. Официальный ЦС - это просто ЦС, сертификат которого добавляется в хранилище доверенных сертификатов наиболее известного программного обеспечения, такого как операционные системы, браузеры и т. Д. Согласование добавления стоит денег, поэтому большинство из них не являются бесплатными.

Какой еще один способ иметь действующий SSL локально, чтобы мне не нужно было настраивать клиента (клиентское хранилище доверия)?

Получение самозаверяющего сертификата для каждой имеющейся у вас службы. Если у вас мало таких сервисов, вы имеете дело с самозаверяющими сертификатами, если у вас их десятки, вы создаете свой локальный ЦС. Существует также законный бесплатный способ получить публично принятые сертификаты X.509 - просто используйте центр сертификации LetsEncrypt - это бесплатно. Однако они не предоставляют подстановочные сертификаты - те, которые имеют * , и это может быть проблемой, если у вас огромное количество служб.

Можем ли мы увидеть закрепление сертификата в качестве альтернативы доверенному ЦС ? Я где-то читал, что это просто дополнительно, значит, сначала должна быть действительна цепочка сертификатов, а потом ее можно закрепить?

Нет. Прикрепление сертификата - это средство противодействия атакам человек-посередине , когда кто-то выдает себя за целевой ЦС. Для этого этот «кто-то» должен уже поместить свой сертификат корневого CA в ваше хранилище доверенных сертификатов, но это другая проблема.

Я также думаю, что все больше и больше, если эта идея вообще будет работать. Потому что тогда мы увидим больше использования этой техники. Каждый сгенерирует самоподписанный сертификат и просто прикрепит его ... И сэкономит несколько долларов на доверенном сертификате CA ... Или что я ошибаюсь или прав во всей концепции?

Вы определенно правы.

2
ответ дан 3 December 2019 в 02:31

После дальнейшего исследования, так как я действительно хотел докопаться до фактической спецификации.

Итак, RFC 7469 говорит:

2.3.1. Обработка поля заголовка отклика Public-Key-Pins

Если UA получает через безопасный транспорт ответ HTTP, включает поле заголовка PKP, соответствующее грамматике, указанной в Раздел 2.1, и нет никаких основных ошибок безопасного транспорта или предупреждения ...

Итак, теперь официально ясно, что сначала должно произойти правильное подтверждение SSL (включая проверку цепочки сертификации), а затем может произойти HPKP ...

1
ответ дан 3 December 2019 в 02:31

Теги

Похожие вопросы