HTTPS请求忽略SSL证书

这篇具有很好参考价值的文章主要介绍了HTTPS请求忽略SSL证书。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

现场环境:

后端服务部署在docker内,远程调用https接口,线上报错:
unable to find valid certification path to requested target

解决方案:

设置SSLSocketFactory忽略证书校验

实现案例:

使用的cn.hutool.http.HttpRequest工具类请求的数据,支持设置头部、表单、body、超时时间等关键信息

//https请求url
String accessTokenUrl = SSOConstants.getAuthUrl() + "/oauth/token";
Map<String, Object> params = new HashMap<>();
//加密token
String client = SSOConstants.getClientId() + ":" + SSOConstants.getClientSecret();
client = Base64.getEncoder().encodeToString(client.getBytes());
params.put("grant_type", "password");
params.put("username", userName);
params.put("password", password);
log.info("请求参数username{},password{}",userName,password);
String result = null;
try {
    result = HttpRequest.post(accessTokenUrl)
            .header("Authorization", "Basic " + client)
            .header("Content-Type", "application/x-www-form-urlencoded")
            .header("Accept", "*/*")
            .header("Connection", "keep-alive")
            .form(params)//表单内容
            .timeout(30000)//超时,毫秒
            //关键代码,跳过SSL证书验证
            .setSSLSocketFactory(SSLUtils.getSSLSocketFactory())
            .charset("utf-8")
            .execute().body();
} catch (HttpException e) {
    log.error("登录失败:{}",e.toString());
}
log.info("登录结果:{}", result);

工具类 SSLUtils.java

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

public class SSLUtils {
    /**
     * 忽略https证书验证
     * @return
     */
    public static SSLSocketFactory getSSLSocketFactory() {
        try {
            SSLContext sslContext = SSLContext.getInstance("SSL");
            sslContext.init(null, getTrustManager(), new SecureRandom());
            return sslContext.getSocketFactory();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    private static TrustManager[] getTrustManager() {
        TrustManager[] trustAllCerts = new TrustManager[]{
                new X509TrustManager() {
                    //检查客户端证书,若不信任该证书抛出异常,咱们自己就是客户端不用检查
                    @Override
                    public void checkClientTrusted(X509Certificate[] chain, String authType) {
                    }
                    //检查服务器的证书,若不信任该证书抛出异常,可以不检查默认都信任
                    @Override
                    public void checkServerTrusted(X509Certificate[] chain, String authType) {
                    }
                    //返回受信任的X509证书数组
                    @Override
                    public X509Certificate[] getAcceptedIssuers() {
                        return new X509Certificate[]{};
                    }
                }
        };
        return trustAllCerts;
    }
}

强烈推荐一下 hutool工具类,超好使
https://www.bookstack.cn/read/hutool/http.md文章来源地址https://www.toymoban.com/news/detail-509596.html

到了这里,关于HTTPS请求忽略SSL证书的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 内网环境下nginx使用自签名ssl证书配置https请求

    一、安装Openssl nginx有openssl 命令,没有的自行百度,我配置的nginx是存在的所以没查这部分 二、生成密钥 可以在本地生成然后把文件拷贝到服务器,也可以直接在服务器指定目录生成,我选择的后者。 应该是哪个目录都可以,只要在nginx.conf文件中引入正确地址就可以 我的配

    2024年01月21日
    浏览(57)
  • curl 忽略https的ssl的证书验证

    今天使用curl 测试url请求出现了需要ssl证书的验证 curl的用法

    2024年02月17日
    浏览(47)
  • 如何给网站或者后端服务免费且快速的进行配置HTTPS,配置ssl证书

    现在部署的网站用的大多都是 https 协议的,还有的平台你要是想发布自己的网站就必须得是 https 的协议,如果不使用 ssl 的话,那就不让你使用.就比如微信,支付宝等的产品,不用的话就不让你使用他们的平台.不过还好很多服务厂商都提供了免费 ssl 证书可以进行配置 今天的情况

    2024年02月09日
    浏览(42)
  • http请求https忽略证书验证

    2024年02月02日
    浏览(59)
  • springboot集成Elasticsearch7.16,使用https方式连接并忽略SSL证书

    千万万苦利用科学上网找到了,记录一下

    2024年02月09日
    浏览(48)
  • 发送https请求并跳过ssl证书验证

     平台服务调用https接口报错: org.springframework.web.client.ResourceAccessException: I/0 error on PoST request for ?\\\"https://XXXXX\\\": java.security.centp.CertificateException: No subject alternative names present; nested exception is javax.net.ssl..SSLHandshakeException: java.security.cert.CertificateException: No subject alternative namesspresent 第

    2024年02月16日
    浏览(47)
  • 关于.NET6后端程序(api)部署ssl证书的问题(https) 解决ing

    首先 一般情况下,后端不用https,但vs默认创建工程时,很容易勾选,这是需要将https改为http 改两处 一、把program.cs的 //app.UseHttpsRedirection(); 注释了 二、launchSettings里的iisSettings中 443改为0 再加一处 launchSettings的\\\"applicationUrl\\\": \\\"http://localhost:5001\\\"需要把s删掉 如果不改 用post会默认

    2024年01月17日
    浏览(62)
  • C# 解决 https请求 ssl证书问题,看我一篇通通解决

    废话不多说,直接上代码,实干兴邦,空谈误国!光说不贴源代码更是耍流氓! 针对旧版本的接口框架,.netformwork4.5以下,加上传统的ssl机制即可解决问题。 针对.net core版本的框架,采用ssl证书验证回调的方式,其中方案二和方案三同属于一种解决方式,方案三的更直接明了

    2024年02月16日
    浏览(50)
  • 使用Python的requests库发送HTTPS请求时的SSL证书验证问题

    问题描述 使用python的requests库去发送https请求,有时候不设置verify=False不报错,有时候又报错。 问题原因 使用Python的requests库发送HTTPS请求时,设置verify=False参数可以跳过SSL证书验证。默认情况下,requests库会验证SSL证书以确保请求的安全性。然而,在某些情况下,可能会出现

    2024年02月17日
    浏览(50)
  • curl请求https证书过期的问题:SSL certificate problem: certificate has expired

    写了两个系统,系统A使用 curl 去请求系统B,但是不知道为什么会报错 SSL certificate problem: certificate has expired 系统A使用了 https 但是系统B没有使用 https 系统A的SSL并未过期,而且在两个系统在同一台服务器时并未报错,所以不是SSL证书的问题 解决办法: 关闭curl对证书验证,可

    2024年02月16日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包