gpt4 book ai didi

java - SQL Server 2016 : Enable TLS 1. 2 用于 SQL Server 连接

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:26:54 29 4
gpt4 key购买 nike

我在 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 网络应用程序,我们强制网络应用程序使用 JVM 参数 -Djdk.tls.client.protocols="TLSv1.2" 仅使用 TLS1.2(如果我删除此 JVM 参数应用程序连接到 sql server 正常),但我们看到以下错误,尽管为 SQL server 启用了 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 支持的不同安全增强 channel 协议(protocol)的信息。此信息存储在以下注册表项中:

HKey_Local_Machine\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols

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

PCT 1.0, SSL 2.0, SSL 3.0, TLS 1.0 ...

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

重要提示:在修改注册表之前备份注册表。然后,如果出现问题,您可以恢复注册表。

要启用 TLS 1.x 协议(protocol),请按照以下步骤操作:

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

HKey_Local_Machine\System\CurrentControlSet\Control\SecurityProviders \SCHANNEL\Protocols\TLS 1.x\Server

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

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

在二进制编辑器中键入 11111111,将新键的值设置为“1”。单击确定。重新启动计算机。

希望这有助于...

关于java - SQL Server 2016 : Enable TLS 1. 2 用于 SQL Server 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48834528/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com