Есть ли способ проверить, является ли сертификат сертификатом клиента или сертификатом сервера?

#certificate #handshake #jks

Вопрос:

Я получил новый файл хранилища ключей .jks для ssl-соединения, чтобы заменить старый, но работающий файл хранилища ключей .jks, но я получил «неожиданное сообщение о рукопожатии: serve_hello» ошибка. Мне сказали убедиться, что хранилище ключей содержит сертификат клиента, поэтому я использовал keytool для экспорта его сертификата в файл pem, а затем использовал openssl для проверки назначения. Результат показывает

Назначение сертификата: SSL-клиент : Нет SSL-клиент CA : Нет SSL-сервер : Да SSL-сервер CA : Нет …

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

Спасибо!

Ответ №1:

Расширение расширенного использования ключей содержит идентификаторы, определяющие назначение:

ИДЕНТИФИКАТОР ОБЪЕКТА id-kp-serverAuth ::= { id-kp 1 } — Аутентификация сервера TLS WWW — Биты использования ключей, которые могут быть согласованными: Цифровая подпись, — Шифрование ключа или связывание ключей

ИДЕНТИФИКАТОР ОБЪЕКТА id-kp-clientAuth ::= { id-kp 2 } — Аутентификация клиента WWW по протоколу TLS — Биты использования ключей, которые могут быть согласованными: Цифровая подпись — и/или передача ключей https://datatracker.ietf.org/doc/html/rfc5280 Страница 44

Видеть: https://oidref.com/1.3.6.1.5.5.7.3.1 и https://oidref.com/1.3.6.1.5.5.7.3.2

При открытии сертификата в Windows вы можете увидеть расширение здесь:

Сертификат Аутентификации Клиента

Сертификат Аутентификации Сервера