【问题标题】:Issue with disabling protocols in java.security file在 java.security 文件中禁用协议的问题
【发布时间】:2023-02-03 22:15:51
【问题描述】:

我在码头服务器上部署了 springboot 应用程序并在 java 8 上运行。我想强制我的应用程序仅使用 TLSv1.3。为此,我在 jre 的 java.security 文件中禁用了除具有以下属性的 TLSv1.3 之外的所有协议:

jdk.tls.disabledAlgorithms=SSLv3, RC4, MD5withRSA, DH keySize < 1024, 3DES_EDE_CBC, DESede, \
    EC keySize < 224, DES40_CBC, RC4_40, TLSv1, TLSv1.1, TLSv1.2 

当我尝试启动码头时,它给了我以下错误:

Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: "No appropriate protocol, may be no appropriate cipher suite specified or protocols are deactivated". ClientConnectionId:de77b523-984a-4700-a19b-ccfd0407dfb4
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:1748)
    at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1704)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1401)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:1068)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:904)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:451)
    at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1014)
    at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138)
    at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:364)
    at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206)
    at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:476)
    at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561)

我没有使用与数据库的安全连接。以下是数据库的 application.properties 文件条目:

spring.datasource.url=jdbc:sqlserver://172.20.186.175:1433;Databasename=DB_Jan_2023_new;SendStringParametersAsUnicode=false
spring.datasource.username=sa
spring.datasource.password={ENC}ACED0005740003414553757200025B42ACF317F8060854E0020000787000000008E3425FF8F9E058D0737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000008007571007E000100000010B2E212D690ECC67BC4663C4DFEE3542C74000456322E30
spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.jpa.hibernate.dialect=org.hibernate.dialect.SQLServer2012Dialect
  • Q1。尽管我没有使用安全连接,但我不确定为什么会出现此错误。
  • Q2。另外,这是将应用程序移动到 TLSv1.3 的正确方法还是需要更多步骤?
  • Q3。如何检查我的应用程序是否迁移到 TLSv1.3?

【问题讨论】:

  • 您使用的是什么版本的 SQL Server?据我所知,目前只有 Windows 上的 SQL Server 2022 支持 TLS 1.3。

标签: java sql-server spring-boot jetty-9 tls1.3


【解决方案1】:

根据the documentation,TLS 1.3 需要 SQL Server TDS 协议版本 8。 TDS 8 是随 SQL Server 2022 引入的,在其他版本中不可用。此外,截至撰写本文时,只有最新的 ODBC 和 OLEDB cleint 驱动程序添加了对 TDS 8 的支持。 TLS 1.3 尚不适用于 Microsoft JDBC 驱动程序。

【讨论】:

    猜你喜欢
    • 2020-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    相关资源
    最近更新 更多