Не удается подключиться к 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