我有一个开发系统,我正在尝试与第三方安全网络服务进行通信。
第三方向我提供了我在本地导入的证书。我已确保将证书添加到“受信任的根证书颁发机构”存储中。它似乎已正确导入,就好像我转到 Chrome 并尝试访问 Web 服务 WSDL 文件中提到的服务 URL 之一一样,我首先收到一个弹出窗口,要求我确认要使用哪个证书(只有一个选项)并且然后它让我通过。但是,如果我随后使用相同的 WSDL 文件在 Visual Studio 中创建服务引用,并调用代码中的其中一项服务,则会收到一条错误消息“无法为具有权限的 SSL/TLS 建立安全通道” 。
理想情况下,当我进行 Web 服务调用时,我会让 VS 确认证书,但由于这是一个开发系统,我也很乐意暂时忽略 SSL 错误。
为此,我在代码中添加了以下内容,以及我指定的协议的变体(例如,仅指定 SSL3、删除 SSL3 等):
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
| SecurityProtocolType.Tls11
| SecurityProtocolType.Tls12
| SecurityProtocolType.Ssl3;
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
但是无论我做什么,当我尝试进行服务调用时仍然收到 SSL 错误。
如果有人对如何让 VS 接受证书存在有任何建议(就像 Chrome 似乎所做的那样),或者如何让代码暂时忽略 SSL 错误,以便我可以继续开发,它'非常感谢。
Zo'rgg g t ergre g erg regeg rg r gr