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 服务器之间提供了一种加密的通信方式,以防止敏感信息在传输过程中被窃听或篡改。
关键特点包括:
加密传输: HTTPS 使用 SSL(Secure Sockets Layer)或其升级版 TLS(Transport Layer Security)协议来加密传输的数据。这意味着即使有人能够截获通信,也难以解读其中的内容。
身份验证: HTTPS 确保与用户交互的是正确的网站。网站会通过数字证书证明其身份,由受信任的证书颁发机构(CA,Certificate Authority)签发。用户的浏览器会验证证书的有效性,以确保他们正在与正确的服务器通信。
数据完整性: 通过加密,HTTPS 还提供了数据的完整性保护。这意味着在数据传输过程中,数据不会被篡改或损坏。