httpclient跳过SSL证书验证的写法

最近在请求https接口的时候,发生了异常:

sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SuncertPathBuilderException: unable to find valid certification path to requested target

无法找到到请求目标的有效证书路径(据推测应该是服务端相关证书配置出现问题)

那么如何跳过SSL证书验证来发起https请求呢

try (
        CloseableHttpClient client = HttpClients.custom()
            .setSSLSocketFactory(
                new SSLConnectionSocketFactory(SSLContextBuilder.create().loadTrustMaterial(TrustAllStrategy.INSTANCE).build()),
                NoopHostnameVerifier.INSTANCE)
            )
            .build()
    ){
        // 然后就可以使用client绕过SSL验证请求接口了
    }

认识https

HTTPS,全称为 HyperText Transfer Protocol Secure,是一种用于在计算机网络上安全地传输数据的通信协议。它是 HTTP 协议的一种安全版本,通过在传输层添加加密(Encryption)和身份验证(Authentication)机制,确保了数据的安全性和完整性。HTTPS 在 Web 浏览器和 Web 服务器之间提供了一种加密的通信方式,以防止敏感信息在传输过程中被窃听或篡改。

关键特点包括:

  1. 加密传输: HTTPS 使用 SSL(Secure Sockets Layer)或其升级版 TLS(Transport Layer Security)协议来加密传输的数据。这意味着即使有人能够截获通信,也难以解读其中的内容。

  2. 身份验证: HTTPS 确保与用户交互的是正确的网站。网站会通过数字证书证明其身份,由受信任的证书颁发机构(CA,Certificate Authority)签发。用户的浏览器会验证证书的有效性,以确保他们正在与正确的服务器通信。

  3. 数据完整性: 通过加密,HTTPS 还提供了数据的完整性保护。这意味着在数据传输过程中,数据不会被篡改或损坏。

posted @ 2023-12-08 15:31  Ashe|||^_^  阅读(1004)  评论(0编辑  收藏  举报