Не удается подключиться к HTTPS с использованием клиентского сертификата X509 - PullRequest
3 голосов
/ 25 мая 2010

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

Я пытаюсь подключиться (из моей среды разработки) к веб-службе с использованием 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 ]

4 голосов
/ 25 мая 2010

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

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

0 голосов
/ 25 мая 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...