Linux
升級到 TLSv1.2 後收到致命警報:handshake_failure
我正在使用 SOAP 連接到第三方的 Linux Centos 伺服器上開發 Java 1.7 應用程序。一切正常,直到第三方將他們的 ssl 從 TLSv1.1 升級到 TLSv1.2。現在,當我們嘗試呼叫他們的服務時,我們得到:
javax.net.ssl.SSLHandshakeException:呼叫https://webservices.abc.company.com的 SSLHandshakeException :收到致命警報:handshake_failure
我們還有另一個 Linux Centos 伺服器,它使用完全相同的程式碼庫,但它可以毫無錯誤地呼叫 SOAP 服務。所以我試圖比較以發現任何差異。我能找到的不同之處在於,一些目錄結構不同,但我認為適用的文件是相同的。例如,
/etc/httpd/conf.d/ssl.conf
都在同一個地方,並且都具有相同的密碼:
SSLEngine on SSLProtocol all -SSLv2 -SSLv3 #SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS SSLHonorCipherOrder on
它們都具有由第三方公司頒發的相同證書。
/etc/httpd/ssl/abc.crt
我已經停止了防火牆。
sudo systemctl stop firewalld
問題
你知道我還能去哪裡看,我可以嘗試什麼嗎?
您必須使用支持 TLS 1.2 的 Java 版本(我不確定 1.7.0_09 是否屬於那條船,但我知道 1.7 的更高版本)並且它必須是啟用的協議之一。這個問題有詳細資訊:https ://stackoverflow.com/questions/39157422/how-to-enable-tls-1-2-in-java-7
Java 1.7 自 2015 年以來一直 EOL,因此升級可能最有利於避免未來的問題。