Подтвердить что ты не робот

Ошибка: С# Подключенное соединение было закрыто: не удалось установить доверительные отношения для безопасного канала SSL/TLS

Я пытаюсь сделать запрос через SSL. Сертификат уже установлен на машине и работает через браузер.

Я использую этот запрос:

System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
byte[] data = encoding.GetBytes(request.Content.OuterXml.ToString());
string password = "XXXX";
X509Certificate2 cert = new X509Certificate2("c:\\zzzz.p12", password);
string key = cert.GetPublicKeyString();
string certData = Encoding.ASCII.GetString(cert.Export(X509ContentType.Cert));

Uri uri = new Uri(request.Url);
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(uri);
myRequest.Credentials = new NetworkCredential(request.User, request.Password.ToString());
myRequest.Method = "PUT";
myRequest.ContentType = request.ContentType;
myRequest.ContentLength = data.Length;
myRequest.ClientCertificates.Add(cert);

Stream newStream = myRequest.GetRequestStream();
newStream.Write(data, 0, data.Length);
newStream.Close();

System.IO.StreamReader st = new StreamReader(((HttpWebResponse)myRequest.GetResponse()).GetResponseStream());

Используя этот код, я получаю эту ошибку:

Подключенное соединение было закрыто: не удалось установить доверие отношения для безопасного канала SSL/TLS. --- > System.Security.Authentication.AuthenticationException: удаленный сертификат недействителен в соответствии с процедурой проверки.

В чем проблема?

4b9b3361

Ответ 1

Я решил проблему с этим:

ServicePointManager.ServerCertificateValidationCallback = new        
RemoteCertificateValidationCallback
(
   delegate { return true; }
);

Ответ 2

Убедитесь, что ваш сертификат правильно доверен. Был ли добавлен корневой сертификат в правильное хранилище сертификатов (Trusted Root CA на локальном компьютере)?

Я столкнулся с этой ошибкой, когда корневой сертификат (собственный) для (самостоятельно подписанного) сертификата был добавлен в доверенный корневой центр сертификации для текущего пользователя). Перемещение корневого сертификата в корневой магазин CA на локальном компьютере разрешило мою проблему.

Ответ 3

Это код клиента, правильно? И вы получаете доступ к URL-адресу HTTPS, не так ли? Я думаю, что проблема связана с сертификатом сервера, который стек TLS на стороне клиента не может быть проверен. Когда вы подключаетесь к этому URL через браузер, он работает плавно или вы видите предупреждение о несоответствии сертификата?