解决 https 证书验证不通过的问题

便宜SSL1年前 (2021-08-05)便宜SSL知识488

1、报错信息


java.security.cert.CertificateException: No name matching api.weibo.com found; nested exception is javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No name matching api.weibo.com found


原因:在调用api.weibo.com的时候,我们使用的是https的方式,正常情况下应该是使用api.weibo.com的证书,但由于某些原因,我们只能使用自己的证书,导致在验证证书的时候,就报了这个错误。


解决的办法:忽略服务端和客户端的证书校验即可。java 提供的相关的类。


2、具体实现方式


通过重写TrustManager的checkClientTrusted(检查客户端证书信任)和checkServerTrusted(检查服务端证书验证)。


以及HostnameVerifier的verify(校验)方法即可取消对证书的所有验证。


import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

 

import javax.net.ssl.*;

import java.io.IOException;

import java.net.URL;

import java.security.cert.CertificateException;

import java.security.cert.X509Certificate;

 

public final class DisableSSLCertificateCheckUtil {

 

    private static final Logger LOGGER = LoggerFactory.getLogger(DisableSSLCertificateCheckUtil.class);

 

    /**

     * Prevent instantiation of utility class.

     */

 

    private DisableSSLCertificateCheckUtil() {

 

    }

 

    /**

     * Disable trust checks for SSL connections.

     */

 

    public static void disableChecks() {

        try {

            new URL("https://0.0.0.0/").getContent();

        } catch (IOException e) {

            // This invocation will always fail, but it will register the

            // default SSL provider to the URL class.

        }

        try {

            SSLContext sslc;

            sslc = SSLContext.getInstance("TLS");

            TrustManager[] trustManagerArray = {new X509TrustManager() {

                @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];

                }

            }};

            sslc.init(null, trustManagerArray, null);

            HttpsURLConnection.setDefaultSSLSocketFactory(sslc.getSocketFactory());

            HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {

                @Override

                public boolean verify(String s, SSLSession sslSession) {

                    return true;

                }

            });

        } catch (Exception e) {

            LOGGER.error("error msg:{}", e);

            throw new IllegalArgumentException("证书校验异常!");

        }

    }

}


调用方式:


DisableSSLCertificateCheckUtil.disableChecks();


影响的范围:将会影响整个tomcat里面对证书的验证。即通过tomcat里面的其他项目虽然没有执行这一段代码但是也同样会忽略证书的验证。


相关文章

什么是组织验证(OV)SSL证书?

组织验证(OV)SSL证书是一种高度保证的SSL证书,用于验证公司/商务/组织类型的证书。商务SSL证书的主要目标是对商业平台使用的网站/业务和用户的敏感信息进行加密。它提出了2048位签名及高达256位的加密强度,证书详情显示组织名称,这...

Android手机上的SSL连接错误怎么解决?

SSL连接错误已经逐渐成为Android设备上最常见的问题之一,通常我们会收到提醒“您的连接不是私密的”、“此站点证书不受信任”等等。这些安全提示甚至会出现在最新操作系统或者当前操作系统的最新设备上,这可能会让你感到困惑,但是没关系,这篇文...

最熟悉的陌生人——基于共享证书的HTTPS上下文混淆攻击实证研究(三)

论文题目:Talking with Familiar Strangers: An Empirical Study on HTTPS Context Confusion Attacks (本文为ACM CCS 2020录用)论文作者:张明明,...

Android 7.0关于HTTPS证书的适配讲解

对于Android N之前自定义或非CA证书的使用,一般有两种方式:自定义 X509TurstManager 和 HostnameVerifier,替换原有的 HttpsURLConnection 中的校验类。自定义方法以烂大街的转载版为主...

使用商业认证中心的证书

如果 Rational ClearQuest® 用户来自多个组织,那么您将可能想要使用商业认证中心的证书。如果某些 Rational ClearQuest 用户来自帮助您进行设计或部署的其他组织,那么您将可能希望使用商业认证中心的证书。IB...

自签名SSL证书介绍及其缺点

标准SSL证书由受信任的证书颁发机构(CA)颁发和验证,此类证书使用信任链,其中每个证书都由更可靠的证书签名和信任,此链一直延伸到根证书。SSL证书一般需要付费使用,以致很多没有安全预算的企业选择在网站上使用免费的自签名证书。那么自签名SS...

换了服务器地址,旧的SSL证书是否还能继续使用?

随着信息化的普遍应用,企业网站、电商等对用户信息安全的重视,网站数据传输https加密的SSL证书的需求也在不断的重视,现在大部分网站都安装了SSL证书,网站建设者们常常会遇到这样的问题,由于服务器或者网站调整,服务器和 IP地址发生了...

宝塔面板SSL证书安装

操作场景 本文档指导您如何在宝塔面板中安装 SSL 证书。 说明:本文档以证书名称 example.org 为例,实际名称请以您申请的证书为准。当前服务器的操作系统为 CentOS 7.6,由于操作系统的版本不...

苹果ATS安全标准之HTTPS 证书验证浅析(下)

三、iOS实现支持HTTPS在OC中当使用NSURLConnection或NSURLSession建立URL并向服务器发送https请求获取资源时,服务器会使用HTTP状态码401进行响应(即访问拒绝)。此时NSURLConnection或...

腾讯云 CDN HTTPS 配置指南

配置场景腾讯云 CDN 支持 HTTPS 加速服务,您可以通过上传证书进行部署,也可以将已经托管至腾讯云 SSL 证书管理的证书,直接部署至 CDN 平台,启用 HTTPS 加速服务,实现全网数据加密传输。配置指南查看配置登录 C...

企业网站为什么要安装SSL证书?

什么是SSL?SSL,全称为Secure Sockets Layer(安全套接层)是一种加密算法,它在web网络服务器端口和浏览器端口之间建立加密传输。因此,必须在web网络服务器上安装了SSL证书,才可加密传输,通常表...

设置DNS CAA记录,防止HTTPS证书错误签发

全球约有上百个证书颁发机构(CA)有权发放HTTPS证书,证明您网站的身份。CAA标准使得网站可以将指定CA机构列入白名单,仅授权指定CA机构为自己的域名颁发证书,防止HTTPS证书错误签发。设置CAA记录是提高网站安全性的方法之一。什么是...

域名型通配符ssl证书的优势及申请方法

ssl证书已经成为每个站点和通讯开发所必需的技术安全产品。有了这个证书,网站的安全性可以得到提高,所以在保护网站信息安全时,企业可以申请ssl证书,然后将证书配置到网站服务器上。目前,比较流行的ssl证书之一是域名型通配符ssl证书,它有许...

微信小程序使用的SSL证书

微信就不做详细的介绍了,都知道是目前中国内地主要的移动手机使用的实时聊天软件。那么微信有了一大创举,那就是微信小程序的应用可以改善了传统手机重复性安装多个APP软件的问题,因为小程序可以让用户不安装软件就可以直接在微信里面大概相应的应用,并...

nginx如何配置https证书

第一步、客户端发送请求,服务器将证书发送给客户端,证书的本质是第三方CA的私钥加密的内容,其内容是服务器的公钥。第二步、客户端接收到证书后,用操作系统和浏览器内置的CA公钥去匹配验证证书,如果能解密,说明请求的是目标网站,不是中间人。第三步...

你不在意的 HTTPS 证书吊销机制

缘起偶刷《长安十二时辰》,午睡时,梦到我穿越到了唐朝,在长安城中的靖安司,做了一天的靖安司司丞。当徐宾遇害消失的时候我不在司内,当时的情形我不得而知。后来徐宾醒了,据他描述说“通传陆三”是暗桩,险些致徐宾于死地。而擅长大案牍术的高智商人才居...

证书过期?私钥泄露?掌控您的证书和私钥,维护网站安全和声誉!

数字证书,作为网络世界的身份证,提供了一种在Internet上验证通信实体身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份证。譬如,Web Server通过提供自己的数字证书来证明自己的身份,用户得以确认所访问的网站就是想要访问的网...