加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Sql Server 2016:为SQL Server连接启用TLS 1.2

发布时间:2020-12-15 00:49:32 所属栏目:Java 来源:网络整理
导读:我在 Windows 2012 R2上运行SQL Server 2016并且我应用了TLSv1.2支持的补丁并重新启动了VM,https://support.microsoft.com/en-us/help/3135244/tls-1-2-support-for-microsoft-sql-server我确实看到在SQL Server VM上使用IISCrypto工具启用了TLS 1.2 我们有J
我在 Windows 2012 R2上运行SQL Server 2016并且我应用了TLSv1.2支持的补丁并重新启动了VM,https://support.microsoft.com/en-us/help/3135244/tls-1-2-support-for-microsoft-sql-server我确实看到在SQL Server VM上使用IISCrypto工具启用了TLS 1.2

我们有Java 8 Web应用程序,我们强制Web应用程序只使用TLS1.2使用JVM参数-Djdk.tls.client.protocols =“TLSv1.2”(如果我删除此JVM参数应用程序连接到sql server罚款),但我们看到下面的错误虽然为SQL服务器启用了TLSv1.2

org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: "Server chose TLSv1,but that protocol version is not enabled or not supported by the client.". ClientConnectionId:7564b6a1-60c0-4a24-8baa-7bd21f9512cf)

我们还有一个.Net 2.0 Windows服务(在注册表中只启用了TLSv1.2),它也无法连接到SQL Server 2016

System.Data.OleDb.OleDbException: [DBNETLIB][ConnectionOpen (SECCreateCredentials()).]SSL Security error.
at System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr,OleDbConnection connection)
at System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options,Object poolGroupProviderInfo,DbConnectionPool pool,DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection,DbConnectionPoolGroup poolGroup)
at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection,DbConnectionFactory connectionFactory)
at System.Data.OleDb.OleDbConnection.Open()

但是,如果我在注册表中启用SSL3和TLS1.0,.Net 2.0 Windows服务可以很好地连接到SQL Server 2016.

我怀疑,问题是SQL Server没有使用TLSv1.2,虽然在SQL Server VM上启用了TLSv1.2,如果有更多的配置或补丁需要应用于SQL Server以支持TLSv1.2,有人可以帮助我吗?

解决方法

Microsoft Windows Server存储有关Windows Server支持的不同安全性增强通道协议的信息.此信息存储在以下注册表项中:

HKey_Local_MachineSystemCurrentControlSetControlSecurityProvidersSCHANNELProtocols

通常,此键包含以下子项:

PCT 1.0,SSL 2.0,SSL 3.0,TLS 1.0 …

每个密钥都包含有关密钥协议的信息.可以在服务器上启用这些协议中的任何一个.为此,您需要在协议的服务器子项中创建新的DWORD值.您将DWORD值设置为“1”.

重要说明:在修改注册表之前备份注册表.然后,您可以在出现问题时还原注册表.

要启用TLS 1.x协议,请执行以下步骤:

单击“开始”,单击“运行”,键入regedt32或键入regedit,然后单击“确定”.
在注册表编辑器中,找到以下注册表项:

HKey_Local_MachineSystemCurrentControlSetControlSecurityProviders SCHANNELProtocolsTLS 1.xServer

在“编辑”菜单上,单击“添加值”.
在“数据类型”列表中,单击“DWORD”.
在“值名称”框中,键入“已启用”,然后单击“确定”.

注意如果存在此值,请双击该值以编辑其当前值.

在二进制编辑器中键入22222111,将新键的值设置为“1”.
单击确定.重启电脑.

希望这可以帮助…

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读