HttpListenerRequest не возвращает сертификат клиента

Я использую HttpListener создать очень простой веб-сервер. Я настроил использование SSL с помощью инструмента httpcfg для привязки к соответствующему порту и сертификату. Кажется, это работает нормально. Теперь я хотел бы использовать аутентификацию сертификата клиента. Поэтому я добавил вызов GetClientCertificate на HttpListenerRequest объект, но он всегда возвращается с null, Мой тестовый клиент очень прост:

HttpWebRequest webReq = (HttpWebRequest) WebRequest.Create("https://127.0.0.1:8080/ssltest/");
webReq.ClientCertificates.Add(new X509Certificate2("ssltest.pfx", "ssltest"));
webReq.GetResponse();

Я заметил, что инструмент httpcfg имеет флаг, который указывает, должны ли согласовываться сертификаты клиента, поэтому я попытался указать этот флаг (-f 2) но я все еще не получаю сертификат клиента. Я также столкнулся с этой проблемой поддержки Microsoft, которая кажется довольно актуальной, но я использую последний пакет обновления.NET 2.0, и я также попробовал флаг httpcfg, оба из которых должны избежать этой проблемы.

Я предполагаю, что упускаю что-то очевидное здесь. Есть идеи?

Редактировать: я только что нашел этот вопрос, который кажется очень актуальным (может быть, даже дубликат?). К сожалению, на этот вопрос также не принято ответа. Предлагаемый ответ дает предложение для чего-то, что я уже попробовал (инструмент httpcfg с соответствующим флагом).

1 ответ

Решение

Согласно http://support.microsoft.com/kb/895971/en-us HttpWebRequest.ClientCertificates.Add уже выполняет проверку, поэтому сертификат не проходит проверку на стороне клиента и никогда не отправляется.

Приведенная выше ссылка содержит код для облегчения проверки... НИКОГДА не используйте его в производстве!!!

Другие вопросы по тегам