RestSharp - 忽略SSL错误

Mic*_*rum 59 https restsharp

有什么可以让RestSharp忽略SSL证书中的错误吗?我有一个测试客户端,我连接的服务还没有一个有效的cetificate.

当我提出请求时,我收到错误:

The underlying connection was closed: Could not establish trust 
relationship for the SSL/TLS secure channel.
Run Code Online (Sandbox Code Playgroud)

提前致谢

/迈克尔

更新:

我最终使用:

ServicePointManager.ServerCertificateValidationCallback +=
            (sender, certificate, chain, sslPolicyErrors) => true;
Run Code Online (Sandbox Code Playgroud)

Mic*_*rum 70

正如约翰所说:

ServicePointManager.ServerCertificateValidationCallback +=
        (sender, certificate, chain, sslPolicyErrors) => true;
Run Code Online (Sandbox Code Playgroud)

  • 工作,但考虑到它正在设定一个全球行为,这并不是很好. (6认同)

M. *_*put 13

您可以绕过SSL检查

在对象级别:

//bypass ssl validation check by using RestClient object.
var restClient = new RestClient(baseUrl);
restClient.RemoteCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
Run Code Online (Sandbox Code Playgroud)

要么

在应用程序级别:

//bypass ssl validation check globally for whole application.
ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;
Run Code Online (Sandbox Code Playgroud)

  • 这似乎不再是 ReshSharp 107 中的一个选项。我尝试使用设置的 RemoteCertificateValidationCallback 创建 RestClientOptions,但它似乎不起作用。如果我回滚到 RestSharp 106 你的答案有效。 (3认同)

小智 8

有一个比修改代码更好的解决方案.理想情况下,您需要一个能够模拟您在生产环境中看到的条件并修改代码的解决方案将不会这样做,如果您在部署之前忘记取出代码,则可能会很危险.

您需要某种自签名证书.如果你正在使用IIS Express,你将拥有其中一个,你只需要找到它.如果您还没有,请打开Firefox或任何您喜欢的浏览器并转到您的网站.您应该能够从URL栏查看证书信息,并且根据您的浏览器,您应该能够导出证书.

接下来,打开MMC.exe,然后添加"证书"管理单元.将您的证书文件导入受信任的根证书颁发机构商店,这就是您应该需要的.

现在,您的计算机作为一个整体将隐式信任它自己生成的任何证书,您不需要添加代码来专门处理它.当您转到生产时,如果您在那里安装了正确的有效证书,它将继续工作.

  • 我的 RestSharp Rest 客户端尝试访问没有有效证书的 REST 服务(第三方/外部/外国),当我尝试打开它的站点时,我在 URL 附近的浏览器中只看到警报:“连接不安全”。在您编写时,没有可从浏览器导出的证书。我无法为该站点/服务购买证书,因为它不是我的,我只想从中接收一些 json 数据而不会出错。 (2认同)