针对不受信任的SSL端点生成WCF代理

时间:2009-04-01 01:25:10

标签: .net wcf web-services ssl



我需要为客户端公开的服务生成WCF代理。该服务被严格锁定,因此这很难实现。另外,我是WCF的新手,所以我可能会遗漏一些明显的东西......

客户端只打开了我们生产服务器的防火墙 - 所以我无法在我的开发机器上从Visual Studio生成代理。此外,该服务仅通过HTTPS公开。它要求我们使用客户端证书进行身份验证...

我希望在生产盒上运行svcutil来生成.cs文件,然后在本地复制文件。但是svcutil拒绝运行,因为客户端使用的是自签名证书。它给了我以下错误:

  

基础连接已关闭:   无法建立信任关系   用于SSL / TLS安全通道。该   远程证书无效   根据验证程序。

我尝试将服务的证书添加为受信任的根证书,但这不起作用。在证书MMC管理单元中,我得到“Windows没有足够的信息来验证证书”。

有没有办法绕过svcutil执行的安全检查?

当我远程访问生产服务器时,我可以从IE成功浏览到WSDL。我只需点击“继续浏览此网站(不推荐)”。我还必须选择已安装的客户端证书,它可以正常工作。然后我可以通过IE手动下载WSDL和XSD文件。因此,另一种替代方案可能是从WSDL和XSD的本地副本生成WCF代理,而不是针对实时服务运行svcutil。但我不知道如何正确地做到这一点。

我尝试将静态WSDL和XSD文件放在我们托管的另一个网站上,并更改< xs:import schemaLocation =“...”/>属性指向新网站。但是当我对这个网站运行svcutil时,我遇到了一些关于重复类型声明的错误 - 例如:

  

错误:出现验证错误   导出期间生成的模式:       资源:       行:1列:1415验证错误:complexType   'http://[domain-name]/Promotions/2009-02-17:InsertReferralPromo_Response'有   已经宣布。


我错过了一些明显的方法吗?或者我们应该要求客户放松他们的安全性? :)

感谢您的帮助,您可以给我...
理查德

2 个答案:

答案 0 :(得分:2)

您的问题似乎与安全性无关。您下载的WSDL和模式似乎存在问题。

一个建议是将所有文件放在磁盘上而不是网站上的目录中。如有必要,请删除schemaLocation属性。

然而,这似乎不会有所帮助。您可以尝试使用XMLSpy验证这些文件。

答案 1 :(得分:0)

当您浏览到WSDL时,单击证书,查看证书,然后安装证书。

然后再次尝试运行svcutil。