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
уже выполняет проверку, поэтому сертификат не проходит проверку на стороне клиента и никогда не отправляется.
Приведенная выше ссылка содержит код для облегчения проверки... НИКОГДА не используйте его в производстве!!!