RestSharp - игнорировать ошибки SSL

Есть ли способ заставить RestSharp игнорировать ошибки в сертификатах SSL? У меня есть тестовый клиент, и у службы, к которой я подключаюсь, еще нет действующего сертификата.

Когда я делаю запрос сейчас, я получаю ошибку:

The underlying connection was closed: Could not establish trust 
relationship for the SSL/TLS secure channel.

заранее спасибо

/Майкл

Обновить:

Я закончил тем, что использовал:

ServicePointManager.ServerCertificateValidationCallback +=
            (sender, certificate, chain, sslPolicyErrors) => true;

4 ответа

Решение

Как предположил Джон:

ServicePointManager.ServerCertificateValidationCallback +=
        (sender, certificate, chain, sslPolicyErrors) => true;

Вы можете установить его в своем объекте

var restClient = new RestClient(baseUrl);
restClient.RemoteCertificateValidationCallback = 
           (sender, certificate, chain, sslPolicyErrors) => true;

Есть лучшее решение, чем модификация вашего кода. В идеале вам нужно решение, которое будет имитировать условия, которые вы увидите в рабочей среде, и изменение кода не сделает этого и может быть опасным, если вы забудете извлечь код перед его развертыванием.

Вам понадобится какой-либо самозаверяющий сертификат. Если вы используете IIS Express, у вас уже будет один из них, вам просто нужно его найти. Если у вас его еще нет, откройте Firefox или любой другой браузер и перейдите на свой веб-сайт. Вы должны иметь возможность просматривать информацию о сертификате в строке URL, и в зависимости от вашего браузера вы сможете экспортировать сертификат.

Затем откройте MMC.exe и добавьте оснастку "Сертификат". Импортируйте файл сертификата в хранилище доверенных корневых центров сертификации, и это все, что вам нужно.

Теперь ваш компьютер в целом будет неявно доверять любым сертификатам, которые он сам сгенерировал, и вам не нужно будет добавлять код для этой особой обработки. Когда вы перейдете к производству, он продолжит работать, если на нем установлен правильный действительный сертификат.

Для последней версии RestSharp (v110.2.0):

      var options = new RestClientOptions("https://example.com");
options.RemoteCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;

var client = new RestClient(options);
var request = new RestRequest();

var response = await client.GetAsync(request);
Другие вопросы по тегам