如何解决忽略 ASP.NET Core 3.1 中的 WCF 证书错误
-MySolution
|--MyWCFWrapper
|--MyaspnetcoreWebApp
|--ConsoleTestApp
MyWCFWrapper
是一个 .NET Standard 库,它使用使用 Visual Studio 导入向导添加为 WCF 引用的 WCF 服务。
MyaspnetcoreWebApp
应用程序为前端提供控制器以供使用。在此控制器中,我正在实例化并调用 MyWCFWrapper
库。
ConsoleTestApp
是一个控制台应用程序,它还调用 MyWCFWrapper
库进行测试。
System.ServiceModel.Security.SecurityNegotiationException: '无法为具有权限'exampleabc.com'的 SSL/TLS 安全通道建立信任关系
当我进行 WCF 服务调用时。
出现此错误的原因是我在 exampleablc.com 上的 WCF 服务是一个测试服务器,并且具有自签名证书(名称与网络服务不同)并且也过期。
适用于 ConsoleTestApp 的解决方法:
System.Net.ServicePointManager.ServerCertificateValidationCallback +=
(se,cert,chain,sslerror) =>
{
return true;
};
MyWCFWrapperClass api = new MyWCFWrapperClass(..);
api.SendNewInfo("NewInfo");
这是不推荐,但现在对我来说还可以,因为它是一个测试服务器。
同样的解决方法在 MyaspnetcoreWebApp 控制器中不起作用。我试图让它发挥作用:.
- 在
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddHttpClient("Seitacertificate").ConfigurePrimaryHttpMessageHandler(() =>
{
return new httpclienthandler()
{
ServerCertificateCustomValidationCallback = (request,certificate,certificateChain,policy) =>
{
return true;
}
};
});
services.AddControllersWithViews();
----
}
- 已将证书添加到我本地 PC 上的受信任根证书颁发机构。失败可能是因为证书已过期。
证书错误是在 WCF 调用库中引发的,我无法找到忽略证书错误的方法。 我能做的是至少更新证书,使其不会过期。 (我已经开始这个过程,可能需要一些时间)
我想学习一种如何在 asp .net core 3.1 web 应用程序中调用 WCF 库时有选择地和适当地捕获和忽略这些证书错误的方法。我该怎么做?
解决方法
可以参考以下代码绕过证书验证:
BasicHttpsBinding binding = new BasicHttpsBinding();
binding.Security.Mode = BasicHttpsSecurityMode.Transport;
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
ChannelFactory<IService> factory = new ChannelFactory<IService>(binding,new EndpointAddress(uri));
factory.Credentials.ServiceCertificate.SslCertificateAuthentication = new System.ServiceModel.Security.X509ServiceCertificateAuthentication()
{
CertificateValidationMode = System.ServiceModel.Security.X509CertificateValidationMode.None,RevocationMode = System.Security.Cryptography.X509Certificates.X509RevocationMode.NoCheck
};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。