2010-02-11 89 views
0

从c#windows服务中调用web服务。服务背后是SSL证书。证书已注册到受信任的根(由提供者提供的密码)。从Windows服务中调用SSL Webservice调用失败

问题是,从开发机器的东西完美的作品,但一旦部署到生产服务器,我们继续得到403错误。

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

没有代理,防火墙罚款,直接连接出。

有什么建议吗?

回答

2

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

假设服务需要客户端证书,则需要明确通过代码或在您的配置文件中将客户端证书与呼叫相关联。 (你如何去做这取决于你是使用WCF还是经典的Web Reference Web服务。)

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

+0

感谢您的回答。问题似乎是我们试​​图导入公钥文件而不是证书。通过导出PK文件作为证书并将其导入到受信任的根目录来解决Porblem问题。 – 2010-02-18 11:19:15

1

您还需要添加

ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; 

,如果你得到“无法创建信任关系”垃圾邮件!