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、問題解決
如上述問題解決不掉,可以看一下這個連線
參考連線