Wpf 如何在WCF客户端中接受自签名SSL证书?
这可能是个愚蠢的问题,但我就是找不到答案 我想做的是: 我有一个由IIS托管的WCF服务。它工作得很好,我可以访问wsdl,我有一个服务器的自签名证书等。我想从WPF客户端调用此服务 问题是,由于我有一个自签名证书,因此在调用服务时出现以下异常: 无法为具有权限“localhost”的SSL/TLS安全通道建立信任关系 如果我从浏览器访问站点(或服务),这是没有问题的,因为浏览器会警告我有关证书的信息,并允许我选择是否查看页面。但是WPF客户端只是抛出一个异常 我不想完全关闭身份验证过程,我只想让用户选择忽略此警告(就像浏览器一样)Wpf 如何在WCF客户端中接受自签名SSL证书?,wpf,wcf,iis-7,ssl-certificate,Wpf,Wcf,Iis 7,Ssl Certificate,这可能是个愚蠢的问题,但我就是找不到答案 我想做的是: 我有一个由IIS托管的WCF服务。它工作得很好,我可以访问wsdl,我有一个服务器的自签名证书等。我想从WPF客户端调用此服务 问题是,由于我有一个自签名证书,因此在调用服务时出现以下异常: 无法为具有权限“localhost”的SSL/TLS安全通道建立信任关系 如果我从浏览器访问站点(或服务),这是没有问题的,因为浏览器会警告我有关证书的信息,并允许我选择是否查看页面。但是WPF客户端只是抛出一个异常 我不想完全关闭身份验证过程,我只想
有人能提供一些代码吗?如果你遇到一个关于这个的好的,详细的教程,它也会很棒。(请参阅,我发现教程中的问题是缺少详细信息)您可以自己注册证书。如果同时在客户端加载证书,然后将其注册为受信任的,则不应收到该警告 您需要找到X509CertificateCollection并将证书添加到该集合中。我在通过Ssl运行SmtpClient时遇到了这种问题 通过挂接
System.Net.ServicePointManager.ServerCertificateValidationCallback
或实现System.Net.ICertificatePolicy
并将我自己安装的证书标识为有效/受信任的证书(附加到System.Net.ServicePointManager.CertificatePolicy
)
这不是WCF本身的东西,但从我所能说的,这应该转化为WCF以及。这完全取决于WCF在幕后的用途。以下是使WCF客户端接受任意证书所需的最低代码量。这是不安全的。仅用于测试。如果这个代码变得疯狂并吃掉了你的小猫,不要怪我
ServicePointManager.ServerCertificateValidationCallback +=
new System.Net.Security.RemoteCertificateValidationCallback(EasyCertCheck);
回电:
bool EasyCertCheck(object sender, X509Certificate cert,
X509Chain chain, System.Net.Security.SslPolicyErrors error)
{
return true;
}
代码无耻地从对最没有帮助的答案中删除。我更改了问题,以反映不属于默认受信任根证书的自签名证书的问题。请指定在何处编写这些内容?什么类应该实现接口等?我是WCF的新手,我从未使用过安全连接或IIS,所以我还是有点迷茫……如果你钩住
System.Net.ServicePointManager.ServerCertificateValidationCallback
,你会收到验证证书的请求吗?一种非代码方法是信任你的开发机器和测试环境上的证书。正如这里所解释的,语言的完美运用:)