是否可以让RestSharp忽略SSL证书中的错误?我有一个测试客户端,并且我连接到的服务还没有有效的证书。
当我现在发出请求时,出现错误:
The underlying connection was closed: Could not establish trust
relationship for the SSL/TLS secure channel.
是否可以让RestSharp忽略SSL证书中的错误?我有一个测试客户端,并且我连接到的服务还没有有效的证书。
当我现在发出请求时,出现错误:
The underlying connection was closed: Could not establish trust
relationship for the SSL/TLS secure channel.
Answers:
在对象级别:
(在RestSharp v106.0.0 和更高版本中可用)
//bypass ssl validation check by using RestClient object
var restClient = new RestClient(baseUrl);
restClient.RemoteCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
要么
在应用程序级别:
//bypass ssl validation check globally for whole application.
ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;
有一个比修改代码更好的解决方案。理想情况下,您需要一种能够模拟在生产环境中会看到的条件的解决方案,并且修改代码将无法做到这一点,并且如果您忘记在部署之前删除代码,则可能会很危险。
您将需要某种自签名证书。如果您使用的是IIS Express,那么您将已经拥有其中之一,只需找到它即可。如果尚未安装,请打开Firefox或任何喜欢的浏览器,然后转到您的网站。您应该能够从URL栏中查看证书信息,并且取决于浏览器,您应该能够导出证书。
接下来,打开MMC.exe,并添加“证书”管理单元。将您的证书文件导入“受信任的根证书颁发机构”存储中,这就是您所需要的。
现在,您的计算机作为一个整体将隐式信任它自己生成的所有证书,并且您无需添加代码来专门处理此证书。当您进入生产环境时,只要您在那里安装了正确的有效证书,它将继续工作。