尝试为我们的Intranet的Web服务站点设置自签名证书。证书本身显示它是“ok”但是当尝试从Web服务调用方法时它会抛出错误,并且在添加Web引用时它会发出警告。
以下是确保我提供准确信息的步骤和一些屏幕截图。
Windows server 2003. IIS。该网站是“WebServices.companyName.vmc”
以下是网站的主机标头
从服务器,它显示证书是'ok'。
以下是一些网站设置
现在,在visual studio 2008中,添加了Web引用
在弹出窗口中单击“是”
在此弹出窗口中单击“否”,按顺序多次。
代码行运行后,调用Web服务...我收到此错误
基础连接已关闭:无法建立信任 SSL / TLS安全通道的关系。
当浏览器中的webservice站点,URL栏的小垫锁定时,会提供以下消息:
这是我现有的代码:
Dim mySvc As New WebServices.InstantAccount
mySvc.calledFunction()
修改
对于有类似问题的任何人,请阅读iamkrillin的回答和我的回答......因为它们是解决问题的两种不同方式......取决于您可以控制的部分(代码或证书) )。
答案 0 :(得分:13)
在创建服务客户端之前,在某处添加此行代码。
ServicePointManager.ServerCertificateValidationCallback = ((sender, certificate, chain, sslPolicyErrors) => true);
请注意:这会导致您的应用接受所有无效的证书,并继续前进。如果这是不可接受的,您可以附加一个函数并进行处理以确定证书错误是否正常
答案 1 :(得分:1)
iamkrillin确实有一个可行的解决方案,因为他的代码将忽略无效的证书,并允许应用程序使用Web服务。
除此之外,我已更正证书,以便我不再需要忽略无效证书。
主机标头值(在OP中显示)是WebServices.mycompany.vmc,但证书的“公共名称”或“友好名称”(在“证书路径”的OP屏幕截图3中显示)是WebServices。
通用名称和网站网址需要匹配。我使用通用名称“WebServices.mycompany.vmc”重新创建了自签名证书,现在证书错误消失了。 Web服务可供使用,编码器无需忽略应用程序的无效证书。