10

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

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

Windows 服务器 2003。IIS。该网站是“WebServices.companyName.vmc”

1

这是该站点的主机标头

2

从服务器,它显示证书是“好的”。

在此处输入图像描述

以下是一些网站设置

在此处输入图像描述


现在,在 Visual Studio 2008 中,添加 Web 参考

在此处输入图像描述

在弹出窗口中单击“是”

在此处输入图像描述

依次单击此弹出窗口的“否”几次。

在此处输入图像描述

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

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

当浏览器中的 web 服务站点时,URL 栏旁边的小挂锁会提供以下消息:

在此处输入图像描述


这是我现有的代码:

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


编辑

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

4

2 回答 2

13

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

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

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

于 2012-06-29T18:08:43.073 回答
2

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

除此之外,我已经更正了证书,因此我不再需要忽略无效的证书。

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

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

于 2012-07-02T21:52:46.407 回答