Apache HttpClient 4.3 and x509 client certificate to authenticate

前端 未结 3 1669
醉话见心
醉话见心 2020-12-09 23:39

now I looking for solution regarding task how to rewrite deprecated solution for client side x509 certificate authentication via HttpComponentsMessageSender (not relevant).<

3条回答
  •  轮回少年
    2020-12-09 23:53

    Below is the code for HttpClient 4.4+ (updated @Daniyar code for 4.4+)

    import org.apache.http.config.Registry;
    import org.apache.http.config.RegistryBuilder;
    import org.apache.http.conn.socket.ConnectionSocketFactory;
    import org.apache.http.conn.socket.PlainConnectionSocketFactory;
    import org.apache.http.conn.ssl.DefaultHostnameVerifier;
    import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
    import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClientBuilder;
    import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
    import org.apache.http.ssl.SSLContexts;
    
    public static CloseableHttpClient createApacheHttp4ClientWithClientCertAuth() {
        try {
            SSLContext sslContext = SSLContexts
                    .custom()
                    .loadTrustMaterial(null, new TrustSelfSignedStrategy())
                    .build();
    
            SSLConnectionSocketFactory sslConnectionFactory = new SSLConnectionSocketFactory(sslContext,
                    new DefaultHostnameVerifier());
    
            Registry registry = RegistryBuilder. create()
                    .register("https", sslConnectionFactory)
                    .register("http", new PlainConnectionSocketFactory())
                    .build();
    
            HttpClientBuilder builder = HttpClientBuilder.create();
            builder.setSSLSocketFactory(sslConnectionFactory);
            builder.setConnectionManager(new PoolingHttpClientConnectionManager(registry));
    
            return builder.build();
        } catch (Exception ex) {
    
            return null;
        }
    }
    

提交回复
热议问题