jdk8呼叫第三方介面出現握手失敗(Received fatal alert: handshake_failure)

不起眼的程序员發表於2024-09-06

1、記一次錯誤

1、問題出現的場景

​ 1、 透過java程式碼呼叫第三方介面,出現這個ssl認證,握手失敗。我的jdk版本是1.8_131版本出現的

錯誤提示:    javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure

​ 2、我透過curl命令在伺服器上呼叫是可以的,能完整的返回資料。以及瀏覽器訪問都可以能拿到返回的資料。

2、常見的問題
1、使用AES加解密
  • 異常1:
java.security.InvalidKeyException: Illegal key size or default parameters
  • 異常2:
java.lang.SecurityException: JCE cannot authenticate the provider BC
2、安全性機制導致的訪問https會報錯
Received fatal alert: handshake_failure; nested exception is javax.net.ssl.SSLHandshakeException:
Received fatal alert: handshake_failure,accessUrl

這是因為某些國家的進口管制限制,JDK預設的加解密有一定的限制。

3、解決思路:

比如預設不允許 256 位金鑰的 AES 加解密,解決方法就下載官方JCE無限制強度加密策略檔案,覆蓋即可。

​ 官網提供的下載版本:
JDK6的下載地址
JDK7的下載地址
JDK8的下載地址

4、覆蓋JCE

1、在上數網站下載對應的版本jce檔案

2、進入JDK安裝目錄下的(改成自己的安裝目錄)

E:\Program Files\Java\jdk1.8.0_131\jre\lib\security

5、問題解決

如上述問題解決不掉,可以看一下這個連線

參考連線

相關文章