換完之後,
發現有個系統呼叫某個外部 HTTPS web services
突然 handshake failure…
心頭一驚…
然道 Orac$e JDK 偷藏一手?
經過一段時間 troubleshooting, 才發現…
那個外部系統只支援 TLS 1.0
而 JDK 8 到了 8u171 就 disable 了 3DES Cipher Suites
進而影響了 TLS 1.0 的連線
https://bugs.openjdk.java.net/browse/JDK-8213846
這次升級是從 Orac$e JDK 8u144 升到 OpenJDK 8u191 所以撞到了這個問題…
解決方法是, 參考 8u144 修改 /jre/lib/security/java.security 檔案內的 jdk.tls.disabledAlgorithms 的 value
8u191 的 jdk.tls.disabledAlgorithms 的 value 原本是:
jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, DH keySize < 1024, \ EC keySize < 224, 3DES_EDE_CBC修改成:
jdk.tls.disabledAlgorithms=SSLv3, RC4, MD5withRSA, DH keySize < 768, \ EC keySize < 224改完測試後總算沒問題