記錄jdk21連接SQLServer因為TLS協(xié)議報錯問題
報錯信息
com.alibaba.druid.pool.DruidDataSource - create connection SQLException, url: jdbc:sqlserver://192.168.60.93;databaseName=THIS4, errorCode 0, state 08S01 com.microsoft.sqlserver.jdbc.SQLServerException: “Encrypt”屬性設(shè)置為“true”且 “trustServerCertificate”屬性設(shè)置為“false”,但驅(qū)動程序無法使用安全套接字層 (SSL) 加密與 SQL Server 建立安全連接:錯誤:The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12]。
解決方案
從報錯信息上來看,是因為客戶端使用的協(xié)議版本是TLS1.3和TLS1.2,與服務(wù)器支持的版本TLS1.0不匹配導致握手失敗。
百度上查閱得知從JDK8開始,默認使用的TLS版本是TLS 1.2,JDK17默認使用的TLS版本是TLS 1.3,但是JDK17已經(jīng)在默認的安全配置中,把TLS1.0和TLS1.1禁用掉了。
以下是啟用TLS1.0的操作方法,操作完需要重啟服務(wù):
#jdk11+ 配置文件位置 #例:C:\Program Files\Java\jdk-21\conf\security\java.security $JAVA_HOME/conf/security/java.security # jdk8及以下 配置文件位置 #例:C:\Program Files\Java\jre1.8.0_421\lib\security\java.security $JRE_HOME/lib/security/java.security #找到里面的一行配置: jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \ DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL #說明:JDK中的jdk.tls.disabledAlgorithms參數(shù)用于禁用不安全或不需要的TLS密碼算法, #以提高系統(tǒng)的安全性。通過配置這個參數(shù),可以指定JDK不支持的密碼算法或協(xié)議,以降低它們的優(yōu)先級, #減少被攻擊的風險。 #我們把TLSv1,TLSv1.1這兩個刪除掉,變成如下: jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, \ DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Jmeter內(nèi)置變量vars和props的使用詳解
JMeter是一個功能強大的負載測試工具,它提供了許多有用的內(nèi)置變量來支持測試過程,其中最常用的變量是 vars 和 props,本文通過代碼示例詳細給大家介紹了Jmeter內(nèi)置變量vars和props的使用,需要的朋友可以參考下2024-08-08java實現(xiàn)一個簡單的網(wǎng)絡(luò)爬蟲代碼示例
這篇文章主要介紹了java實現(xiàn)一個簡單的網(wǎng)絡(luò)爬蟲代碼示例,還是挺不錯的,這里分享給大家,需要的朋友可以參考下。2017-11-11SpringBoot 如何使用Dataway配置數(shù)據(jù)查詢接口
這篇文章主要介紹了SpringBoot 如何使用Dataway配置數(shù)據(jù)查詢接口,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11