javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure 抗戰歷程
小蛙的工作常常要維護很多有年代的系統,這些系統有些已經找不到源頭或甚至沒有文件留下來了,前一段時間一直碰到抓 https 的時候噴錯的狀況,這篇把這段很痛苦的經歷記錄下來,希望能幫助遇到相同問題的朋友。
早期很多網站都是 http 的,到現在各家大廠的推波助瀾下,你沒有 https 就被當作是不合群的、有危險的、跟不上潮流的網站(?!),總之當有人上你的網站,但你的網站沒有 https 的時候,各大瀏覽器就會很不客氣的提示:您與這個網站的連線不安全,有些人看到這些提示怕都怕死了根本不敢連~
小蛙這次要處理的系統是早期抓網站圖片的工具,由於是早期開發的,當時幾乎都是 http 為主的網站,這支程式也完全沒有考慮 https 的問題 (當時合作的單位完全沒有 https),這一兩年來這個問題慢慢顯露出來,有些要抓的網站也在我們自己單位,因此可以透過一些特殊的方法來處理,但是今天遇到 … 要抓外面單位的網站,這 … 折騰了小蛙一整天啊。
小蛙給一個最簡單卻也是最困難的建議:更新到 JRE 1.8
小蛙試了超多網路上找到的方法,如果你已經在網路上找很久了,那小蛙用的方法你一定都試過,應該也都還是失敗 … (跟小蛙一樣),最後決定直接安裝 JRE 1.8。來看一下這討人厭的錯誤訊息
Exception in thread "main" javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) at sun.security.ssl.Alerts.getSSLException(Alerts.java:154) at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1959) at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1077) at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323) at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563) at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:153) at TESTSSL.downloadRemoteImage(TESTSSL.java:37) at TESTSSL.downloadRemoteImage(TESTSSL.java:53) at TESTSSL.main(TESTSSL.java:74)
直接看小蛙 Eclipse 的設定,Compiler 的地方使用 1.7
Java Build Path 也是使用 jdk 1.7.0_45
Run Configurations 的 JRE 設定也是選擇 jdk 1.7.0_45
執行下去就是這個錯誤 …
如果手動安裝了 JRE 8,然後把 Run Configurations 的 JRE 設定成 JRE 8
就打完收工了 … 真的是太敢動 (嗚嗚嗚),原本小蛙一直想要在 1.7 的環境下想辦法處理,試了一大堆方法沒有一個可以動的,因為改來改去改到亂七八糟,就連把環境升上 1.8 也都還是不行 … 後來發現 Eclipse 執行的時候可以選擇運行環境,就決定專案的 Compiler 跟 Build Path 維持 1.7,Run Configurations 改成 JRE 1.8 … 不想繼續糾結下去 Orz … 但有一些 JSP 環境下沒辦法這樣處理的還是很頭大啊 ><
过来支持一下值得收藏分享
感謝您~!