V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mengyxu
V2EX  ›  Java

Java https 请求绕过 SSL 证书验证问题

  •  
  •   mengyxu · 2022-12-13 15:38:36 +08:00 · 1715 次点击
    这是一个创建于 695 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • 问题

    同一个方法,用 JUnit 测试类跑没有问题,程序运行起来定时器跑就抛异常(No subject alternative names present),半天了没有头绪,求帮忙分析分析. JDK17,springboot2.7.1,JUnit5

    4 条回复    2022-12-13 22:48:32 +08:00
    blankmiss
        1
    blankmiss  
       2022-12-13 15:41:35 +08:00
    你为什么不发哥 gist 出来
    Hancock
        2
    Hancock  
       2022-12-13 15:48:53 +08:00
    mengyxu
        3
    mengyxu  
    OP
       2022-12-13 15:54:17 +08:00
    @Hancock 我用 apache 的 httpclient 是没有问题的,我是想着换成 jdk11 自带 httpClient,结果遇到了这个问题
    b2byco
        4
    b2byco  
       2022-12-13 22:48:32 +08:00
    试试这个
    try {
    X509TrustManager x509TrustManager = 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];
    }
    };
    SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
    sslContext.init((KeyManager[]) null, new X509TrustManager[] {
    x509TrustManager
    }, (SecureRandom) null);
    HttpClient client = HttpClient.newBuilder().sslContext(sslContext).followRedirects(HttpClient.Redirect.ALWAYS).version(HttpClient.Version.HTTP_1_1).build();
    URI uri = new URI("https", "//", null);
    HttpRequest r = HttpRequest.newBuilder().uri(uri).GET().build();
    var s = client.send(r, HttpResponse.BodyHandlers.ofString());
    System.out.println(s.body());
    } catch(Exception e) {}
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3023 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 13:46 · PVG 21:46 · LAX 05:46 · JFK 08:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.