解决SSL握手失败问题:SSLHandshakeException: Received fatal alert: handshake_failure

1.异常情况

异常情况如下:

JDK版本中安全机制导致,不同https安全协议不一致,TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。我方系统是jdk1.7默认使用TLSV1.0,对方系统是jdk1.8默认使用TLSV1.2,导致出现异常。

JDK与TLS版本情况如图所示:

2.解决方法

系统做http请求时,手动将TLS版本号改为1.2即可。

2.1http接口解决方法

java 复制代码
public class HttpsClient {

    private static Log logger = LogFactory.getLog(HttpClientUtil.class);
	
	private volatile static CloseableHttpClient httpsClient = null;

	private HttpsClient(){}
		
	public static CloseableHttpClient getInstance() throws Exception{
		if (httpsClient == null ){
            synchronized (HttpsClient.class){
                if (httpsClient == null ) {               	
                	httpsClient = createSSLHttpClient();
                }
            }
        }
        return httpsClient;
	}

    private static CloseableHttpClient createSSLHttpClient() {
        CloseableHttpClient client = null;

        // 设置ssl兼容协议版本
        SSLConnectionSocketFactory sslsf = null;
        try {
            SSLContext sslContext = new SSLContextBuilder()
                    .loadTrustMaterial(null, new TrustStrategy() {
                        @Override
                        public boolean isTrusted(X509Certificate[] chain,
                                                 String authType) throws CertificateException {
                            return true;
                        }
                    }).build();
            sslsf = new SSLConnectionSocketFactory(
                    sslContext,
                    new String[] { "TLSv1.2" },
                    null,
                    SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

            javax.net.ssl.SSLSocketFactory factory = sslContext.getSocketFactory();
            SSLSocket socket = (SSLSocket) factory.createSocket();
            String[] protocols = socket.getSupportedProtocols();
            logger.trace("支持的协议:" + Arrays.asList(protocols));

            client = HttpClients.custom()
                    .setSSLSocketFactory(sslsf)
                    .build();
        } catch (Exception e) {
            logger.error("创建SSLConnectionSocketFactory失败", e);
            e.printStackTrace();
        }

        // 创建httpclient
        if (client == null) {
            logger.error("创建支持SSL的HttpClient失败,创建普通的HttpClient");
            client = HttpClients.createDefault();
        }
        return client;
    }

}

2.2 webservice接口解决方法

java 复制代码
public String submitToOA(KmReviewParamterForm form) throws Exception {
    	ISysCodeService sysCodeService = (ISysCodeService)SpringBeanUtil.getBean("sysCodeService");
    	WebServiceConfig cfg = WebServiceConfig.getInstance();
    	cfg.setAddress(sysCodeService.getContentByCode("reviewUrl").getFdContent());
    	cfg.setUser(sysCodeService.getContentByCode("reviewFinanceUser").getFdContent());
    	cfg.setPassword(sysCodeService.getContentByCode("reviewFinancePassword").getFdContent());
    	IKmReviewWebserviceService service = (IKmReviewWebserviceService) callService(cfg.getAddress(), cfg.getServiceClass());

		//2025-07-18 设置TLSv1.2版本 START
		Client client = ClientProxy.getClient(service);
		HTTPConduit httpConduit = (HTTPConduit) client.getConduit();
		SSLSocketFactory sslSocketFactory = SSLSocketFactoryBuilder.create().setProtocol("TLSv1.2").build();
		TLSClientParameters tlsClientParameters = new TLSClientParameters();
		tlsClientParameters.setSSLSocketFactory(sslSocketFactory);
		httpConduit.setTlsClientParameters(tlsClientParameters);
		//2025-07-18 设置TLSv1.2版本 END

		return service.addReview(form);

    }
相关推荐
学编程就要猛1 天前
JavaEE初阶:网络编程
运维·服务器·网络
北京聚信万通科技有限公司1 天前
北京聚信万通科技有限公司获Odette CA官方授权,成为中国区“Odette ID及数字证书”官方注册审批管理机构
网络·科技·汽车·edi·电子数据交换·国产软件
2501_948114241 天前
Claude Sonnet 4.6 深度评测:性能逼近 Opus、成本打骨折,附接入方案与选型指南
大数据·网络·人工智能·安全·架构
TOWE technology1 天前
智能PDU——电力分配与数据信息的价值
网络·科技·pdu·智能pdu
humors2211 天前
一些安全类网站(不定期更新)
linux·网络·windows·安全·黑客·白帽
ou.cs1 天前
c# SemaphoreSlim保姆级教程
开发语言·网络·c#
LONGZETECH1 天前
一线汽车教师实测:迈腾380TSI电气故障仿真软件,破解教学与大赛双重痛点
网络·科技·汽车·汽车仿真教学软件·汽车教学软件·新能源汽车仿真教学软件
Pixlout1 天前
《7元接口体系》v1.0
网络·算法·硬件工程
loockluo1 天前
NFS网络存储部署与性能优化实战:家用服务器的学习与实践
服务器·网络·性能优化
灰子学技术1 天前
Envoy 中 TCP 网络连接实现分析
运维·服务器·网络·网络协议·tcp/ip