繁体   English   中英

TLS 1. 2 客户端和服务器无法通信,因为它们没有通用算法

[英]TLS 1. 2 The client and server cannot communicate, because they do not possess a common algorithm

我有 TLS 1.2 的问题。 如果我在客户端机器上启用 tls1.0,它会工作,但不推荐。

异常是 - 客户端和服务器无法通信,因为它们没有通用算法 System.ComponentModel.Win32Exception (0x80004005):客户端和服务器无法通信,因为它们没有通用算法。

我的应用程序的目标框架是 .NET 4.6.2。

有两种可能的情况,就我而言,我使用了第二点。

  1. 如果您在生产环境中遇到此问题,并且可以轻松地将新代码部署到生产环境中,那么您可以使用以下解决方案。

    您可以在进行 api 调用之前添加以下代码行,

    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; // .NET 4.5

  2. 如果您无法部署新代码,并且希望使用生产中存在的相同代码来解决,则可以通过更改配置文件中的某些配置设置来解决此问题。 您可以在配置文件中添加任何一个。

<runtime>
    <AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchUseStrongCrypto=false"/>
  </runtime>

或者

<runtime>
  <AppContextSwitchOverrides value="Switch.System.Net.DontEnableSystemDefaultTlsVersions=false"
</runtime>

这些是我解决问题的故障排除步骤。

  1. 安装 IISCrypto.exe,并在我的本地服务器和客户端上关闭 TSL 1.0/1.1,只启用 TSL 1.2。
  2. 在我的 .NET 应用程序 web.conf 中
 <system.web>
    <compilation debug="true" targetFramework="4.8" /> 
    <httpRuntime targetFramework="4.8" />
  1. 工具 > NuGet 包管理器 > 管理解决方案的 NuGet 包。

检查已安装的 MySql.Data 和 MySql.Web 版本(为 6.9.9.0)

安装 MySql.Data 和 MySql.Web 并将其更新到版本 8.0.23

此时,我的本地 .NETweb 服务器可以与本地 MySql 服务器通信。 但是在部署到生产服务器(仅启用了 TLS 1.2)之后,会出现不同的错误消息。

 Fail to load MySql.Data assembly

 WRN: Assembly binding logging is turned OFF.
  1. 检查生产服务器下的MySql.Web.dll & MySql.Data.dll ...\\myapp\\bin
    发现MySql.Data.dll还是6.9版本。

    将 MySql.Data.dll v.8.0.23 复制并粘贴到生产服务器(从我的本地 bin 文件夹)。 它修复了生产服务器上的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM