2021-08-24

升級JDK 1.8至最新版本後,MySQL Connector/J (TOMCAT JDBC)無法正常連線MySQL

升級JDK後,發現MYSQL JDBC無法連到資料庫,查了一下log,發現以下錯誤訊息:

javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)

看來又是TLS無法自動降級使用的問題,先到mysql下指令看一下目前使用的tls版本:

mysql> SHOW GLOBAL VARIABLES LIKE 'tls_version';
+---------------+-----------------------+
| Variable_name | Value                 |
+---------------+-----------------------+
| tls_version   | TLSv1,TLSv1.1      |
+---------------+-----------------------+

1.首先嘗試修改JDBC連線字串,加入
jdbc:mysql://<host>:<port>/<dbname>?enabledTLSProtocols=TLSv1,TLSv1.1(...後略)

然後在tomcat.service的Java啟動選項加入:
‑Djdk.tls.client.protocols="TLSv1,TLSv1.1,TLSv1.2" (但不清楚是不是會影響到tomcat網站的tls 1.3連線)

結果無效。
  
2.直接去jre修改/jre/lib/security/java.security,把以下統統mark起來
#jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \
#    DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \
#    include jdk.disabled.namedCurves

好了,JDBC連線字串跟tomcat.service復原回原來也沒問題。
  
由於試了太多次,還被mysql server block了,用以下指令可以解除:
mysqladmin -h 192.168.1.1 -u root -p flush-hosts

ref:

沒有留言:

張貼留言