handshake_failure 异常及解决
异常
I/O error on POST request for "https://lxxxxx/api/v1/updown/xxxxloadUrl": Received fatal alert: handshake_failure; nested exception is javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
1. 原因分析
1.1原因总结:
JDK8u161以后的版本,默认使用unlimited无限强度的策略(policy);支持的加密算法更多
以TLSv1.2 ,加密套件ECDHE-RSA-AES256-GCM-SHA384 建立socket链接,需要使用unlimited的策略;
JDK8u161以前的版本 使用limited有限强度策略(policy),支持的算法有限
无法以TLSv1.2 ,加密套件ECDHE-RSA-AES256-GCM-SHA384 建立socket链接,握手失败;
1.2 jdk1.8.0_361 security
image-20230406161627241.png
1.3 jdk1.8.0_66 security
image-20230406162012751.png
1.4 二者对比
image-20230406161947056.png
2.调整
// JDK升级到 JDK8u161以后的版本可以解决使用(亲测有效);或对于JDK8u161以前的版本可以以javase-jce补丁的形式也可以解决(未验证);
2.1 调整JDK(升级到JDK8u161以后的版本)
// 升级到JDK8u161以后的版本
FROM openjdk:8-jdk-alpine
#FROM primetoninc/jdk:1.8
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
2.2 升级补丁(若无法升级JDK,JDK8u161以前的版本打补丁)
// JDK8u161以前的版本,下载
https://www.oracle.com/java/technologies/javase-jce8-downloads.html