禁用wcf客户端的认证验证

Seb*_*sek 4 .net c# asp.net security wcf

我在IIS中运行了2个应用程序 - 客户端和服务.服务运行得很好,但客户端不是.

他们通过WCF互相交谈,并在证书上传递消息安全性(这不是传输安全性,而只是消息安全性).两者都使用自签名证书.

但是客户端最终会出错:

System.IdentityModel.Tokens.SecurityTokenValidationException:X.509证书...不在受信任的人员存储中.X.509证书......连锁建筑失败.使用的证书具有无法验证的信任链.替换证书或更改certificateValidationMode.已处理证书链,但终止于信任提供程序不信任的根证书

我知道如何在服务端禁用证书验证,我做到了,但是如何在客户端禁用CA验证?

sud*_*u63 11

如果要从客户端应用程序向服务器发出请求,请在发出服务请求之前调用以下行以避免进行认证检查.

使用此代码将绕过由于自签名证书而导致的SSL验证错误.

System.Net.ServicePointManager.ServerCertificateValidationCallback =
                delegate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
                { return true; };
Run Code Online (Sandbox Code Playgroud)

注意:仅用于测试目的,实际应用程序使用有效的SSL证书.

  • 这绝对是解决上述问题的最通用方法。虽然我对自签名证书被称为无效有一点不满。自签名证书仍具有相同的功能。问题在于,自签名证书本质上不可信,因为它们未通过签名层次结构检查,但它们肯定有效-根据应用程序的上下文,证书固定可能是一种适当的选择,并且整个信任链可以在提供与CA签名证书相同的核心功能时被绕过。 (3认同)