Mik*_*e_G 7 sql-server connectivity ssl
我有一个客户担心最新的 SSL 漏洞POODLE。他们有一个实用程序 ( IIS Crypto 1.4 ),可以在运行它的服务器上禁用 SSL 2.0-3.0。他们在我的服务运行的服务器和远程 SQL Server 上都禁用了 SSL。SQL 连接字符串非常标准:
Server=myServerIPAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;
Run Code Online (Sandbox Code Playgroud)
当我的服务启动时,它尝试执行 Linq to SQL 查询并收到错误:
已成功与服务器建立连接,但在登录前握手期间发生错误。(提供者:TCP 提供者,错误:0 - 远程主机强行关闭了现有连接。)
如果他们在 SQL Server 上重新启用 SSL,它就可以正常工作。我的程序是基于 .NET 3.5 构建的 Windows 服务。此错误的原因是什么,我可以在哪里进行调整以运行我的服务?
编辑:下面是我的程序在尝试加载时吐出的堆栈跟踪
System.Data.SqlClient.SqlException: A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host.)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.ConsumePreLoginHandshake(Boolean encrypt, Boolean trustServerCert, Boolean& marsCapable)
at System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, SqlConnection owningObject)
at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject)
at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart)
at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)
at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
at System.Data.SqlClient.SqlConnection.Open()
at System.Data.Linq.SqlClient.SqlConnectionManager.UseConnection(IConnectionUser user)
at System.Data.Linq.SqlClient.SqlProvider.get_IsSqlCe()
at System.Data.Linq.SqlClient.SqlProvider.InitializeProviderMode()
at System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query)
at System.Data.Linq.DataQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator()
at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
at System.Linq.Enumerable.ToArrayTSource(IEnumerable`1 source)
Run Code Online (Sandbox Code Playgroud)
小智 1
只是一个大胆的猜测,但我首先会查看 Sql Server 配置管理器,看看该实例的“强制加密”标志是否打开。仅仅因为他们“禁用了 SSL”,并不意味着他们已经告诉 SQL Server 非 SSL 连接是可以的。
否则请参阅上面有关 SQL Server 错误日志的注释。
归档时间: |
|
查看次数: |
16985 次 |
最近记录: |