HTTPS请求 Received fatal alert: handshake_failure异常---与众不同的原因

本文记录了一次遇到HTTPS请求handshake_failure异常的独特情况,详细介绍了排除问题的过程,包括检查HTTPS协议版本、服务器支持的协议、SSL算法等常见原因。最终发现并解决了一个不常见的问题,涉及特定的验证环节。
摘要由CSDN通过智能技术生成

今天在项目遇到了Received fatal alert: handshake_failure 的问题,直译就是握手失败了,说实话,我也是第一次碰到这种情况。在各大论坛,各种技术博客的海洋里,仍然没有解决我的问题。最后捡漏发现了这个原因,真的太出乎意料了。

首先和大家说一下网上的一些经验和处理办法,算是一个总结。

我们用curl 和 postman 发送请求,都可以握手成功,唯独用代码不能请求成功。handshake_failure的原因绝不是一种。

原因一: Https 的协议版本不一致。协议有 TLSv1.2,TLSv1.1,SSLv3

如何来确定这个问题?

1:如果你是在本机运行,可以这么做,写一个通讯客户端(只用来测试握手的)

代码是我临时引用别人的,我的在服务器上不好拿下来。

import java.io.DataInputStream;  
import java.io.IOException;  
import java.io.InputStream;  
import java.io.OutputStream;  
import java.net.ConnectException;  
import java.net.URL;  
import java.security.cert.CertificateException;  
import java.security.cert.X509Certificate;  
  
import javax.net.ssl.HostnameVerifier;  
import javax.net.ssl.HttpsURLConnection;  
import javax.net.ssl.SSLContext;  
import javax.net.ssl.SSLSession;  
import javax.net.ssl.TrustManager;  
import javax.net.ssl.X509TrustManager;    
  
public class HttpsTest {  
    private stat
根据提供的引用内容,"尝试连线已失败。Received fatal alert: handshake_failure" 是一个错误消息,通常在进行网络连接时出现。这个错误消息表示在进行握手过程时发生了致命错误。 握手是在建立安全的网络连接时进行的过程,它涉及到客户端和服务器之间的交互,以确保双方可以安全地通信。当握手过程中发生错误时,就会出现"Received fatal alert: handshake_failure" 错误消息。 这个错误可能有多种原因,包括但不限于以下几点: 1. 客户端和服务器之间的协议不匹配。例如,客户端使用的是TLSv1.2,而服务器只支持TLSv1.0。 2. 客户端和服务器之间的加密套件不匹配。例如,客户端只支持AES加密算法,而服务器只支持DES加密算法。 3. 客户端和服务器之间的证书验证失败。例如,服务器的证书已过期或不受信任。 4. 客户端和服务器之间的网络连接存在问题。例如,网络延迟或丢包导致握手失败。 为了解决这个问题,可以尝试以下几个步骤: 1. 确保客户端和服务器之间的协议和加密套件匹配。可以尝试升级客户端或服务器的软件版本,以支持更新的协议和加密套件。 2. 检查服务器的证书是否有效并受信任。可以尝试更新服务器的证书或将其添加到客户端的信任列表中。 3. 检查网络连接是否正常。可以尝试重新连接网络或使用其他网络进行测试。 请注意,具体的解决方法可能因具体情况而异。如果问题仍然存在,建议查看相关日志文件或联系网络管理员以获取更多帮助。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值