Я получил сертификат PKCS № 12, который будет использоваться для доступа к простой веб-службе на основе xml. Когда я загружаю файл PKCS # 12 в Windows (Vista), я могу получить доступ к сервису с помощью моего браузера.Как использовать файл сертификата PKCS # 12 в .NET WebRequest?
Попытка доступа к услуге через приложение, без загрузки PKCS # 12 в коллекции OS сертификата, я написал следующий код:
// The certificate i'm using can not be authenticated as it is a development one.
// For now, just ignore it.
static bool myRemoteCertificateValidationCallback(
Object sender,
X509Certificate certificate,
X509Chain chain,
SslPolicyErrors sslPolicyErrors
)
{ return true; }
static void Main(string[] args)
{
ServicePointManager.ServerCertificateValidationCallback = myRemoteCertificateValidationCallback;
X509Certificate Cert = new X509Certificate(@"certificatefile.p12","medialab");
HttpWebRequest Req = (HttpWebRequest)WebRequest.Create("https://ServiceURL");
Req.ClientCertificates.Add(Cert);
Stream S = Req.GetResponse().GetResponseStream();
TextReader TR = new StreamReader(S);
string Ret = TR.ReadToEnd();
Console.Write(Ret);
}
К сожалению, этот код не удается, и я получаю system.net .WebException: запрос был прерван: не удалось создать безопасный канал SSL/TLS. Я заметил, что когда я загружаю файл PKCS # 12 в Windows, код внезапно работает.
Что мне нужно сделать, чтобы обойтись только с файлом и не использовать хранилище сертификатов Windows?
Спасибо, Боаз
Дополнительная информация: Просто применяется SP1 к моей Visual Studio и теперь я получаю другое исключение: «Призыв к ССПИ не удалось, см Inner исключение» с внутренним Exception -> « полученное сообщение было неожиданным или плохо отформатированным ».