SQL Server Jdbc驱动程序无法使用TLS1.2连接到数据库

问题描述

我想从Linux实例使用TLS1.2连接到我的数据库实例,但无法这样做。 我正在使用以下配置

  1. Java JDK:Amazon corretto openjdk版本:“ 1.8.0_252”
  2. JDBC驱动程序:Microsoft sql服务器mssql-jdbc:8.2.2.jre8
  3. 连接字符串:jdbc:sqlserver:// [我的数据库URL]:1433; SSLProtocol = TLSv1.2
  4. 操作系统:Amazon Linux
  5. 数据库:Windows计算机上运行的Microsoft sql Server 16
  6. 我已关闭数据库上的TLS1和TLS1.0,以强制我的Java应用程序仅使用TLS1.2

当我的应用程序尝试连接到数据库时,出现以下错误

com.microsoft.sqlserver.jdbc.sqlServerException:驱动程序无法通过使用安全套接字层(SSL)加密建立到sql Server的安全连接错误:没有适当的协议(协议已禁用或密码套件不合适)。

解决方法

这可能不是最好的解决方案,但为了让我的应用程序正常工作,我使用了,

java.security.Security.setProperty("jdk.tls.disabledAlgorithms","SSLv3,RC4,DES,MD5withRSA,DH keySize

我从 Java 8.0.202 升级到 8.0.291 并遇到了您提到的禁用 TLS 1.0 和 1.1 的问题。我在上面设置的属性是 Java 8.0.202 的设置

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...