Можно ли использовать какой-либо сертификат SSL для проверки подлинности сертификата клиента?

712
Athul k Surendran

Я пытаюсь подключиться к стороннему API, для которого включена настройка взаимной аутентификации TLS. Поэтому я должен установить свои клиентские сертификаты внутри своего хранилища ключей и отправить их по процессу рукопожатия TLS.

Для этого процесса я сейчас использую SSL с положительным сертификатом в качестве клиентского сертификата. Когда я выполняю TLS-вызовы, сервер Evnthough запрашивает сертификат, а клиент его не отправляет. И когда я проверял SChannel Log, я вижу предупреждение, подобное этому

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

Так что я сомневаюсь в следующем: я использую правильный тип сертификата X509 для аутентификации на стороне клиента? Нужно ли использовать какой-либо другой конкретный тип? Поскольку мой текущий сертификат не получает отправку.

0

1 ответ на вопрос

1
grawity

Это зависит. Сертификаты X.509v3 обычно поставляются с полем расширения «Расширенное использование ключа», которое содержит список разрешенных вариантов использования (EKU).

  • Обычные сертификаты веб- сервера содержат использование «TLS Server Authentication» (иногда отображается как «TLS Web Server», но на самом деле оно вообще не относится к Web).

  • Чтобы действовать в качестве клиента, вам необходим сертификат с «Аутентификацией клиента TLS» (опять же часто обозначаемый как «Веб-клиент TLS», несмотря на то, что в нем нет ничего специфичного для сети).

Обычные SSL-сертификаты «веб-сервера» довольно часто содержат оба варианта использования - например, я смотрю сертификаты, выданные Let's Encrypt и DigiCert, и все они содержат оба варианта, поэтому могут использоваться для клиентской / взаимной аутентификации. ,

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

Например, OpenVPN раньше строго требовал « только TLS-клиента» (а не « хотя бы TLS-клиента», как это делают другие программы), поэтому его easy-rsaскрипт выдает сертификаты только для сервера и только для клиента, но не смешанный тип.


Поэтому вы должны проверить свои сертификаты и убедиться, что они содержат требуемый EKU. Практически любой инструмент сертификата будет делать эту работу - например, свойство сертификата диалогового окна в Windows, покажет это под «V3 расширениями», как будет веб - браузеры, openssl x509, certtool, certutilи т.д.

Также стоит помнить, если вы используете свой собственный внутренний CA: если вы используете промежуточный сертификат CA, обратите на него внимание. Полупродукты не обязаны иметь расширение EKU, но если они делают есть, то все сертификаты, выданные что промежуточным ограничены этим. (Если вы получаете сертификаты на коммерческой основе, не нужно беспокоиться об этом.)


Кроме того, сертификат будет иметь основное поле «Использование ключа», которое содержит некоторые очень общие ограничения: например, «Цифровая подпись» означает, что сертификату разрешено подписывать данные (и, следовательно, допускается рукопожатие EDH / EECDH в TLS); «Соглашение о ключах», по-видимому, предназначено для статического DH / ECDH; «Ключ шифрования» позволяет рукопожатия статического RSA.

Официальная документация X.509v3 очень сбивает с толку из-за необходимости использования, когда ... Коммерческие ЦС обычно понимают это поле правильно. Но для частных ЦС это стоит перепроверить.

EKU показывает обе опции для меня (Аутентификация сервера (1.3.6.1.5.5.7.3.1) Аутентификация клиента (1.3.6.1.5.5.7.3.2)) Спасибо Athul k Surendran 6 лет назад 0
Тогда сертификат должен быть хорошим. (Но на всякий случай проверьте его промежуточную цепочку.) Возможно, проблема в вашем программном обеспечении, например, вы установили сертификат в неправильное место или не установили закрытый ключ (файл .pfx)? grawity 6 лет назад 0
Я использую сертификат от COmodo CA. Так что надеюсь, это не будет иметь значения для моего случая Athul k Surendran 6 лет назад 0
Название CA не имеет значения. Это не то, что я прошу вас проверить. grawity 6 лет назад 0
Хорошо. Насколько я понимаю, если я использую коммерческий CA (Comodo), я не должен проверять цепь. Но все равно проверим это сейчас. Или, если я что-то упустил, пожалуйста, объясните LIL больше Athul k Surendran 6 лет назад 0
И да, я попытался установить сертификат в каждом магазине, и у .pfx есть ключ, который я могу подтвердить. Более подробно я задал новый вопрос, так как целью этого вопроса было не решить мою проблему сразу. https://superuser.com/questions/1296931/certificate-request-and-the-certificate-available-in-store-not-matching Athul k Surendran 6 лет назад 0

Похожие вопросы