首页 常见问题 HTTPS证书校验异常怎么解决?

HTTPS证书校验异常怎么解决?

Apr 16, 2020 am 10:33 AM
https

HTTPS证书校验异常,验证不通过要怎么解决?下面本篇文章给大家介绍一下Https请求验证证书失败的解决方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

HTTPS证书校验异常怎么解决?

报错:unable to find valid certification path to requested target

解决办法:

1、导入证书到本地证书库

2、信任所有SSL证书

最好的解决办法或许是信任所有SSL证书,因为某些时候不能每次都手动的导入证书非常麻烦。现在封装了个方法,在连接openConnection的时候忽略掉证书就行了。

SslUtils.java

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 SslUtils {private static void trustAllHttpsCertificates() throws Exception {
    TrustManager[] trustAllCerts = new TrustManager[1];
    TrustManager tm = new miTM();
    trustAllCerts[0] = tm;
    SSLContext sc = SSLContext.getInstance("SSL");
    sc.init(null, trustAllCerts, null);
    HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
}
 
static class miTM implements TrustManager,X509TrustManager {
    public X509Certificate[] getAcceptedIssuers() {
        return null;
    }
 
    public boolean isServerTrusted(X509Certificate[] certs) {
        return true;
    }
 
    public boolean isClientTrusted(X509Certificate[] certs) {
        return true;
    }
 
    public void checkServerTrusted(X509Certificate[] certs, String authType)
            throws CertificateException {
        return;
    }
 
    public void checkClientTrusted(X509Certificate[] certs, String authType)
            throws CertificateException {
        return;
    }
}
 
/**
 * 忽略HTTPS请求的SSL证书,必须在openConnection之前调用
 * @throws Exception
 */
public static void ignoreSsl() throws Exception{
    HostnameVerifier hv = new HostnameVerifier() {
        public boolean verify(String urlHostName, SSLSession session) {
            System.out.println("Warning: URL Host: " + urlHostName + " vs. " + session.getPeerHost());
            return true;
        }
    };
    trustAllHttpsCertificates();
    HttpsURLConnection.setDefaultHostnameVerifier(hv);
}
 
}
登录后复制

SslTest.java:

import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import org.apache.commons.io.IOUtils;
 
public class SslTest {
     
    public String getRequest(String url,int timeOut) throws Exception{
        URL u = new URL(url);
        if("https".equalsIgnoreCase(u.getProtocol())){
            SslUtils.ignoreSsl();
        }
        URLConnection conn = u.openConnection();
        conn.setConnectTimeout(timeOut);
        conn.setReadTimeout(timeOut);
        return IOUtils.toString(conn.getInputStream());
    }
     
    public String postRequest(String urlAddress,String args,int timeOut) throws Exception{
        URL url = new URL(urlAddress);
        if("https".equalsIgnoreCase(url.getProtocol())){
            SslUtils.ignoreSsl();
        }
        URLConnection u = url.openConnection();
        u.setDoInput(true);
        u.setDoOutput(true);
        u.setConnectTimeout(timeOut);
        u.setReadTimeout(timeOut);
        OutputStreamWriter osw = new OutputStreamWriter(u.getOutputStream(), "UTF-8");
        osw.write(args);
        osw.flush();
        osw.close();
        u.getOutputStream();
        return IOUtils.toString(u.getInputStream());
    }
     
    public static void main(String[] args) {
        try {
            SslTest st = new SslTest();
            String a = st.getRequest("https://xxx.com/login.action", 3000);
            System.out.println(a);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
}
登录后复制

更多相关知识,请关注PHP中文网

以上是HTTPS证书校验异常怎么解决?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何使用Nginx Proxy Manager实现HTTPS协议下的反向代理 如何使用Nginx Proxy Manager实现HTTPS协议下的反向代理 Sep 26, 2023 am 08:40 AM

如何使用NginxProxyManager实现HTTPS协议下的反向代理近年来,随着互联网的普及和应用场景的多样化,网站和应用程序的访问方式变得越来越复杂。为了提高网站的访问效率和安全性,很多网站开始采用反向代理来处理用户的请求。而针对HTTPS协议的反向代理,在保护用户隐私和确保通信安全性方面扮演着重要的角色。本文将介绍如何使用NginxProxy

如何使用Nginx Proxy Manager实现HTTP到HTTPS的自动跳转 如何使用Nginx Proxy Manager实现HTTP到HTTPS的自动跳转 Sep 26, 2023 am 11:19 AM

如何使用NginxProxyManager实现HTTP到HTTPS的自动跳转随着互联网的发展,越来越多的网站开始采用HTTPS协议来加密传输数据,以提高数据的安全性和用户的隐私保护。由于HTTPS协议需要SSL证书的支持,因此在部署HTTPS协议时需要有一定的技术支持。Nginx是一款强大且常用的HTTP服务器和反向代理服务器,而NginxProxy

Nginx与SSL:配置HTTPS保护Web服务器 Nginx与SSL:配置HTTPS保护Web服务器 Jun 09, 2023 pm 09:24 PM

Nginx是一个高性能的Web服务器软件,同时也是一款强大的反向代理服务器和负载均衡器。随着互联网的迅速发展,越来越多的网站开始采用SSL协议保护敏感用户数据,而Nginx也提供了强大的SSL支持,使得Web服务器的安全性能更进一步。本文将介绍如何配置Nginx以支持SSL协议,并保护Web服务器的安全性能。什么是SSL协议?SSL(SecureSocke

tomcat如何配置https tomcat如何配置https Jan 05, 2024 pm 05:15 PM

配置步骤:1、获取SSL证书;2、配置SSL证书;3、编辑Tomcat配置文件;4、重启Tomcat。详细介绍:1、需要获取SSL证书,可以自签名证书,也可以从认证机构(如Let’s Encrypt)获得有效的SSL证书;2、将获得的SSL证书和私钥文件放置在服务器上,确保这些文件位于安全的位置,只有具有足够权限的用户可以访问;3、编辑Tomcat配置文件等等。

https工作流程是什么样的 https工作流程是什么样的 Apr 07, 2024 am 09:27 AM

https工作流程包括客户端发起请求、服务器响应、SSL/TLS握手、数据传输和客户端渲染等步骤,通过这些步骤可以确保数据在传输过程中的安全性和完整性。

Java API 开发中使用 Https 进行数据传输 Java API 开发中使用 Https 进行数据传输 Jun 18, 2023 pm 10:43 PM

随着科技的发展,网络通信已经成为了现代社会信息传输的重要工具之一。但同时,网络上的信息传输面临着被恶意攻击和窃取的风险,因此安全性显得尤为重要。基于此,HTTPS协议就应运而生。它是在HTTP协议上加入SSL/TLS加密的方式来保证网络传输安全性的一种协议。Java作为一门广泛应用于网络开发的语言,自然也提供了丰富的API来支持HTTPS协议。本文将

解决方案:urllib3 ProxySchemeUnknown(proxy.scheme) 解决方案:urllib3 ProxySchemeUnknown(proxy.scheme) Feb 29, 2024 pm 07:01 PM

报错的原因urllib3的ProxySchemeUnknown(proxy.scheme)错误通常是由于使用了不支持的代理协议导致的。在这种情况下,urllib3不能识别代理服务器的协议类型,因此无法使用代理进行网络连接。要解决这个问题,您需要确保使用支持的代理协议,例如Http或https.如何解决要解决这个问题,您需要确保使用支持的代理协议,例如HTTP或HTTPS。您可以通过设置urllib3的代理参数来解决这个问题。如果是使用http代理,代码示例如下:importurllib3http

如何设置PHP表单的HTTPS安全连接? 如何设置PHP表单的HTTPS安全连接? Aug 17, 2023 pm 03:25 PM

如何设置PHP表单的HTTPS安全连接?随着互联网的发展,安全性在网页开发中变得越来越重要。加密传输协议HTTPS在保护数据传输过程中起到关键的作用。在使用PHP表单进行数据传输时,我们可以采取一些措施来保证连接的安全性。本文将指导您如何设置PHP表单的HTTPS安全连接,并附带一些代码示例。购买SSL证书首先,您需要购买一个SSL证书。SSL证书是保证网站