Браузер не проверяет цифровую подпись в случае самоподписанного сертификата - PullRequest
0 голосов
/ 15 ноября 2018

Правильно ли я понимаю поток сертификатов SSL (CA / Self Sign) в следующих случаях использования. Обычно, когда мы генерируем сертификат SSL, он имеет следующее содержание :

  • Детали, такие как владелец, домен, срок действия и т. Д.
  • Открытый ключ веб-сервера (используется для рукопожатия SSL с парой асимметричных ключей)
  • Цифровая подпись, подписанная либо личным ключом CA, либо в случае собственной подписи, это будет собственный закрытый ключ веб-сервера (надеюсь, это понимание верно? (Q1))

Первый веб-браузер получает сертификат SSL со своим открытым ключом. Проверка сертификата при наличии сертификата поставщика CA:

  1. Браузер будет иметь все открытые ключи CA и, следовательно, может проверять Цифровая подпись.
  2. Позже Открытый ключ, предоставляемый веб-сервером, используется для инициации симметричного шифрования секретного ключа.

Но блоги также говорят о том, что браузеры уже имеют доверенные корневые сертификаты, и это подтверждает. Означает ли это, что браузер часто проверяет только содержимое сертификата без проверки цифровой подписи (Q2)?

Теперь в случае самоподписания веб-сервер будет использовать собственный закрытый ключ для входа в сертификат (секретный ключ Istead of CA). Во время первого взаимодействия с браузером он отправит свой сертификат вместе с открытым ключом веб-сервера. Таким образом, в этом сценарии у нас есть одна и та же пара открытых / закрытых ключей, используемая как во время подписи сертификата, так и для совместного использования симметричного ключа для шифрования данных (Q3) ??

Теперь в блогах говорится, что мы можем импортировать сертификат вручную в браузере. Импорт сертификата также импортировал бы открытый ключ для проверки правильности подписи (Q4)? Блоги говорят, что если сертификат существует в доверенных корневых сертификатах, он считается действительным. Означает ли это, что браузер не выполняет проверку подписи (Q5)?

Кто-нибудь помогает мне в понимании с Q1 по Q5. Я что-то пропустил?

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Цифровая подпись, подписанная либо личным ключом CA, либо в случае собственной подписи, это будет собственный закрытый ключ веб-сервера (надеюсь, это понимание верно? (Q1))

Правильно,Сертификат сервера будет подписан сертификатом ЦС (либо корневым ЦС, либо, чаще, промежуточным ЦС).В случае самозаверяющего сертификата сертификат сервера и CA являются одним и тем же сертификатом.

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

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

Обмен ключами RSA не рекомендуется, но удаляется с помощью TLS 1.3.Вместо этого следует использовать обмен ключами Диффи-Хеллмана.С DH Kx сертификат сервера и открытый ключ внутри используются только для проверки подлинности сервера с целью защиты от атак «человек посередине», но не участвуют в обмене ключами.

Ноблоги также говорят о том, что браузеры уже имеют доверенные корневые сертификаты, и это подтверждает.Означает ли это, что браузер часто проверяет только содержимое сертификата без проверки цифровой подписи (Q2)?

Сервер отправляет серверный (конечный) сертификат и возможные промежуточные сертификаты, а затем браузер создает цепочку доверия излистовой сертификат, ведущий к локальному корневому сертификату (якорь доверия).Если такая цепочка доверия не может быть создана, сертификат не является доверенным.То, какие сертификаты CA используются в качестве привязки доверия, зависит от клиента: браузеры, такие как Firefox, имеют собственное хранилище доверия, другие браузеры используют хранилище доверия системы, другие клиенты используют еще одно хранилище доверия (то есть Java поставляется со своим собственным).См. Структура сертификата SSL 101: Как браузер действительно проверяет действительность данного сертификата сервера? для получения более подробной информации.

Теперь в случае самоподписанного, ...Таким образом, в этом сценарии у нас есть одна и та же пара открытых / закрытых ключей, используемая как во время подписи сертификата, так и для совместного использования симметричного ключа для шифрования данных (Q3) ??

С самозаверяющим сертификатомЭмитентом и сертификатом является сам сертификат, то есть закрытый ключ, используемый для подписи сертификата, совпадает с открытым ключом внутри сертификата.В случае обмена ключами RSA этот ключ также участвует в создании симметричных ключей (см. Выше).

При импорте сертификата также был бы импортирован Открытый ключ для проверки правильности подписи (Q4)?

Открытый ключ является частью сертификата (но закрытый ключ - нет).Таким образом, импорт сертификата также неявно импортирует открытый ключ.

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

Корневой сертификат считается доверенным, поскольку он находится в локальном хранилище доверенных сертификатов, а не потому, что он чем-то подписан.Вот почему проверка подписи не имеет отношения к корневым сертификатам.Для правильной работы в качестве якоря доверия библиотеки SSL / TLS все еще часто требуют, чтобы корневой сертификат был надлежащим образом (самозаверяющим) подписанным сертификатом.

0 голосов
/ 15 ноября 2018

За вашим постом сложно следить, но я постараюсь.

Сертификаты проверяются на соответствие выдающему центру сертификации (ЦС), если в браузере установлен корневой сертификат ЦС.

Для самозаверяющего сертификата вы являетесь ЦС.

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

Но блоги также говорят о том, что браузеры уже имеют доверенные корневые сертификаты, и он проверяется.

Исходный набор корневых сертификатов для ЦС, которым ваш браузер доверяет, установлен издателем браузера.Это означает, что, например, новая установка Chrome будет доверять SSL-сертификату вашего банка, выданному Verisign, но не самозаверяющему сертификату.

После того, как вы установили корневой сертификат из своего собственного ЦС, ваш браузербудет доверять вашим сертификатам так же, как доверяет Verisign.

Что касается вопроса в вашем заголовке, браузер должен проверить подпись.Если это не так, то это сломано, и это будет огромным недостатком безопасности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...