在c#windows服务中进行网络服务调用。服务是SSL证书的背后。证书已注册到受信任的根目录(提供商提供的密码)。
问题是,从开发机器开始,一切都运行良好,但一旦部署到生产服务器上,我们就会继续收到403错误。
可以浏览服务器上的服务,但获取证书弹出窗口吗?
没有代理,防火墙很好,直接连接。
有什么建议吗?
答案 0 :(得分:2)
如果您获得403,那很可能意味着服务器需要某种凭据,并且如果您在浏览器中获得证书弹出窗口,则很可能意味着这些凭据是客户端证书。 (403也可能意味着服务器因为某些其他原因而不喜欢你,比如IP地址,但鉴于这种情况似乎不太可能。)
假设服务需要客户端证书,您需要通过代码或配置文件将客户端证书与调用明确关联。 (如何解决这个问题取决于您使用的是WCF还是经典的Web Reference Web服务。)
听起来,提供商提供的证书可能是服务正在寻找的客户端证书。如果是这样,它将需要进入LocalMachine的“我的”存储而不是Trusted Roots(因为客户端证书不会是根证书),并且您需要配置代码以在请求中使用它
答案 1 :(得分:1)
您还需要添加
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
如果你得到“无法建立信任关系”的废话消息!