Запрос RestSharp прерван - не удалось создать безопасный канал SSL / TLS - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь проверить вызов API на моем локальном компьютере, используя RestSharp, со следующим кодом ...

        var client = new RestClient("https://[API URL]");

        var request = new RestRequest( Method.POST);
        request.AddParameter("session", this, ParameterType.RequestBody);

        IRestResponse<SessionOut> response = client.Execute<SessionOut>(request);
        return response.Data.session.id;

В response Я получаю сообщение об ошибке, сообщающее, что запросбыл прерван из-за того, что «не удалось создать безопасный канал SSL / TLS».

Означает ли это, что мне нужно попытаться установить https://localhost вместо http://localhost для вызова APIпо адресу https: // address?

ОБНОВЛЕНИЕ

Я обновил свой код до следующего, как указано в ответе @ Shai_Aharoni ниже.Я все еще получаю ту же ошибку, однако.

        string pathToYourClientCert = Path.Combine( AppDomain.CurrentDomain.BaseDirectory, "[my certificate file");
        var client = new RestClient("[API URL]/");
        client.ClientCertificates = new X509CertificateCollection();
        client.ClientCertificates.Add(new X509Certificate(pathToYourClientCert));

        var request = new RestRequest( Method.POST);
        request.AddParameter("session", this, ParameterType.RequestBody);

        IRestResponse<SessionOut> response2 = client.Execute<SessionOut>(request);

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Попробуйте добавить это в свой код:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

Связанные ресурсы:

0 голосов
/ 10 октября 2018

Хорошо ... Есть несколько шагов, которые необходимо выполнить, прежде чем вы сможете позвонить вам в конечную точку HTTPS.

1) Убедитесь, что ваш сервер поддерживает конечную точку HTTPS (т. Е. URL * 1003).*https://[APIURL] достижимо.

2) Наличие действующего сертификата сервера (сервера api), установленного на машине, которая выполняет вызов HTTPS.

3) Добавьте сертификат в клиент RestSharp,Примерно так:

string pathToYourClientCert = "cer/cert.cer";
client.ClientCertificates.Add(new X509Certificate(pathToYourClientCert));

Надеюсь, это поможет ...

...