Я беру самоподписанный сертификат piv auth X509 со смарт-карты, вставленной в USB-ридер, и прикрепляю его к HttpWebRequest с помощью приведенного ниже кода:
HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(uriInfo);
Request.ClientCertificates.Add(theCert);
Request.Method = "POST";
//get the response back (the mini driver will prompt for a PIN at this point)
HttpWebResponse Response = (HttpWebResponse)Request.GetResponse();
Вот что меня смущает, этот код работает на некоторых машинах, но не работает на других. Он работает на Win7 на одной машине и не работает на Win7 на другой, он работает в Win8. Я даже пробовал запускать его на виртуальной машине Win8, которая работает, которая является гостем хост-машины Win7, которая не работает.
Я прочитал много статей о переполнении стека и пробовал много разных вещей, чтобы заставить это работать, но, похоже, ничего не работает. Поскольку мой сертификат не содержит информации о закрытом ключе, кажется, поэтому он не включен в запрос? Это похоже на этот вопрос: HttpWebRequest не кажется для отправки клиентского SSL-сертификата
Поскольку он работает на одних машинах, а не на других, нужно ли это настраивать по-другому на машинах, где он не работает?
Я знаю, что сертификат не прикрепляется из-за какого-то расследования проводов. Сертификат, который я использую, настроен на сервере, поэтому он должен ему доверять (а в некоторых случаях и доверяет).
Некоторые вещи, которые я делаю иначе, чем другие сообщения, - это то, что я получаю сертификат со смарт-карты piv и просто прикрепляю его к запросу. Когда я вызываю GetResponse, минидрайвер Microsoft предлагает ввести PIN-код. Но поскольку сертификат не прикреплен к запросу, я никогда не получаю запрос на ввод PIN-кода, а сервер возвращает ошибку 403 Forbidden.
Любые идеи?
(Это мой первый пост здесь, прошу простить мне все мои грехи)