jan*_*nan 5 c# ssl tls1.1 asp.net-core-3.1 asp.net-core-6.0
我有一个版本为1.1MySQL的数据库。我使用以下代码片段在我的应用程序中建立连接:5.7.19TLS.NET Core 3.1
string connStr = "server=Myserver;user id=myuser;password=my password;database=db;SslMode=Required;SslCa=D:\\\\server-ca.pem;SslCert=D:\\\\client-cert.pem;SslKey=D:\\\\client-key.pem;";\n\ntry\n{\n using (MySqlConnection connection = new MySqlConnection(connStr))\n {\n connection.Open();\n connection.Close();\n }\n}\ncatch (Exception ex)\n{\n // handle the exception\n}\n\n\nRun Code Online (Sandbox Code Playgroud)\n此代码在 中运行良好.NET Core 3.1,但升级到 后.NET 6,它会抛出以下异常:
\n\nMySqlConnector.MySqlException(0x80004005): SSL 身份验证错误\\ r\\ n-- - > System.Security.Authentication.AuthenticationException: 身份验证失败,请参阅内部异常。\\r\\ n-- - > System.ComponentModel.Win32Exception (0x8009030E):System.Net.Security.SslStreamPal.AcquireCredentialsHandle(CredentialUse credUsage, SCH_CREDENTIALS *) 的 System.Net.SSPIWrapper.AcquireCredentialsHandle(ISSPIInterface secModule, String package, CredentialUseintent, SCH_CREDENTIALS * scc) 的安全包中没有可用的凭据。 secureCredential)在System.Net.Security.SslStreamPal.AcquireCredentialsHandleSchCredentials(SslStreamCertificateContext证书Context,SslProtocols协议,EncryptionPolicy策略,Boolean isServer)在System.Net.Security.SslStreamPal.AcquireCredentialsHandle(SslStreamCertificateContext证书Context,SslProtocols协议,EncryptionPolicy策略,布尔值 isServer) -- - 内部异常堆栈跟踪结束-- - 在 System.Net.Security.SslStreamPal.AcquireCredentialsHandle(SslStreamCertificateContextcertificateContext、SslProtocols 协议、EncryptionPolicy 策略、Boolean isServer) 在 System.Net.Security.SecureChannel.AcquireClientCredentials(Byte[] &thumbPrint)在 System.Net.Security.SecureChannel.GenerateToken(ReadOnlySpan
\n1 inputBuffer, Byte[]& output) \xc2\xa0at System.Net.Security.SecureChannel.NextMessage(ReadOnlySpan\n1 incomingBuffer) 在 System.Net.Security.SslStream.ProcessBlob(Int32 frameSize) 在 System.Net.Security.SslStream.ReceiveBlobAsync[TIOAdapter](TIOAdapter 适配器) 在 System.Net.Security.SslStream.ForceAuthenticationAsync[TIOAdapter](TIOAdapter)适配器,布尔receiveFirst,字节[] reAuthenticationData,布尔isApm)在System.Net.Security.SslStream.AuthenticateAsClient(SslClientAuthenticationOptions sslClientAuthenticationOptions)在MySqlConnector.Core.ServerSession.InitSslAsync(ProtocolCapativity serverCapativity,ConnectionSettings cs,MySqlConnection连接,SslProtocols sslProtocols,IOBehavior io行为/_/src/MySqlConnector/Core/ServerSession.cs 中的 CancellationToken CancellationToken): 第 1539 行位于 /_/_中的 MySqlConnector.Core.ServerSession.InitSslAsync(ProtocolCapabilities serverCapabilities, ConnectionSettings cs, MySqlConnection 连接, SslProtocols sslProtocols, IOBehavior ioBehavior, CancellationToken CancellationToken) /src/MySqlConnector/Core/ServerSession.cs:第 1569 行位于 /_/src/MySqlConnector 中的 MySqlConnector.Core.ServerSession.ConnectAsync(ConnectionSettings cs, MySqlConnection 连接, Int32 startTickCount, ILoadBalancer loadBalancer, Activity 活动, IOBehavior ioBehavior, CancellationToken CancellationToken) /Core/ServerSession.cs:/_/src/MySqlConnector/Core/ConnectionPool.cs中的MySqlConnector.Core.ConnectionPool.ConnectSessionAsync(MySqlConnection connection, String logMessage, Int32 startTickCount, Activity Activity, IOBehavior ioBehavior, CancellationToken CancellationToken)第539行: /_/src/MySqlConnector/Core/ConnectionPool.cs 中的 MySqlConnector.Core.ConnectionPool.ConnectSessionAsync(MySqlConnection connection, String logMessage, Int32 startTickCount, Activity Activity, IOBehavior ioBehavior, CancellationToken CancellationToken) 第 403 行:MySqlConnector.Core 中的第 408 行。 / _ / src / MySqlConnector / Core / ConnectionPool.cs中的ConnectionPool.GetSessionAsync(MySqlConnection连接,Int32 startTickCount,Activity活动,IOBehavior ioBehavior,CancellationTokencancellationToken):第98行位于MySqlConnector.Core.ConnectionPool.GetSessionAsync(MySqlConnection连接,Int32 startTickCount, /_/src/MySqlConnector/Core/ConnectionPool.cs中的Activity活动,IOBehavior ioBehavior,CancellationToken CancellationToken):第128行处MySqlConnector.MySqlConnection.CreateSessionAsync(ConnectionPool pool, Int32 startTickCount, Activity活动,Nullable\1 ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlConnection.cs:line 929 \xc2\xa0at MySqlConnector.MySqlConnection.OpenAsync(Nullablen1 ioBehavior,CancellationToken CancellationToken)中/ _ / src / MySqlConnector / MySqlConnection.cs:位于D中的WebApplication1.Program.Main(String [] args)中的MySqlConnector.MySqlConnection.Open()的第423行:第382行: \\WebApplication1\\WebApplication1\\Program.cs:第 24 行
有谁知道 .NET 6 中是否有任何重大更改可能导致此问题?如果没有,任何有关如何处理此错误的建议将不胜感激。
\n编辑: \n这里提到的数据库版本正在由一位最终用户使用,并且他们不愿意升级。因此,我正在寻找具体文档以确认我的用户不正式支持此版本。
\n先感谢您!
\nTLS v1.1 现在基本上已弃用并且不安全。您拥有的 MySQL 版本 (5.7) 仅在某些情况下支持 TLS v1.2。请参阅文档,但基本上您需要自己构建 MySQL,或使用 MySQL Commercial。您可能还需要一些其他配置选项。
还有一些其他选项:
openssl.conf文件。Encrypt=False。我强烈建议您不要通过公共互联网执行此操作。| 归档时间: |
|
| 查看次数: |
1306 次 |
| 最近记录: |