当前位置: 首页 > 知识库问答 >
问题:

Apache HTTP Client loadTrust材质不工作

须原
2023-03-14

首先,源代码中没有注释。

<代码>组织。阿帕奇。hc。core5.ssl。SSLContextBuilder#loadTrustMaterial(org.apache.hc.core5.ssl.TrustStrategy)

public SSLContextBuilder loadTrustMaterial(
        final TrustStrategy trustStrategy) throws NoSuchAlgorithmException, KeyStoreException {
    return loadTrustMaterial(null, trustStrategy);
}

这是代码会触发混淆行为,与apache官方演示Apache演示相同

@Test
void customStrategy() throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException, IOException, ParseException {

    SSLContextBuilder sslContextBuilder = SSLContexts.custom();
    sslContextBuilder.loadTrustMaterial((chain, authType) -> false);
    SSLContext sslcontext = sslContextBuilder.build();

    SSLConnectionSocketFactoryBuilder sslConnectionSocketFactoryBuilder = SSLConnectionSocketFactoryBuilder.create();
    sslConnectionSocketFactoryBuilder.setSslContext(sslcontext);
    sslConnectionSocketFactoryBuilder.setTlsVersions(TLS.V_1_2);
    SSLConnectionSocketFactory sslConnectionSocketFactory = sslConnectionSocketFactoryBuilder.build();

    PoolingHttpClientConnectionManagerBuilder poolingHttpClientConnectionManagerBuilder = PoolingHttpClientConnectionManagerBuilder.create();
    poolingHttpClientConnectionManagerBuilder.setSSLSocketFactory(sslConnectionSocketFactory);
    HttpClientConnectionManager httpClientConnectionManager = poolingHttpClientConnectionManagerBuilder.build();

    HttpClientBuilder httpClientBuilder = HttpClients.custom();
    httpClientBuilder.setConnectionManager(httpClientConnectionManager);
    CloseableHttpClient closeableHttpClient = httpClientBuilder.build();

    HttpClientContext clientContext = HttpClientContext.create();

    CloseableHttpResponse response = closeableHttpClient.execute(new HttpGet("https://www.baidu.com"), clientContext);

    System.out.println("BODY-Length " + EntityUtils.toString(response.getEntity()).length());

    SSLSession sslSession = clientContext.getSSLSession();

    System.out.println(sslSession.getPeerHost() + ":" + sslSession.getPeerPort());
}

输出为:

... ...
BODY-Length 2443
www.baidu.com:443

甚至我在自定义信任策略中直接返回false。

sslContextBuilder.loadTrustMaterial((chain, authType) -> {
    throw new CertificateException();
});

这将中断连接,但我不认为如果接口返回false,但只有在异常正确使用时才会中断。

问题:为什么返回false不起作用?Thorw Exection让我感觉不对,这是设计吗?

共有1个答案

封弘伟
2023-03-14

请参阅信任策略的javadocs。如果信任策略从受信任方法返回false,则证书验证由在SSL上下文中配置的信任管理器执行。

 类似资料:
  • 我收到一个错误,上面写着“未能解析:com.github.mancj:MaterialSearchBar:0.8.5”。关于如何修复这个问题,有什么想法吗? 我的构建gradle项目 构建gradle应用程序:

  • 我想从材质UI更改(减少)工具栏的默认高度 我已经提到了如何更改材质UI工具栏高度?但我仍然面临着这个问题 问题是,当我超过50岁时,我能看到变化。但当我想降低高度时,我无法做到。 我如何才能实现这一点? 我的代码:

  • 在现实世界里,每个物体会对光产生不同的反应。比如说,钢看起来通常会比陶瓷花瓶更闪闪发光,木头箱子也不会像钢制箱子那样对光产生很强的反射。每个物体对镜面高光也有不同的反应。有些物体反射光的时候不会有太多的散射(Scatter),因而产生一个较小的高光点,而有些物体则会散射很多,产生一个有着更大半径的高光点。如果我们想要在OpenGL中模拟多种类型的物体,我们必须为每个物体分别定义一个材质(Mater

  • 这节课为大家讲解数组材质和三角形面Face3的材质索引属性.materialIndex。 数组材质 你可以测试把数组材质作为几何体的纹理贴图,所谓数组材质就是多个材质对象构成一个数组作为模型对象的材质。 var geometry = new THREE.BoxGeometry(100, 100, 100); //立方体 // var geometry = new THREE.PlaneGeomet

  • 我有一个mat select,其中的选项是数组中定义的所有对象。我试图将该值设置为其中一个选项的默认值,但是当页面呈现时,该值处于选中状态。 我的typescript文件包含: 我的HTML文件包含: 我已尝试将和

  • 材质的抽象基类。 材质描述了对象objects的外观。它们的定义方式与渲染器无关, 因此,如果您决定使用不同的渲染器,不必重写材质。 所有其他材质类型都继承了以下属性和方法(尽管它们可能具有不同的默认值)。 构造函数(Constructor) Material() 该方法创建一个通用材质。 属性(Properties) .alphaTest : Float 设置运行alphaTest时要使用的al