Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Https RestSharp-忽略SSL错误_Https_Restsharp - Fatal编程技术网

Https RestSharp-忽略SSL错误

Https RestSharp-忽略SSL错误,https,restsharp,Https,Restsharp,我能让RestSharp忽略SSL证书中的错误吗?我有一个测试客户端,而我连接到的服务还没有有效的证书 当我现在发出请求时,我得到错误: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. 正如约翰所建议的: ServicePointManager.ServerCertificateValidationCallback +=

我能让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;

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

您需要某种类型的自签名证书。如果您正在使用IIS Express,那么您已经有了其中一个,您只需找到它即可。如果你还没有,打开Firefox或任何你喜欢的浏览器,进入你的网站。您应该能够从URL栏查看证书信息,并且根据您的浏览器,您应该能够导出证书

接下来,打开MMC.exe,并添加证书管理单元。将您的证书文件导入受信任的根证书颁发机构存储,这就是您所需要的全部内容

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

您可以绕过ssl检查 在对象级别:

//bypass ssl validation check globally for whole application.
ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;
(在和更高版本中提供)

在应用程序级别:

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

答案在这里,但我不能把它变成一个真正的从我的手机很好-我已经用答案更新了问题。但是发布一个“真实”的答案,我会接受它:-)通常最好将测试证书导入测试客户机信任锚中,而不是完全忽略证书验证。首先,它更现实;其次,避免在最终产品中留下这种不安全的代码;这正是我要找的!我认为最好是写一个你问题的答案,而不是在问题的答案里烤,但考虑到它设置了全局行为,这并不太好。当这是一个可以绕过SSL验证的主机时,您可以检查
sender.Address
以仅返回
true
。下面还有另一个答案显示了如何在RestClient对象上而不是全局设置。对不起,我不清楚,太难了,不像以前的解决方案那样,它只起作用。我不是证书专家。我的RestSharp Rest客户端尝试访问没有有效证书的Rest服务(第三方/外部/外部),当我尝试打开它的站点时,我在浏览器URL附近看到的唯一警报:“连接不安全”。并且在编写时,没有可从浏览器导出的证书。我没有可能购买该站点/服务的证书,因为它不是我的,我只想从它那里接收一些json数据而不出错。