我的公司开发了一个 .NET Web 服务和一个使用该 Web 服务的客户端 dll。该网络服务通过 ssl 托管在我们的服务器上,证书由 GoDaddy 提供和签名。我们在托管环境中有一些客户端在尝试访问我们的 Web 服务时从客户端 dll 收到以下错误消息。
System.Net.WebException 底层连接已关闭:无法为 SSL/TLS 安全通道建立信任关系。
我们的解决方法是让他们在服务器上打开 IE,这对许多托管服务本身来说是一个挑战,然后转到 WSDL url。然后,IE 会通过安全警报对话框提示它们。它表示证书日期有效且有效名称与页面名称匹配,但由您未选择信任的公司颁发。当他们单击“是”继续时,客户端 dll 可以成功连接到 Web 服务并正常运行。
有谁知道为什么 GoDaddy 不会出现在有效的发布者列表中?我们运行的所有服务器都将 GoDaddy 作为有效权限。我猜,出于安全原因,他们已经卸载了 GoDaddy 的权限,但并不完全相信没有其他潜在问题。
不幸的是,我没有太多运气尝试在本地重新创建它。如果我进入 Internet Options 并删除 GoDaddy 权限并点击我们的服务,ssl 就可以正常工作。我回到出版商列表中,GoDaddy 被重新加入。所以我的第二个问题是,你到底是如何摆脱 GoDaddy 的,这样我才能得到一个无效的证书警告?
好的,最后一个问题。有没有办法在代码中告诉 Web 服务忽略无效证书。我看过一些关于使用 WCF 以编程方式执行此操作的帖子,但不是旧的 Web 服务。