Не удается подключиться к HTTPS с использованием сертификата клиента X509

Я новичок в криптографии, и я немного застрял:

Я пытаюсь подключиться (из моей среды разработки) к веб-сервису, используя HTTPS. Веб-сервис требует клиентский сертификат - который, я думаю, я установил правильно.

Они предоставили мне файл.PFX. В Windows 7 я дважды щелкнул файл, чтобы установить его в хранилище сертификатов "Текущий пользователь" - "Личный".

Затем я экспортировал файл.cer в кодировке X509 Base-64 из записи сертификата в хранилище. У него не было личного ключа, связанного с ним.

Затем в моем приложении я пытаюсь подключиться к службе следующим образом:

var certificate = X509Certificate.CreateFromCertFile("xyz.cer"));
var serviceUrl = "https://xyz";
var request = (HttpWebRequest) WebRequest.Create(serviceUrl);
request.ClientCertificates.Add(certificate);
request.Method = WebRequestMethods.Http.Post;
request.ContentType = "application/x-www-form-urlencoded";

Я получаю 502 Ошибка подключения при подключении.

Есть ли что-то, что вы можете увидеть не так с этим методом? Кажется, что наша производственная среда работает с аналогичной конфигурацией, но она работает под управлением Windows Server 2003.

Спасибо!

2 ответа

Решение

Основная проблема заключается в том, что вы только предоставляете своей программе доступ к сертификату. Для выполнения аутентификации ему также необходим доступ к закрытому ключу.

Правильно созданный X509Certificate2 может нести закрытый ключ, и должен быть передан ClientCertificates.Add() метод. Я верю Import() метод может принять файл.pfx в качестве входных данных; в экспортированном файле.cer отсутствует закрытый ключ, и он не используется для аутентификации клиента.

Посмотрите на это и убедитесь, что ваша ошибка связана с сертификатом - отправляет ли сервер более подробную информацию о проблеме? Ошибка 502 (Bad Gateway) при отправке запроса с HttpWebRequest через SSL

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