Как добавить сертификат реестра в HttpWebRequest?

Заранее извиняюсь, если это дублирующий вопрос. Я новичок в "жаргоне" HttpWebRequest и мой поиск в Google оказался бесплодным.

Некоторое время назад я написал контроллер входа в систему, который использует HttpWebRequest, Он отлично работает, когда я запускаю его дома. Я попробовал тот же контроллер входа из-за брандмауэра моей компании, и он ожидает, что сертификат аутентификации клиента пройдет. Я прочитал в Интернете, что сертификат находится в системном реестре моего компьютера. Конечно же, я могу открыть IE и настройки интернета-> контент-> сертификаты, которые я вижу в диалоговом окне клиентский сертификат, который IE использует для того же, что я хочу сделать с помощью моего контроллера входа в систему.

Может ли кто-нибудь предоставить фрагмент кода C#, показывающий способ добавления клиентских сертификатов из реестра в мой запрос HttpWebRequest?

например,

var request = (HttpWebRequest) WebRequest.Create("https://www.someplace.com/Login");
                request.Credentials = CredentialCache.DefaultCredentials;
                request.ClientCertificates.Add(); //<---- ? how to add registry certs?
                request.KeepAlive = true;

и т.п.

1 ответ

Эта статья базы знаний MS посвящена тому, что вам нужно: как отправить сертификат клиента с помощью классов HttpWebRequest и HttpWebResponse.

Как описано в статье, у вас есть два варианта:

  1. Использовать X509Certificate класс для чтения сертификата из файла.cer.
  2. Используйте вызовы CryptoAPI для извлечения информации о сертификате непосредственно из хранилища сертификатов.

Второй вариант - это неприятность, и для получения сертификата требуется повышенное доверие. хранить. Таким образом, вы захотите перейти на вариант 1, если это возможно. Что-то вроде этого:

X509Certificate Cert = X509Certificate.CreateFromCertFile("C:\\mycert.cer");
HttpWebRequest Request = (HttpWebRequest)WebRequest
                         .Create("https://YourServer/sample.asp");
Request.ClientCertificates.Add(Cert);
Другие вопросы по тегам