Почему для взаимного SSL требуется пара ключей на стороне клиента, а не просто открытый сертификат? - PullRequest
1 голос
/ 09 июля 2019

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

Пока я понимаю следующее (очень упрощенно):

Обычный SSL:

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

ВзаимныйSSL:

  • Точно так же, только в этот раз сервер запрашивает у клиента аутентификацию.
  • Клиент отправляет свой открытый сертификат, который проверяется по какому-то списку "известные сертификаты "на сервере.Если это совпадает, связь может продолжаться.

Я не понимаю, почему я должен включить всю пару ключей (в том числе частную) в хранилище ключей, которое я использую на стороне клиента.Где в процессе используется личный ключ клиента?

1 Ответ

4 голосов
/ 09 июля 2019

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

Это не главное в сертификате сервера, и при современных методах обмена ключами (например, Диффи Хелманн) сертификат вообще не участвует в обмене ключами. То, что вы описываете, верно только для устаревшего обмена ключами RSA.

Основной пункт сертификата должен использоваться для аутентификации. Аутентификация означает, что сервер подтверждает, что ему принадлежит предоставленный сертификат , и затем клиент проверяет, что сертификат соответствует его ожиданиям, т. Е. Выдан доверенным центром сертификации, ожидаемым субъектом / SAN, не истек срок действия и т. Д.

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

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

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