在Java HttpClient中,可以通过配置SSLContext来忽略SSL握手异常,具体代码如下:

import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;

import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

public class HttpClientIgnoreSSLHandshakeException {

    public static void main(String[] args) throws NoSuchAlgorithmException, KeyManagementException {
        // 创建信任管理器,用于忽略SSL握手异常
        TrustManager[] trustAllCerts = new TrustManager[] {
                new X509TrustManager() {
                    public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {}
                    public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {}
                    public X509Certificate[] getAcceptedIssuers() {
                        return null;
                    }
                }
        };

        // 创建SSL上下文,并设置信任管理器
        SSLContext sslContext = SSLContext.getInstance("TLS");
        sslContext.init(null, trustAllCerts, null);

        // 创建SSL连接工厂,并设置SSL上下文
        SSLConnectionSocketFactory sslSocketFactory = new SSLConnectionSocketFactory(sslContext, new NoopHostnameVerifier());

        // 创建HttpClient实例,并设置SSL连接工厂
        CloseableHttpClient httpClient = HttpClients.custom()
                .setSSLSocketFactory(sslSocketFactory)
                .build();

        // 使用httpClient发送请求
        // ...

        // 关闭httpClient连接
        httpClient.close();
    }
}

在上面的代码中,我们创建了一个信任管理器trustAllCerts,该管理器忽略了所有的SSL握手异常。然后,我们创建了SSL上下文sslContext,并将信任管理器设置到上下文中。接下来,我们创建了SSL连接工厂sslSocketFactory,并将SSL上下文设置到工厂中。最后,我们创建了HttpClient实例httpClient,并将SSL连接工厂设置到httpClient中。

请注意,忽略SSL握手异常存在安全风险,因为它将接受所有证书,包括无效或伪造的证书。在生产环境中,建议使用有效的证书或配置信任的证书来解决SSL握手异常

javaxnetsslSSLHandshakeException Failed to parse server certificates。java httpclient 代码怎么处理可以忽略这个错误吗?

原文地址: https://www.cveoy.top/t/topic/iDsy 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录