繁体   English   中英

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

[英]Generating WCF proxy against untrusted SSL endpoint



我需要为我们的客户公开的服务生成一个 WCF 代理。 该服务被非常严格地锁定,所以这很困难。 另外,我是 WCF 的新手,所以我可能遗漏了一些明显的东西......

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

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

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

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

有什么方法可以绕过 svcutil 正在执行的安全检查吗?

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

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

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


我是否错过了一些明显的方法来做到这一点? 还是我们应该要求客户放松他们的安全性? :)

感谢你给与我的帮助...
理查德

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

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

但是,这似乎没有帮助。 您可以尝试使用 XMLSpy 验证这些文件。

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

然后尝试再次运行 svcutil。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM