已解决javax.net.ssl.SSLHandshakeException: SSL握手异常的解决方法,亲测有效,嘿嘿嘿!!!

javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException 使用的是okhttp,https请求报异常: Caused by: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. at org.conscrypt.ConscryptFileDescriptorSocket.startHandshake(ConscryptFileDescriptorS 阅读详情
AI摘要

本文分析了SSLHandshakeException的常见原因,包括证书问题、协议不一致、加密算法不支持等,并提供了更新Java版本、调整SSL配置、检查服务器证书、排查网络中间设备和查看日志的解决方法和代码示例。


javax.net.ssl.SSLHandshakeException: SSL握手异常 通常表示在尝试建立安全套接字连接(SSL/TLS 握手)时出现了问题。这个问题可能由多种原因引起,包括但不限于证书问题、协议不匹配、加密算法不支持等。以下是对这个异常的分析、报错原因、解决思路、解决方法以及代码示例。

问题分析

SSL握手是建立安全通信的过程,它涉及到客户端和服务器之间的多个步骤,包括证书交换、加密算法协商等。如果在这个过程中任何一个步骤出现问题,都可能导致SSL握手失败,并抛出SSLHandshakeException。

报错原因

  1. 证书问题:服务器证书无效、过期、未被信任或与客户端期望的主机名不匹配。
  2. 协议不匹配:客户端和服务器支持的SSL/TLS协议版本不一致。
  3. 加密算法不支持:客户端或服务器不支持协商过程中的某个加密算法。
  4. 中间人攻击:存在网络中间设备(如代理或防火墙)干扰了SSL握手过程。
  5. 其他配置问题:如客户端或服务器的SSL配置错误。

解决思路

  1. 检查证书:确保服务器证书有效、未过期,并且被客户端信任。同时,检查证书上的主机名是否与连接的主机名一致。
  2. 更新Java版本:有时,更新Java版本可以解决SSL/TLS协议版本不匹配的问题。
  3. 调整SSL配置:根据异常信息,可能需要调整客户端或服务器的SSL配置,如启用特定的协议版本或加密算法。
  4. 检查网络中间设备:如果怀疑有网络中间设备干扰SSL握手,可以尝试绕过这些设备或检查其配置。
  5. 查看日志:查看详细的SSL握手日志,可以获取更多关于失败原因的信息。

解决方法及代码示例

1. 更新Java版本

如果可能的话,将Java更新到最新版本,以支持最新的SSL/TLS协议和加密算法。

2. 禁用不安全的协议和算法

下滑查看解决方法

在Java中,可以通过调整java.security配置文件或在代码中设置SSLSocketFactory来禁用不安全的协议和算法。

例如,在代码中禁用SSLv3和TLSv1:

try {
    // 创建SSLContext实例
    SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
    
    // 初始化SSLContext
    sslContext.init(null, new TrustManager[]{new X509TrustManager() {
        // 实现TrustManager接口的方法(这里为了示例简化,直接信任所有证书)
        @Override
        public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {}
        
        @Override
        public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {}
        
        @Override
        public X509Certificate[] getAcceptedIssuers() {
            return new X509Certificate[0];
        }
    }}, new SecureRandom());
    
    // 创建SSLSocketFactory实例
    SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
    
    // 使用SSLSocketFactory创建SSLSocket(这里假设你有一个Socket地址和端口)
    SSLSocket sslSocket = (SSLSocket) sslSocketFactory.createSocket("example.com", 443);
    
    // ... 使用SSLSocket进行通信 ...
} catch (NoSuchAlgorithmException | KeyManagementException | IOException e) {
    e.printStackTrace();
}

注意:上面的代码示例中,我们直接信任了所有证书,这仅用于演示目的。在实际应用中,你应该使用合适的证书验证机制。

3. 检查和更新服务器证书

确保服务器证书有效、未过期,并且由受信任的证书颁发机构颁发。如果需要,更新服务器证书。

4. 检查网络中间设备

如果可能的话,检查网络中的代理、防火墙或其他中间设备是否可能干扰SSL握手,并相应地调整它们的配置。

5. 查看日志

查看详细的SSL握手日志,可以获取更多关于失败原因的信息。这通常需要在服务器和客户端都开启SSL日志记录功能。

javax.net.ssl.SSLHandshakeException: 解决方式 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 阅读详情

相关推荐

javax.net.ssl.SSLHandshakeException 证书报错的两种情况

安卓时间问题导致证书验证失败

ReminderFish 1万+

网络请求发生javax.net.ssl.SSLHandshakeException异常的情况

在使用volley和okhttp的时候,访问https的网站,经常会碰到一个异常就是javax.net.ssl.SSLHandshakeException,大致就是证书相关的异常。发生了好几次。先是怀疑是不是访问的网站是自签名网站,即没有在CA进行认证。一般这种情况下会报的异常是这样的:javax.net.ssl.SSLHandshakeException: java.security.c...

网鱼的栈 8万+

【Java报错已解决】javax.net.ssl.SSLHandshakeException: SSL

💝💝💝很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝✨✨ 欢迎订阅本专栏 ✨✨。

2401_86544677的博客 1万+

解决远程调用三方接口:javax.net.ssl.SSLHandshakeException报错

最近在对接腾讯会议API接口,在鉴权完成后开始调用对方的接口,在此过程中出现调用报错:javax.net.ssl.SSLHandshakeException。

qq_38031730的博客 1万+

阿里数据库连接池Druid 连接MySQL失败:javax.net.ssl.SSLHandshakeException: No appropriate protocol

昨天电脑蓝屏开不了机,一查是SSD坏了,还好项目这些在机械硬盘没有丢失。今天换了台新电脑,将项目复制过来,运行却出错了,Druid 连接不上MySQL,报了以下异常: com.alibaba.druid.pool.DruidDataSource : create connection SQLException, url: jdbc:mysql://118.178.112:3306/test?useUnicode=true&characterEncoding=utf-8&serverTi

Wingkin的博客 1万+

异常: javax.net.ssl.SSLHandshakeException: PKIX path building failed: SunCertPathBuilderException

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Java小皮孩 1万+

已解决javax.net.ssl.SSLHandshakeException: SSL握手异常的正确解决方法,亲测有效!!!

已解决javax.net.ssl.SSLHandshakeException: SSL握手异常的正确解决方法,亲测有效!!!

小明的Java问道之路 3万+

OkHttp报错javax.net.ssl.SSLHandshakeException: Handshake failed

背景今天学习了一下OkHttp,在使用OkHttp调用https接口的时候,报了SSLHandshakeException的异常,看了网上的资料,主要是服务器端使用了未被信任的证书,然后我就在寻找一种简单快速的解决方案。鸿洋老师在博客里详细阐述了OkHttp访问https的问题,在这里我就不做过多阐述了。现在给大家贴出我的解决方案

平凡之路 3万+

javax.net.ssl.SSLHandshakeException: Chain validation failed 异常解决

javax.net.ssl.SSLHandshakeException: Chain validation failed 异常解决 描述 在项目中使用RxJava,OkHttp和Retrofit封装的网络请求,再测试时一切正常,但修改为https的线上正式服务器后就报了异常: javax.net.ssl.SSLHandshakeException: Chain validation failed...

白泽的博客 2万+

javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative

javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative 问题挺奇怪的,以前访问都是好好的,今天访问突然就不行了,出现了:出现SSL证书认证失败 ,安裝接口对应的网站证书并不好使,决定在代码层跳出SSL验证 异常显示如下: javax.net.ssl.SSLHandshakeException: java.security.cert.Certificate.

baiyongliang 5072

2024“华为杯”中国研究生数学建模竞赛(A题)深度剖析_数学建模完整过程+详细思路+代码全解析

目标是优化风力涡轮机的功率调度,使其在给定的实时风速数据下,最小化涡轮机关键组件(如塔架和主轴)的疲劳损伤。问题的挑战在于,考虑通信延迟和测量噪声的同时,要确保功率输出与风速变化的响应快速且准确。

2401_82549447的博客 6632

okHttp javax.net.ssl.SSLHandshakeException的解决办法

安卓线上突然所有接口不能访问,都爆出这个异常 javax.net.ssl.SSLHandshakeException https请求java证书异常 主要原因是前两天公司后台更换java证书问题(以前用的免费证书,后面买了一个新的 更换掉免费的 结果所有接口都不能访问,当时准备让我们重新发版) 解决方法就忽略掉所有证书,不验证证书,但是这样就不安全了。 java代码: private stat...

wdx_1136346879的博客 8226

【斯坦福计网CS144项目】环境配置 & Lab0: ByteStream

前言 感觉学了不少 C++ 编程的知识和技术但比较缺少实践,于是打算找一些项目跟着做一做。 首先安利一个自学网站 CS自学指南,北大的同学做的,汇总了很多国内外高校 CS 相关的高质量公开课,其中大部分是有课程项目的。翻了翻感觉 Stanford 的这门 CS144 计网课的 Lab 比较有趣,难度也不错,就是它了! 课程网址:CS 144: Introduction to Computer Networking 我跟的是 2021 Fall 学期的版本。 准备工作 在上面的网站中先把 8 个实验的文档(

アルタイル 8165

【Java】已解决:javax.net.ssl.SSLHandshakeException: SSL

是一种在SSL/TLS握手过程中发生的异常,通常在客户端和服务器之间建立安全连接时出现。如果在这个过程中出现任何问题,例如证书无效或不被信任、协议版本不匹配等,就会导致SSL握手失败,从而抛出。在Java开发过程中,SSL(Secure Sockets Layer)握手异常是一个常见的网络通信错误,特别是在使用HTTPS协议进行安全通信时。如果服务器的SSL证书不被客户端信任,或证书存在问题,运行上述代码时就会抛出。这一异常的背景、可能的原因,并通过代码示例帮助您理解和解决这一问题。,并且连接将无法建立。

屿小夏.的知识博客 2925

模拟量传输4-20ma电流

大家可能会非常熟悉RS232,RS485,CAN等工业上常用的总线,他们都是传输数字信号的方式。那么,我们用什么方式来传输模拟信号呢?工业上普遍需要测量各类非电物理量,例如温度、压力、速度、角度等,这些都需要转换成模拟量电信号才能传输到几百米外的控制室或显示设备上。工业上最广泛采用的是用4~20mA电流来传输模拟量。 采用电流信号的原因是不容易受干扰,因为工业现场的噪声电压的幅度可能达到数V,但是噪声的功率很弱,所以噪声电流通常小于nA级别,因此给4-20mA传输带来的误差非常小;电流源内阻趋于无穷.

tangdongming的博客 1万+

手把手教你用Keil5和Proteus8给51单片机跑个流水灯(附完整源码+安装包)

本文详细介绍了如何使用Keil5和Proteus8为51单片机实现流水灯效果,包括开发环境配置、汇编代码编写、电路设计及仿真调试。通过完整的源码和安装包,帮助初学者快速掌握C51单片机开发的核心流程,适合嵌入式开发入门学习。

weixin_42632434的博客 373

解决访问HTTPS,抛出的异常javax.net.ssl.SSLHandshakeException

解决访问HTTPS,抛出的异常javax.net.ssl.SSLHandshakeException

u011250186的博客 3908

[终于解决]Ubuntu14.04 32位安装移动网卡(0bda:b711)驱动8188gu tplink-WN726n

大致梳理一下问题解决的流程 首先,在台式机做了双系统,台式机只有一个网线接口,由于项目要求,需要占用网口传输数据,所以用之前买的tplink-WN726n免驱版2.0的移动网卡 【note】免驱版只能在Windows下安装使用,在Ubuntu系统中无法使用,所以,需要另辟蹊径。 找了很多资料,尝试很多方法,有的复杂有的简单,终于解决。 【思路】首先在Ubuntu系统中输入lsusb,查看是否检测到USB网卡设备。然后从Github中复制代码,构建,安装,然后modprobe一下,到前面那步还不行,就再来一步

瑞o 1万+

搞定 javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure 问题!

开始碰到这个问题找遍了各种方法,其实还是需要耐心的先搞清楚原因再想方法靠谱,这里也总结下这个异常的多种解决方案, 首先先理解下为什么出现handshake?字面理解是客户端与服务端握手失败,能导致握手失败的原因是什么? 一.协议版本不同 首先是两边版本协议不一致,例如客户端可能是jdk7 /jdk8 它们支持的协议参考这里https://emacsist.github.io/2017/03/02/https.protocols%E5%9C%A8java%E4%B8%AD%E7%9A%84%E4%BD%

dingyufei的博客 6746

基于RK3562J开发板的MCP2518FD CAN-FD控制器驱动适配与测试指南

本文详细介绍了在RK3562J开发板上适配MCP2518FD CAN-FD控制器驱动的完整流程。内容涵盖内核驱动配置、设备树修改、编译烧录以及实际通信测试,重点分享了调试方法,旨在帮助开发者快速为嵌入式系统扩展高速CAN-FD通信能力,适用于汽车电子、工业控制等场景。

jenkins8butler的博客 496

Windows 11 安装 Miniforge,配置国内源

本文详细介绍了在 Windows 11 系统中安装 Miniforge 的完整流程,包括下载、安装选项设置、配置国内镜像源(如清华大学源)以加速包管理,并启用 mamba 提升依赖解析与安装速度。同时涵盖 conda 与 mamba 的基本使用验证、PowerShell 初始化及环境提示符优化,帮助用户快速搭建高效、开源、免费的 Python 科学计算环境。

寒水馨 · 轻量级技术文档 · hanshuixin.org 4523

Java调用ssl出现异常:javax.net.ssl.SSLHandshakeException: No appropriate protocol

在Java8及高版本以上的版本在调用ssl时会出现javax.net.ssl.SSLHandshakeException: No appropriate protocol的异常。 javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate) at sun.security.ssl.HandshakeContext.<init&

嘉禾笔记 1万+

ARM6818嵌入式视频播放器:硬解加速与Framebuffer渲染实战

嵌入式Linux音视频系统是智能座舱、工业HMI等场景的核心能力,其本质是软硬协同的实时多媒体处理系统。原理上需打通内核驱动(如VPU硬件编解码、FIMD多图层合成)、用户空间框架(GStreamer pipeline定制、SDL2硬件渲染)与应用层同步机制(PTS/HTS双时钟校准)。技术价值在于显著降低CPU负载(硬解可压至15%以下)、提升启动速度(<1.2s首帧)并保障音画同步精度(±3ms级)。典型应用场景包括车载信息娱乐、边缘AI终端及无X11的工控显示设备。本文基于ARM6818平台,深入VP

weixin_32456485的博客 78

深入解析javax.net.ssl.SSLHandshakeException:PKIX路径验证失败的排查与修复指南

本文深入解析Java开发中常见的javax.net.ssl.SSLHandshakeException异常,特别是PKIX路径验证失败的成因与解决方案。通过真实案例,详细拆解证书链验证、签名有效性和证书有效期检查等核心环节,并提供使用OpenSSL诊断、修复证书链、导入信任库等从临时绕过到彻底解决的全方位实战指南,帮助开发者构建健壮的SSL/TLS连接。

o9p0q1的博客 676

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

javax.net.ssl.SSLHandshakeException No appropriate protocol报错解决方案

javax.net.ssl.SSLHandshakeException: No appropriate protocol报错解决 文章目录javax.net.ssl.SSLHandshakeException: No appropriate protocol报错解决一、问题描述二、问题解决方案一方案二(亲测有效)1.2. 一、问题描述 用java开发了一个简单的***发送邮件***的程序,本地运行正常,但是上传到服务器就出现报错: Exception in thread "main" javax.mail.

時々雨 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: java.time.format.DateTimeParseException: 日期时间解析异常的解决方法,亲测有效,嘿嘿嘿,已解决
下一篇: 已解决java.lang.ArithmeticException: 算术异常的解决方法,亲测有效,嘿嘿嘿!!!
代码无疆
博客等级 码龄3年 4万+粉丝 305原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值