顯示具有 tls 標籤的文章。 顯示所有文章
顯示具有 tls 標籤的文章。 顯示所有文章

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:

2021-05-05

升級JDK 11.0.11後,無法正常使用TLS寄信

 ubuntu上面利用javax.mail寫的寄信程式,在系統自動升級jdk到 11.0.11 後,使用tls smtp寄信就失效了,經查是因為 jdk已禁用了 tls 1.0, tls 1.1,所以必須改強制使用 tls >= v1.2(很奇怪的點就是javax.mail握手時不會自動tls v1.2 or 1.3) ,當然你的mail server也要有支援 tls >= v1.2


            props.setProperty("mail.smtp.host", "your.smtp.server");

            props.setProperty("mail.smtp.auth", "true");

            props.setProperty("mail.smtp.port", "587");

            props.setProperty("mail.smtp.starttls.enable", "true");

            props.setProperty("mail.smtp.ssl.protocols", "TLSv1.2"); //強制tls v1.2

            Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() {

                @Override

                protected PasswordAuthentication getPasswordAuthentication() {

                    return new PasswordAuthentication("username", "password");

              }

            });