У меня есть некоторые основные вопросы по сертификатам. Позвольте мне сначала объяснить свое понимание аутентификации SSL.
SSL/TLS в основном имеет две основные функции:
- Аутентификация - чтобы убедиться, что мы общаемся с соответствующей стороной на обоих концах.
- Шифрование - шифрование фактических данных, передаваемых между ними.
Сертификаты имеют открытый ключ и дополнительную информацию. Связь SSL между клиентом (например, "C" ) и "Сервер" (например, "S" ) работает следующим образом:
- C инициирует запрос к S.
- S отправляет свой открытый ключ на C.
- C проверяет личность S. (Проверка подлинности сервера или аутентификация сервера)
- C отправляет свой открытый ключ в S.
- S проверяет личность C. (Проверка идентификатора клиента или аутентификация клиента)
- C генерирует симметричный ключ или сеансовый ключ (скажем, "K" ) и шифрует его с помощью открытого ключа S и отправляет его на сервер.
- Теперь и C, и S имеют общий симметричный ключ, который будет использоваться для шифрования данных.
Здесь я считаю, что шаги 4 и 5, предназначенные для аутентификации клиентов, являются необязательными. Исправьте меня, если я ошибаюсь.
Шаги с 1 по 5 связаны с асимметричным режимом шифрования, и только для "Аутентификации", и после этого он включает симметричный режим шифрования для фактической передачи данных между ними.
Мои вопросы таковы:
-
Я прочитал из этой ссылку (относящейся к серверу IIS), что существует два типа сертификатов. Один из них - сертификат клиента, а другой - сертификат сервера. Я думал, что тот, кто на стороне клиента, который инициирует запрос, является сертификатом клиента, а другой - сертификатом сервера. В чем разница между сертификатом клиента и сервера w.r.to OpenSSL?. Есть ли разница в имени CN в этих сертификатах w.r.to OpenSSL?
-
Меня попросили использовать Client Certificates для аутентификации. Означает ли это, что мы обходим аутентификацию сервера и используем только клиентские сертификаты для аутентификации?. Я так не думаю. По моему мнению, аутентификация клиента должна выполняться в дополнение к аутентификации сервера. Поправьте меня, если я ошибаюсь здесь.