Получение клиентских сертификатов X509 в веб-запросах
Я пытаюсь отправить сертификат X509 из обработчика Http в веб-службу, которая получит и прочитает сертификат для проверки подлинности пользователя. Я знаю, что сертификат отправляет в порядке; У меня есть тестер, который позволяет мне посмотреть на HttpWebRequest
перед отправкой, а ClientCertificates
свойство показывает, что к нему прикреплен сертификат. (например request.ClientCertificates.Count = 1
).
Тем не менее, на другой стороне веб-службы, HttpRequest.ClientCertificate
последовательно показывает NULL
, Я рассмотрел несколько примеров Microsoft KB, и все они используют одну и ту же технику для вставки сертификата. Другие не связанные статьи показывают, что HttpRequest.ClientCertificate
является предпочтительным способом чтения в.
Итак, что я делаю не так, и как я могу определить на сервере, что сертификат клиента был отправлен?
1 ответ
Возможно настройка вашего HttpListener
с clientcertnegotiation=enable
с netsh
помогло бы (это заставляет сервер согласовывать клиент-сертификат во время первоначального рукопожатия, в отличие от использования повторного согласования).
Это также может зависеть от того, инициализировали ли вы сертификат на стороне клиента с помощью его закрытого ключа, см. Раздел Не удается подключиться к HTTPS с использованием сертификата клиента X509.