Сертификаты клиентов 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) Вы правы.