自签名证书。底层连接已关闭:无法建立信任关系

时间:2012-06-29 17:55:34

标签: .net web-services security iis ssl-certificate

尝试为我们的Intranet的Web服务站点设置自签名证书。证书本身显示它是“ok”但是当尝试从Web服务调用方法时它会抛出错误,并且在添加Web引用时它会发出警告。

以下是确保我提供准确信息的步骤和一些屏幕截图。

Windows server 2003. IIS。该网站是“WebServices.companyName.vmc”

1

以下是网站的主机标头

2

从服务器,它显示证书是'ok'。

enter image description here

以下是一些网站设置

enter image description here


现在,在visual studio 2008中,添加了Web引用

enter image description here

在弹出窗口中单击“是”

enter image description here

在此弹出窗口中单击“否”,按顺序多次。

enter image description here

代码行运行后,调用Web服务...我收到此错误

  

基础连接已关闭:无法建立信任   SSL / TLS安全通道的关系。

当浏览器中的webservice站点,URL栏的小垫锁定时,会提供以下消息:

enter image description here


这是我现有的代码:

Dim mySvc As New WebServices.InstantAccount
mySvc.calledFunction()


修改

对于有类似问题的任何人,请阅读iamkrillin的回答和我的回答......因为它们是解决问题的两种不同方式......取决于您可以控制的部分(代码或证书) )。

2 个答案:

答案 0 :(得分:13)

在创建服务客户端之前,在某处添加此行代码。

ServicePointManager.ServerCertificateValidationCallback = ((sender, certificate, chain, sslPolicyErrors) => true);

请注意:这会导致您的应用接受所有无效的证书,并继续前进。如果这是不可接受的,您可以附加一个函数并进行处理以确定证书错误是否正常

答案 1 :(得分:1)

iamkrillin确实有一个可行的解决方案,因为他的代码将忽略无效的证书,并允许应用程序使用Web服务。

除此之外,我已更正证书,以便我不再需要忽略无效证书。

主机标头值(在OP中显示)是WebServices.mycompany.vmc,但证书的“公共名称”或“友好名称”(在“证书路径”的OP屏幕截图3中显示)是WebServices。

通用名称和网站网址需要匹配。我使用通用名称“WebServices.mycompany.vmc”重新创建了自签名证书,现在证书错误消失了。 Web服务可供使用,编码器无需忽略应用程序的无效证书。