Сертификаты клиентов OpenSSL и сертификаты сервера

У меня есть некоторые основные вопросы по сертификатам. Позвольте мне сначала объяснить свое понимание аутентификации 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 для аутентификации. Означает ли это, что мы обходим аутентификацию сервера и используем только клиентские сертификаты для аутентификации?. Я так не думаю. По моему мнению, аутентификация клиента должна выполняться в дополнение к аутентификации сервера. Поправьте меня, если я ошибаюсь здесь.

Ответы

Ответ 1

Сертификаты сервера:

Сертификаты сервера - это идентификатор Сервера, который он передает в момент подтверждения SSL.

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

Example:-  http://blog.8zero2.in/

Серверные сертификаты

Сертификаты сервера Цель

четко указывается параметр расширения x509

Certificate Key usage 

 1. Signing 
 2. Key Encipherment

Подписание: - Это означает, что ключ в сертификате может быть использован для подтверждения Identity сервера, упомянутого в CN of cerificate, то есть аутентификации объекта.

Key Encipherment: - Это означает, что ключ в ceritificate может использоваться для шифрования ключа сеанса (символьного ключа), полученного для сеанса

Сертификат клиента:

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

Клиентские сертификаты Назначение

четко указывается параметр расширения x509

Certificate Key usage 
1. Signing 

Ответ 2

1) Статья, которую вы цитируете, хороша:-). Иначе говоря: в сертификате есть поле, в котором указывается, для какого использования (ов) оно разрешено использовать. Когда вы создаете/запрашиваете сертификат, вы запрашиваете сертификат для конкретного использования, а ЦС подписывает его на этой основе.

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

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

2) Вы правы.