解决forest低版本请求不安全的网站出现SSL认证不通过问题

文章目录

  • 前言
  • 解决问题的步骤
    • 1、当然是百度
    • 2、官网
    • 3、看源码
    • 4、GPT
    • 5、直接去gitee上看源代码的问题
  • 解决一
  • 解决二

前言

先说结论:无法解决

那既然无法解决,为啥还要写这样一篇文章呢,是因为这个问题我弄了一天多,我觉得有必要记录一下;

同时后面也是使用了hutool 的http作为代替方案,也是因为在hutool的官网没有特意标明,所以这也是一个理由吧!

解决问题的步骤

简单点说,就是公司系统,只允许使用forest1.5.24版本,不允许升级版本,所以在请求接口的时候遇到了ssl认证不通过的问题,即:

解决forest低版本请求不安全的网站出现SSL认证不通过问题_第1张图片

1、当然是百度

解决forest低版本请求不安全的网站出现SSL认证不通过问题_第2张图片

我的期望是,在forest的基础上配置,一搜,有绕过ssl的,但丝毫未提过forest,所以直接放弃;

2、官网

forest官网

在官网中我们可以看见有关于SSL的配置,但最低版本是1.5.28,死马当活马医,配置自定义的SSLSocketFactory,然后使用@SSLSocketFactoryBuilder(MySSLSocketFactoryBuilder.class)

解决forest低版本请求不安全的网站出现SSL认证不通过问题_第3张图片

然后就没然后了,如果有用我上面也不会说解决不了了,这个只是针对后续版本的

3、看源码

查看源码得知,它提供了一个单向的绕过ssl认证的方法,既:

解决forest低版本请求不安全的网站出现SSL认证不通过问题_第4张图片

然后也没然后,没卵用,我可以确定我姿势没问题

4、GPT

GPT信息停滞在2021,所以在它的认知中,最新版本是1.5.12版本,不知道是不是这个原因,它提供了一大堆根本不存在的方法和错误姿势给我,怀疑人生:

解决forest低版本请求不安全的网站出现SSL认证不通过问题_第5张图片

解决forest低版本请求不安全的网站出现SSL认证不通过问题_第6张图片

吐了,直接抛弃

5、直接去gitee上看源代码的问题

解决forest低版本请求不安全的网站出现SSL认证不通过问题_第7张图片

大家可以自行去看看,我都试过了,无解,没卵用,然后我自己也提出一个问题以及私信:

解决forest低版本请求不安全的网站出现SSL认证不通过问题_第8张图片

解决forest低版本请求不安全的网站出现SSL认证不通过问题_第9张图片

forest的作者直接推荐升级版本,可问题就是不能升级哦,到这我就直接抛弃使用forest,采用别的方式

解决一

如果你的版本是可以升级的,无需考虑兼容性的话,建议直接升级到>=1.5.26版本,原因在1.5.26版本之后就默认自动绕过SSL验证了:

解决forest低版本请求不安全的网站出现SSL认证不通过问题_第10张图片

解决二

使用别的Http框架,有apache,原生的、feign、hutool、。。。,我使用的是hutool的,就图方便:

基础操作官网都有,使用HttpUtil或者HttpRequest,这里需要指明的是下载文件,带参数,带请求头,官网没指出,其实也是使用HttpRequest:

import cn.hutool.core.io.FileUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;

import java.io.File;

public class FileDownloadExample {
    public static void main(String[] args) {
        HttpRequest request = HttpRequest.get("文件的URL");
        request.header("Header1", "Value1");  // 设置请求头
        request.form("param1", "value1");  // 设置参数

        HttpResponse response = request.execute();

        if (response.isOk()) {
            byte[] fileBytes = response.bodyBytes();
            File file = new File("保存路径");
            FileUtil.writeBytes(fileBytes, file);
            
            // 文件下载完成,可以使用file对象进行操作
            System.out.println("文件保存成功:" + file.getAbsolutePath());
        } else {
            System.out.println("请求失败,状态码:" + response.getStatus());
        }
    }
}

你可能感兴趣的:(项目问题,安全,ssl,java,spring,spring,boot,网络协议)