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

标签 .net wcf web-services ssl



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

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

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

The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. The remote certificate is invalid according to the validation procedure.

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

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

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

我尝试将静态 WSDL 和 XSD 文件放在我们托管的另一个网站上,并更改 属性以指向新站点。但是当我针对这个站点运行 svcutil 时,我得到了一堆关于重复类型声明的错误——例如:

Error: There was a validation error on a schema generated during export: Source: Line: 1 Column: 1415 Validation Error: The complexType 'http://[domain-name]/Promotions/2009-02-17:InsertReferralPromo_Response' has already been declared.


我是否缺少一些明显的方法来做到这一点?还是我们应该只要求客户放松他们的安全措施? :)

感谢您能给我的任何帮助...
理查德

最佳答案

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

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

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

关于.net - 针对不受信任的 SSL 端点生成 WCF 代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/703698/

相关文章:

silverlight - 在 SSL 中部署 WCF 服务和 silverlight

java - Tomcat 7 泽西 REST 不工作

.net - 为 Entity Framework 安装Oracle Data Provider时的"access denied"

c# - 将屏幕转换为客户端坐标问题

wcf - 从客户端调用 WCF DataService [WebGet] 函数

c# - 如何在 WCF 调用的序列化过程中处理异常

java - 在 Spring (HttpsUrlConnectionMessageSender) 中为 WS https 调用设置超时

java - 如果发生任何异常,我是否需要实例化新的 JAX-WS 客户端?

c# - 签署 .net 核心程序集的正确方法

c# - AddRange 授予公众访问列表的权限