wpf - 如何在 WCF 客户端中接受自签名 SSL 证书?

标签 wpf wcf iis-7 ssl-certificate

这可能是一个愚蠢的问题,但我就是找不到答案。

我想做什么:
我有一个由 IIS 托管的 WCF 服务。它运行良好,我可以访问 wsdl,我有服务器的自签名证书等。我想从 WPF 客户端调用此服务。

问题是,由于我有一个自签名证书,因此在调用服务时出现以下异常:
无法为具有“localhost”权限的 SSL/TLS 安全 channel 建立信任关系。

如果我从浏览器访问站点(或服务),则没有问题,因为浏览器会警告我有关证书的信息,并让我选择查看页面。但是 WPF 客户端只是抛出异常。

我不想完全关闭身份验证过程,我只想让用户可以选择忽略此警告(就像浏览器一样)。

任何人都可以为此提供一些代码吗?如果你遇到了一个很好的、详细的教程,那也太棒了。 (看,我发现的教程的问题是缺乏细节)

最佳答案

您可以自行注册证书。如果也在客户端加载证书,然后将其注册为受信任的,则不应收到该警告。

您需要找到 X509CertificateCollection 并将证书添加到该集合中。我在 Ssl 上运行 SmtpClient 时遇到了这种问题。

通过钩住 System.Net.ServicePointManager.ServerCertificateValidationCallback或实现 System.Net.ICertificatePolicy并将我自己安装的证书标识为有效/可信(附加到 System.Net.ServicePointManager.CertificatePolicy )。

这本身不是 WCF 的东西,但据我所知,这也应该转化为 WCF。这完全取决于 WCF 在幕后使用的内容。

关于wpf - 如何在 WCF 客户端中接受自签名 SSL 证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4977218/

相关文章:

c# - WPF bool 触发器

asp.net - session 状态超时与空闲超时

c# - 在不同行中添加具有不同值的 DataGrid 复选框列

c# - Viewmodel 有一个项目列表,每个项目都有另一个项目列表

c# - 获取从url发送到wpf的变量?

没有证书和 Windows 身份验证的 WCF 消息安全性

c# - 如何从IErrorHandler产生等效于HTTP 403的WCF消息?

c# - 在 c# 中生成的代理类中列出 vs 数组

iis - 使用 appcmd 添加 ssl 绑定(bind)时出错

mod-rewrite - 在 IIS7 上使用 Joomla 重写 URL