java.security.cert.CertificateException异常的正确解决方法,亲测有效,嘿嘿嘿

javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternat... 问题原因 访问https的网站,没有携带证书 解决方案 一、忽略证书 public RestTemplate dtRestTemplate() { RestTemplate restTemplate = null; try { SSLContext sslContext = SSLContext.getInstance("TLSv1.2"); sslContext.init(null, disableSslCheck(), ne 阅读详情


java.security.cert.CertificateException 是 Java 中的一个异常,它通常与 SSL/TLS 通信中的证书验证问题相关。这个异常可能由多种原因引起,下面我将逐一分析这些问题,并提供相应的解决思路和代码示例。

问题分析

  1. 证书链不完整:服务器提供的证书链可能不完整,导致客户端无法验证证书的有效性。
  2. 证书已过期:证书可能已经超过了其有效期。
  3. 证书吊销:证书可能已被吊销,但客户端的吊销列表(CRL)或在线证书状态协议(OCSP)响应者可能无法访问或未更新。
  4. 证书签名不匹配:证书链中的某个证书与上级证书签名不匹配。
  5. 主机名不匹配:证书上的主机名与尝试连接的主机名不匹配(即 SNI 问题)。
  6. 信任问题:证书颁发机构(CA)不被客户端信任。

报错原因

CertificateException 的具体错误消息会提供更多关于问题的线索。例如,它可能会提到证书过期、签名验证失败、主机名不匹配等。

解决思路

  1. 检查证书链:确保服务器提供了完整的证书链。
  2. 检查证书有效期:确保证书在有效期内。
  3. 检查吊销状态:确保证书未被吊销,并确保客户端可以访问吊销列表或 OCSP 响应者。
  4. 检查主机名:确保证书上的主机名与尝试连接的主机名匹配。
  5. 添加信任的 CA:如果 CA 不被信任,可以考虑将其添加到客户端的信任存储中。
  6. 自定义信任管理器:在某些情况下,你可能需要实现自定义的信任管理器来跳过证书验证(注意:这通常不推荐用于生产环境,因为它会降低安全性)。

解决方法

1. 检查和更新证书链

确保服务器配置正确,并提供完整的证书链。这通常需要在服务器上配置 SSL/TLS。

2. 更新客户端的信任存储

如果你知道证书是有效的,但客户端不信任它,你可以将 CA 证书添加到客户端的信任存储中。这通常涉及将证书导入到 Java 的 keystore(如 cacerts)中。

3. 自定义信任管理器(不推荐用于生产环境)

下面是一个简单的示例,展示了如何创建一个自定义的信任管理器来跳过证书验证(再次提醒,这通常不推荐用于生产环境):
下滑查看解决方法

import javax.net.ssl.*;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

public class TrustAllCertsManager implements X509TrustManager {
    @Override
    public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
        // Do nothing
    }

    @Override
    public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
        // Do nothing
    }

    @Override
    public X509Certificate[] getAcceptedIssuers() {
        return new X509Certificate[0];
    }

    // Usage
    public static void main(String[] args) throws Exception {
        TrustManager[] trustAllCerts = new TrustManager[]{new TrustAllCertsManager()};

        SSLContext sc = SSLContext.getInstance("SSL");
        sc.init(null, trustAllCerts, new java.security.SecureRandom());
        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());

        // Create all-trusting host name verifier
        HostnameVerifier allHostsValid = new HostnameVerifier() {
            public boolean verify(String hostname, SSLSession session) {
                return true;
            }
        };

        // Install the all-trusting host verifier
        HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);

        // Now you can use URL.openConnection() to connect to SSL sites.
        // Because the CA certificates are not used to authenticate the servers,
        // third party certificates will not cause SSL errors.
    }
}

注意:上述代码中的 TrustAllCertsManager 和 allHostsValid 会跳过所有 SSL/TLS 验证,这会使你的应用程序容易受到中间人攻击。在生产环境中,你应该始终验证证书和主机名。

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. 阅读详情

相关推荐

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

javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException:No subject alternative names present解决方案。

weixin_53273474的博客 2754

SSL证书认证失败javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: 解决方法

访问第三方接口传递数据,出现SSL证书认证失败的情况,于是做出了如下解决方案: 1.代码层跳出SSL验证 javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative DNS name matching idcardcert.market.al...

qq_40315210的博客 3万+

访问https地址时出现异常:java.security.cert.CertificateException: No subject alternative names present

前几天在工作中碰到一个问题,我们通过回调接口的形式向对接方返回数据,在工程中使用的HttpClient是Spring自带的RestTemplate。但是有一家给到的回调地址为https://ip地址+uri的形式,在进行回调时抛出了如题异常,我理解为是目标地址没有安全证书导致的。查阅一些资料后知道,原来https访问的时候是需要域名才可以的,无法使用ip。这跟前面的没有安全证书又有什么联系呢?其实...

weixin_37782390的博客 3万+

已解决java.security.cert.CertificateException: 证书异常的正确解决方法,亲测有效!!!

已解决java.security.cert.CertificateException: 证书异常的正确解决方法,亲测有效!!!

小明的Java问道之路 8471

java.security.cert.CertificateException: 证书异常的正确解决办法

java.security.cert.CertificateException: 证书异常的正确解决办法

wbajsjhhhhh的博客 3665

从零搭建一个虚拟ECU:手把手用Autosar CP模块模拟汽车灯控系统(基于Vector工具链)

本文详细介绍了如何使用Vector工具链从零搭建一个基于Autosar CP架构的虚拟ECU系统,模拟汽车灯光控制功能。通过环境搭建、模块配置、通信栈设置到灯光控制逻辑实现的全流程指导,帮助开发者掌握Autosar CP模块术语的实际应用,并提供了系统集成与测试的实用方案。

weixin_42628688的博客 315

【java报错已解决】java.security.cert.CertificateException

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

2401_86544677的博客 2249

vtk相机_分别用 VTK 体绘制和面绘制来实现医学图像三维重建;

序言,VTK介绍:VTK 全称为 The Visualization Toolkit (可视化工具),是一个开源、跨平台、自由获取、支持并行计算的图形应用函数;拥有3D 渲染的最新工具、提供3D交互模式以及2D绘图等。VTK 包含一个C++类库,目前提供了众多语言接口,例如 Java、Python、TCL;在三维函数库OpenGL 的基础上采用面向对象设计方法发展起来图形学基本概念和数据...

weixin_39665302的博客 689

【Java】已解决:java.security.cert.CertificateException

通常在处理SSL/TLS证书时抛出,特别是在使用HTTPS协议进行网络通信或者使用证书进行身份验证时。当Java应用程序在验证证书时发现证书不可信、格式错误或者证书链存在问题,就会抛出此异常。,并确保您的Java应用程序能够安全、稳定地进行SSL/TLS通信。就是其中较为常见的一种。本文将详细分析该异常的背景、可能的原因,并通过错误和正确的代码示例帮助读者理解并解决这一问题。在Java开发过程中,与SSL/TLS证书相关的操作可能会引发一系列的异常,而。时,如果服务器的证书未被客户端信任,可能会抛出。

屿小夏.的知识博客 1743

LPDDR4协议规范之 (四)命令和时序

LPDDR4协议规范之 (四)命令和时序命令真值表激活操作读写访问操作读前沿和后沿突发读取操作流程读操作时序写前沿和后沿突发写操作写入均衡(待更新) 命令真值表 激活操作 ACTIVATE命令由两个连续命令组成,Activate-1命令和Activate-2。通过在(Activate-1)时钟的第一个上升沿保持CS HIGH,CA0 HIGH和CA1 LOW来发出Activate-1命令,通过...

YJFeiii的博客 2万+

VASPKIT绘制平面平均电荷差分密度

平面平均密度差(planar-averaged electron density difference)是密度差的衍生。密度差是个三维空间函数,经常通过绘制平面图、等值面图方式图形化考察。虽然这两种图很直观,但平面图会受到截面选取的影响,而等值面图会受到等值面数值(isovalue)选取的影响,因此都有一定任意性,也不容易定量讨论。对于电子转移有比较明确方向的情况,可以绘制平面平均密度差曲线,由此可以清楚地考察垂直于选取的方向上每个截面上的密度差积分值,在定量讨论、对比上比较便利。

weixin_43948934的博客 1万+

java certificate_记录解决java.security.cert.CertificateException 问题过程

团队在开发过程中,突然发现有一个业务失常,该业务对接了另一个团队开发的IM SDK,报错异常如下为:java.security.cert.CertificateException:Domain specific configurations require that hostname aware checkServerTrusted(X509Certificate[], String, Strin...

weixin_42512723的博客 3985

基于Halcon与C#的PCB焊接缺陷智能检测系统开发实战(附完整源码与项目文档)

本文详细介绍了基于Halcon与C#的PCB焊接缺陷智能检测系统开发实战,涵盖机器视觉技术、硬件选型、图像处理算法及C#上位机开发。通过实战案例展示如何实现高效、准确的PCB焊接缺陷检测,提升生产效率与质量,并附完整源码与项目文档。

mango的博客 219

java.security.cert.CertificateException: No name matching IP found

java.security.cert.CertificateException: No name matching localhost found 解释;安全证书异常,IP地址找不到 解决方案如下:程序加入static里面的代码块就OK了 代码的意思就是程序默认这个IP地址是安全可访问的 Problem ConfiguredTomcat to support SSLand deplo...

张凡 3574

OpenClaw使用ClawHub安装skill网络不稳定?Rate limit exceeded报错?试试这个国内高速镜像工具!

使用 ClawHub 安装 Skill 时遇到 🌐 网络不稳、❌ Rate limit 或命令不可用?使用这个镜像工具,轻松解决skill安装问题,⚡

XiaoqiangClub的博客 1261

【数字IC基础】DFT(Design For Test)可测性设计

【数字IC基础】DFT(Design For Test)可测性设计

努力,加油每一天鸭~ 3467

导入申请的证书时发生java.security.cert.CertificateException: java.io.EOFException异常

<br />原因:部分客户端邮件工具如Foxmail会在证书末尾添加一个空行,导致导入证书发生java.security.cert.CertificateException: java.io.EOFException异常,请直接从Web邮箱下载证书。

我的Java之路,关注Java技术的发展 1万+

告别 DEFINE VIEW:CDS View Entity 迁移全景实战(报表迁移 + ADT 向导 + 避坑清单)

CDS迁移的关键要点与策略 CDS DDIC-based View已被标记为废弃,迁移到CDS View Entity成为必要。迁移面临的主要挑战包括激活成本、命名约束和依赖风险。ABAP 7.57及以上版本必须优先处理,否则将积累技术债务。 迁移方式主要有两种: 报表路线:适合渐进式迁移的On-Premise项目 ADT向导:适合云环境批量迁移 关键注意事项: 必须提前检查SQL View依赖关系 金额/数量字段需要显式引用单位/货币字段 建议按使用场景分批迁移 最佳实践是结合报表进行系统盘点,再通过AD

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 208

记录解决java.security.cert.CertificateException 问题过程

团队在开发过程中,突然发现有一个业务失常

JoeySheng的专栏-移动互联网技术发展博客 7326

WINCC7.3破解文件

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

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

CAS部署错误3:java.security.cert.CertificateException: No name match

javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No name matching casserver found 报出该异常的原因是:在创建密钥库是没有把域名设置进去,如下图红框处,必须是你访问的域名,如果是本地测试,可以用localhost 详情配置请参考:CA

diyagea的博客 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

java如何获取信任证书,获取java.security.cert.CertificateException,但证书将导入信任库...

我总是收到一个java.security.cert.CertificateException: No subject alternative names present例外,但我已将证书导入我的trusrstore . 在这里我的设置:我正在使用基于 com.sun.net.httpserver.HttpsServer 的小型HTTPS服务器 . 我创建了一个带有自签名证书的密钥库:keytool...

weixin_35813719的博客 1833

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

java security cert CertificateException No name matching ca

java security cert CertificateException No name matching ca

qq_44894359的博客 375

Caused by: java.security.cert.CertificateException: No subject alternative names present

javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative names present at sun.security.ssl.Alerts.getSSLException(Unknown Source) at sun.security.ssl.SSLS

卖克的专栏 9251

java.security.cert.CertificateException: Could not parse certificate: java.io.IOException: Empty inp

java.security.cert.CertificateException: Could not parse certificate: java.io.IOException: Empty input 使用第三方sdk时候报错: sdk.setPublicKeyEncrypt(publicTestKey.getBytes()); publicTestKey是个String字符串 暂未找到解决方...

最帅程序猿的博客 6131

java.security.cert.CertificateException: No subject alternative DNS name matching XXX found解决方案

由于第三方服务商更新服务器证书,导致向其推送数据出现SSL证书认证失败。 网上搜了一堆,都无法生效,最终找到了一个完美解决方案: 在代码层跳出SSL验证 1、观察异常日志信息如下: 2、新增跳过证书的类,TrustAllTrustManager.java,代码如下: public class TrustAllTrustManager implements javax.net.ssl.TrustManager, javax.net.ssl.X509TrustManager { @Override

jike11231的博客 2万+

java.security.cert.CertificateException:找不到与本地主机匹配的名称

问题 配置Tomcat以支持SSL并部署了此简单的hello world Web服务 。 并使用以下客户端通过SSL连接连接到已部署的Web服务: package com.mkyong.client; import java.net.URL; import javax.xml.namespace.QName; import javax.xml.ws.Service; import c...

一名可爱的技术搬运工 971
上一篇: java.awt.AWTException异常的正确解决方法,亲测有效,嘿嘿嘿
下一篇: 已解决java.time.DateTimeException日期时间异常的解决方法,亲测有效,嘿嘿嘿
代码无疆
博客等级 码龄3年 4万+粉丝 305原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值