如何解决禁用tls1.0时,服务未对调用方进行身份验证
使用C#我有两个应用
- 在.net Framework 4-客户端 上
- 以及.net framework 4.5-服务器上的另一个
并使用WCF相互交流。
使用IISCrypto我关闭了tls1.0,然后出现此错误
“呼叫者未通过服务验证”
我知道客户端将与服务器协商并采用服务器提供的最高协议,因此已将服务器的协议强制更改为
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
但是框架4的客户端会发生什么?我也尝试过更改客户端上的协议,但没有任何变化。
解决方法
经过一番搜索,我找到了解决方法。
检查
- TLS 1.2 not negotiated in .NET 4.7 without explicit ServicePointManager.SecurityProtocol call。
- Do not disable ServicePointManagerSecurityProtocols
俗话说
“将Switch.System.ServiceModel.DisableUsingServicePointManagerSecurityProtocols设置为true会将Windows Communication Framework(WCF)传输层安全性(TLS)连接限制为使用TLS 1.0”
'如果您的应用程序以.NET Framework v4.6.2或更早版本为目标并在.NET Framework v4.7或更高版本上运行,请将开关的值设置为false。'
刚刚添加
<AppContextSwitchOverrides value="Switch.System.ServiceModel.DisableUsingServicePointManagerSecurityProtocols=false" />
到app.config并像以前一样工作!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。