Ten*_*iko 9 wpf wcf iis-7 ssl-certificate
这可能是一个愚蠢的问题,但我找不到答案.
我想做什么:我有一个由IIS托管的WCF服务.它工作得很好,我可以访问wsdl,我有一个服务器的自签名证书等.我想从WPF客户端调用此服务.
问题是,由于我有自签名证书,因此在调用服务时出现以下异常: 无法为具有权限"localhost"的SSL/TLS安全通道建立信任关系.
如果我从浏览器访问该站点(或服务),这没有问题,因为浏览器警告我有关证书,并让我选择查看页面.但WPF客户端只是抛出异常.
我不想完全关闭身份验证过程,我只想让用户选择忽略此警告(就像浏览器那样).
任何人都可以为此提供一些代码吗?如果你遇到一个关于这个的好的,详细的教程,它也会很棒.(看,我发现的教程问题是缺乏细节)
use*_*032 15
这是使WCF客户端接受任意证书所需的最少代码量.这不安全.仅用于测试.如果这个代码发狂并吃掉你的小猫,不要怪我.
ServicePointManager.ServerCertificateValidationCallback +=
new System.Net.Security.RemoteCertificateValidationCallback(EasyCertCheck);
Run Code Online (Sandbox Code Playgroud)
回电:
bool EasyCertCheck(object sender, X509Certificate cert,
X509Chain chain, System.Net.Security.SslPolicyErrors error)
{
return true;
}
Run Code Online (Sandbox Code Playgroud)
代码无耻地从最不实用的答案解除,是否可以强制WCF测试客户端接受自签名证书?
您可以自己注册证书.如果在客户端中加载证书,然后将其注册为可信任,则不应该收到该警告.
您需要找到X509CertificateCollection并将证书添加到该集合.我遇到了一个在Ssl上运行的SmtpClient的问题.
通过挂钩System.Net.ServicePointManager.ServerCertificateValidationCallback或实现System.Net.ICertificatePolicy并将我自己安装的证书识别为有效/可信(附加到System.Net.ServicePointManager.CertificatePolicy).
这本身不是WCF的东西,但据我所知,这也应该转换为WCF.这完全取决于WCF在引擎盖下使用的内容.