【发布时间】:2009-04-01 01:25:09
【问题描述】:
我需要为我们的客户端公开的服务生成 WCF 代理。该服务被非常严格地锁定,所以这很困难。另外,我是 WCF 的新手,所以我可能遗漏了一些明显的东西...
客户端只向我们的生产服务器打开了他们的防火墙 - 所以我无法在我的开发机器上从 Visual Studio 生成代理。此外,该服务仅通过 HTTPS 公开。它要求我们使用客户端证书进行身份验证...
我希望在生产机器上运行 svcutil 来生成 .cs 文件,然后将文件复制到本地。但是 svcutil 拒绝运行,因为客户端使用的是自签名证书。它给了我以下错误:
底层连接已关闭: 无法建立信任关系 用于 SSL/TLS 安全通道。这 远程证书无效 根据验证程序。
我尝试将服务的证书添加为受信任的根证书,但这不起作用。在证书 MMC 管理单元中,我收到“Windows 没有足够的信息来验证证书”。
有什么方法可以绕过 svcutil 正在执行的安全检查吗?
当我远程访问生产服务器时,我可以从 IE 成功浏览到 WSDL。我只需点击“继续浏览本网站(不推荐)”。我还必须选择已安装的客户端证书,它工作正常。然后我可以通过 IE 手动下载 WSDL 和 XSD 文件。因此,另一种选择可能是从 WSDL 和 XSD 的本地副本生成 WCF 代理,而不是针对实时服务运行 svcutil。但我不知道如何正确地做到这一点。
我尝试将静态 WSDL 和 XSD 文件放在我们托管的另一个网站上,并更改
错误:出现验证错误 导出期间生成的架构: 资源: 行:1 列:1415 验证错误:complexType 'http://[domain-name]/Promotions/2009-02-17:InsertReferralPromo_Response' 有 已经声明了。
我是否错过了一些明显的方法来做到这一点?还是我们应该只要求客户放松他们的安全性? :)
感谢您能给我的任何帮助...
理查德
【问题讨论】:
-
您必须坚持尝试将证书安装为受信任的证书 - 这将是您能够正确生成代理的唯一方法。
标签: .net wcf web-services ssl