从Windows服务中调用时,SSL Webservice调用失败

时间:2010-02-11 11:49:37

标签: c# web-services ssl windows-services

在c#windows服务中进行网络服务调用。服务是SSL证书的背后。证书已注册到受信任的根目录(提供商提供的密码)。

问题是,从开发机器开始,一切都运行良好,但一旦部署到生产服务器上,我们就会继续收到403错误。

可以浏览服务器上的服务,但获取证书弹出窗口吗?

没有代理,防火墙很好,直接连接。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

如果您获得403,那很可能意味着服务器需要某种凭据,并且如果您在浏览器中获得证书弹出窗口,则很可能意味着这些凭据是客户端证书。 (403也可能意味着服务器因为某些其他原因而不喜欢你,比如IP地址,但鉴于这种情况似乎不太可能。)

假设服务需要客户端证书,您需要通过代码或配置文件将客户端证书与调用明确关联。 (如何解决这个问题取决于您使用的是WCF还是经典的Web Reference Web服务。)

听起来,提供商提供的证书可能是服务正在寻找的客户端证书。如果是这样,它将需要进入LocalMachine的“我的”存储而不是Trusted Roots(因为客户端证书不会是根证书),并且您需要配置代码以在请求中使用它

答案 1 :(得分:1)

您还需要添加

ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };

如果你得到“无法建立信任关系”的废话消息!