我们有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,有人可以帮助我吗?
解决方法
HKey_Local_Machine\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
通常,此键包含以下子项:
PCT 1.0,SSL 2.0,SSL 3.0,TLS 1.0 …
每个密钥都包含有关密钥协议的信息.可以在服务器上启用这些协议中的任何一个.为此,您需要在协议的服务器子项中创建新的DWORD值.您将DWORD值设置为“1”.
重要说明:在修改注册表之前备份注册表.然后,您可以在出现问题时还原注册表.
要启用TLS 1.x协议,请执行以下步骤:
单击“开始”,单击“运行”,键入regedt32或键入regedit,然后单击“确定”.
在注册表编辑器中,找到以下注册表项:
HKey_Local_Machine\System\CurrentControlSet\Control\SecurityProviders \SCHANNEL\Protocols\TLS 1.x\Server
在“编辑”菜单上,单击“添加值”.
在“数据类型”列表中,单击“DWORD”.
在“值名称”框中,键入“已启用”,然后单击“确定”.
注意如果存在此值,请双击该值以编辑其当前值.
在二进制编辑器中键入11111111,将新键的值设置为“1”.
单击确定.重启电脑.
希望这可以帮助…