Я пишу небольшую программу, которая отправит GET-запрос на сервер, используя HTTPS и класс HttpWebRequest. Сервер (очевидно) имеет сертификат сервера. Также ожидается, что клиент предоставит сертификат.
Однако при выполнении запроса я получаю исключение System.Net.WebException, в котором говорится, что установить безопасное соединение TLS / SSL невозможно. Я быстро обнаружил, что сертификат сервера недействителен. Предполагая, что это было причиной исключения, я попытался принять недействительный сертификат (обновление сертификата, к сожалению, не вариант), используя код ниже:
ServicePointManager.ServerCertificateValidationCallback += delegate {
return true;
};
Однако это не решило проблему.
Поскольку исключение не дает какой-либо детали, на самом деле трудно определить, что его вызывает. Моя попытка переопределить недействительный сертификат сервера не работает? Является ли предоставленный мной сертификат клиента ненадежным для сервера? Я не загружаю сертификат клиента надлежащим образом?
Мне бы очень хотелось, чтобы советы по устранению подобных проблем. У меня нет доступа к серверу или его журналам, к сожалению.
Ниже приведены важные части кода:
ServicePointManager.ServerCertificateValidationCallback += delegate {
return true;
};
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); // url is an HTTPS URL.
X509Certificate clientCert = new X509Certificate("certificate.crt", "password");
req.ClientCertificates.Add(clientCert);
WebResponse resp = req.GetResponse(); // This fails!