首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何忽略ApacheSSL4.0中的HttpClient证书错误

如何忽略ApacheSSL4.0中的HttpClient证书错误
EN

Stack Overflow用户
提问于 2010-04-24 11:59:17
回答 15查看 291.8K关注 0票数 150

如何使用ApacheSSL4.0绕过无效的HttpClient证书错误?

EN

回答 15

Stack Overflow用户

回答已采纳

发布于 2010-04-24 12:32:22

您需要使用自己的TrustManager创建一个SSLContext,并使用此上下文创建HTTPS方案。这是代码,

代码语言:javascript
复制
SSLContext sslContext = SSLContext.getInstance("SSL");

// set up a TrustManager that trusts everything
sslContext.init(null, new TrustManager[] { new X509TrustManager() {
            public X509Certificate[] getAcceptedIssuers() {
                    System.out.println("getAcceptedIssuers =============");
                    return null;
            }

            public void checkClientTrusted(X509Certificate[] certs,
                            String authType) {
                    System.out.println("checkClientTrusted =============");
            }

            public void checkServerTrusted(X509Certificate[] certs,
                            String authType) {
                    System.out.println("checkServerTrusted =============");
            }
} }, new SecureRandom());

SSLSocketFactory sf = new SSLSocketFactory(sslContext);
Scheme httpsScheme = new Scheme("https", 443, sf);
SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(httpsScheme);

// apache HttpClient version >4.2 should use BasicClientConnectionManager
ClientConnectionManager cm = new SingleClientConnManager(schemeRegistry);
HttpClient httpClient = new DefaultHttpClient(cm);
票数 90
EN

Stack Overflow用户

发布于 2014-06-23 23:47:30

所有其他答案要么被弃用,要么在HttpClient 4.3上不起作用。

这是一种在构建http客户端时允许所有主机名的方法。

代码语言:javascript
复制
CloseableHttpClient httpClient = HttpClients
    .custom()
    .setHostnameVerifier(new AllowAllHostnameVerifier())
    .build();

或者,如果您使用的是4.4或更高版本,则更新后的调用如下所示:

代码语言:javascript
复制
CloseableHttpClient httpClient = HttpClients
    .custom()
    .setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE)
    .build();
票数 121
EN

Stack Overflow用户

发布于 2012-05-02 00:09:55

根据记录,在HttpClient 4.1中有一种更简单的方法来完成同样的任务

代码语言:javascript
复制
    SSLSocketFactory sslsf = new SSLSocketFactory(new TrustStrategy() {

        public boolean isTrusted(
                final X509Certificate[] chain, String authType) throws CertificateException {
            // Oh, I am easy...
            return true;
        }

    });
票数 33
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2703161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档