我的公司开发了使用该Web服务的.NET Web服务和客户端DLL。 Web服务由SSL托管在我们的服务器上,CERT由Godaddy提供和签名。我们在托管环境中有一些客户端,这些客户在尝试访问我们的Web服务时从客户端DLL中获取以下错误消息。

System.NET.WebException关闭了基础连接:无法建立SSL/TLS安全渠道的信任关系。

我们的修复程序是让它们在服务器上打开IE,这本身就是许多托管服务的挑战,然后转到WSDL URL。 IE然后通过安全警报对话框提示他们。它说证书日期是有效的,有效的名称与页面的名称匹配,但是由您没有选择信任的公司发行的。当他们单击“是”进行时,客户端DLL可以成功连接到Web服务并正常操作。

有人知道为什么Godaddy不会进入有效的出版商列表吗?我们运行的所有服务器都具有有效的权威。我猜想,出于安全原因,他们已经卸载了Godaddy的权威,但并不完全相信没有其他潜在问题。

不幸的是,我没有太多运气试图在本地重新创建它。如果我进入互联网选项并删除Godaddy当局并进行我们的服务,那么SSL的工作正好。我回到出版商的名单中,Godaddy重新回到了。所以我的第二个问题是,您如何摆脱Godaddy,以便我能得到无效的证书警告?

好的,最后一个问题。我可以告诉Web服务以忽略无效的证书。我已经看到一些有关使用WCF编程进行此操作的帖子,但没有旧的Web服务。

有帮助吗?

解决方案

您可能需要在服务器上安装用于签署SSL证书的中间证书。

浏览器将尝试通过检查签署SSL证书的证书链的验证来验证SSL证书。如果服务器未向SSL证书提供证书链,则浏览器可能会拒绝SSL证书。 (Firefox比IE更重要)。必须将根证书安装在客户端计算机上,以使其有效。

其他提示

我通过在调用Web方法之前添加此行来解决此错误:

System.Net.ServicePointManager.ServerCertificateValidationCallback = (senderX, certificate, chain, sslPolicyErrors) => { return true; };

vb.net等效是

   System.Net.ServicePointManager.ServerCertificateValidationCallback = Function(senderX, certificate, chain, sslPolicyErrors)
                                                                             Return True
                                                                         End Function

这实际上是一个服务器错误问题,但我将在这里添加我可以的问题。

Windows机器通常信任的根本授权列表经常定期更新。当Windows更新到IE时,这落在了。你可以看到 MSDN以获取更多信息.

如果您的客户没有打开Windows更新或积极忽略Windows更新,这对于许多IT部门来说是非常普遍的,那么除了Switch SSL SSL提供商外,您无能为力。

基本上,他们需要获取证书更新,或者您需要切换到具有相关机器已经被信任的概率很高的证书提供商。通常这意味着 Verisign 或者 融化. 。第三个选择是您一直走的路线:让他们手动信任根CA。

归根结底,我讨厌以这种方式更改应用程序的想法,这仅仅是因为所讨论的IT部门是白痴,但真正的问题归结为您的公司想要如何处理这一问题。

当您在Web服务器上查看该证书的Go Daddy认证路径时,您是否看到Go Daddy类XXX或Starfield类XXX?

从您的非差异客户端,即Windows Vista向上,Go Daddy认证路径显示什么? Go Daddy类XXX或Starfield类XXX?

这些会受到警告的客户,是传统客户吗?即WinXP及以上?

root证书更新的工作方式与Windows Vista一样不同。

http://support.microsoft.com/kb/931125

Windows Vista上的根证书和后来是通过自动根本更新机制分发的,即根据ROOT证书。当用户访问安全网站(通过使用HTTPS SSL),读取安全电子邮件(S/MIME)或下载已签名的ActiveX控件(代码签名)并遇到新的根证书,Windows证书链条验证软件检查Microsoft更新根证书。如果找到它,它将下载包含程序中所有受信任根证书列表的当前证书信任列表(CTL),并验证是否在此处列出了根证书;然后,它将指定的根证书下载到系统中,并将其安装在Windows受信任的根认证机构商店中。

您可能会发现Web服务器上的Go Daddy认证路径认为它是Starfield Class 2,而不是Go Daddy Class 2,因此您安装了错误的根证书。它吸引了我,因为当您在Web服务器上查看时,它不会显示root证书警告,下载并安装Do do doddy Class 2 root Cert并删除Starfield One,您的问题应该消失。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top