首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使Apache Commons HttpClient 3.1忽略HTTPS证书无效?

关于如何使Apache Commons HttpClient 3.1忽略HTTPS证书无效,我们可以通过以下几个步骤来实现:

  1. 首先,需要导入Apache Commons HttpClient 3.1相关的依赖库,如下所示:
代码语言:xml<dependency>
复制
   <groupId>commons-httpclient</groupId>
   <artifactId>commons-httpclient</artifactId>
   <version>3.1</version>
</dependency>
  1. 接下来,我们需要创建一个自定义的SecureProtocolSocketFactory,用于忽略HTTPS证书验证。以下是一个简单的实现:
代码语言:java
复制
import org.apache.commons.httpclient.protocol.ProtocolSocketFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.io.IOException;
import java.net.InetAddress;
import java.net.Socket;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

public class TrustAllProtocolSocketFactory implements ProtocolSocketFactory {

    private SSLContext sslContext = null;

    public TrustAllProtocolSocketFactory() {
        try {
            this.sslContext = SSLContext.getInstance("SSL");
            this.sslContext.init(null, new TrustManager[]{new TrustAllTrustManager()}, null);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public Socket createSocket(String host, int port, InetAddress localAddress, int localPort) throws IOException {
        return this.sslContext.getSocketFactory().createSocket(host, port, localAddress, localPort);
    }

    @Override
    public Socket createSocket(String host, int port, InetAddress localAddress, int localPort, HttpConnectionParams params) throws IOException {
        return this.sslContext.getSocketFactory().createSocket(host, port, localAddress, localPort);
    }

    @Override
    public Socket createSocket(String host, int port) throws IOException {
        return this.sslContext.getSocketFactory().createSocket(host, port);
    }

    private static class TrustAllTrustManager implements X509TrustManager {

        @Override
        public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
        }

        @Override
        public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
        }

        @Override
        public X509Certificate[] getAcceptedIssuers() {
            return new X509Certificate[0];
        }
    }
}
  1. 然后,我们需要将自定义的TrustAllProtocolSocketFactory注册到Apache Commons HttpClient 3.1中,以便在使用HTTPS时忽略证书验证。以下是如何注册自定义的TrustAllProtocolSocketFactory的示例:
代码语言:java
复制
import org.apache.commons.httpclient.protocol.Protocol;
import org.apache.commons.httpclient.protocol.ProtocolSocketFactory;

public class HttpClientUtils {

    public static void registerTrustAllProtocolSocketFactory() {
        ProtocolSocketFactory protocolSocketFactory = new TrustAllProtocolSocketFactory();
        Protocol.registerProtocol("https", new Protocol("https", (ProtocolSocketFactory) protocolSocketFactory, 443));
    }
}
  1. 最后,在使用Apache Commons HttpClient 3.1之前,我们需要调用HttpClientUtils.registerTrustAllProtocolSocketFactory()方法来注册自定义的TrustAllProtocolSocketFactory。这样,Apache Commons HttpClient 3.1就会在使用HTTPS时忽略证书验证了。

请注意,这种方法会导致所有HTTPS连接都不进行证书验证,因此存在安全风险。在实际生产环境中,请务必谨慎使用。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

httpclient4.x访问https

如果这个证书不是向第三方权威机构申请的,浏览器会提示证书有问题(使用httpclient访问的话会报错)。如果忽略错误,则浏览器接受证书并解密响应,发送的数据也用此密钥加密。...前面说到,如果服务端的证书不是向第三方权威机构申请,使用httpclient访问会报错。解决办法由两种,第一种是将证书导入jre的密钥库的信任列表;第二种是让他不去验证服务端证书。...如果需要双向认证,还需要为httpclient指定客户端需要使用的证书。...package cloudolp; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory...); Scheme sch = new Scheme(“https”, 8443, socketFactory); httpClient.getConnectionManager().getSchemeRegistry

78610

如何Apache HttpClient 支持SSL配置?

Apache HttpClient 4和5 支持不需要校验证书的接收SSL请求,后文将会介绍如何编写发送带证书HTTPS请求的HttpClient工具类,以及个人如何在工作中实践工具类使用。...HttpClient 请求工具类:支持发送带证书HTTPS 上面介绍的都是服务端如何跳过证书校验的HTTPS请求。 下面介绍如何发送带证书HTTPS请求。...小结 本教程讨论了如何Apache HttpClient 配置 SSL,以便它能够接收任何 HTTPS URL,而不受证书的影响。...不过,这里需要注意,这些策略完全忽略证书检查,因此并不安全,只能在合理的情况下使用。 更低版本的Apache HttpClient 4可以查阅相关资料,这里就不做过多演示了。...参考资料 Apache HttpClient with SSL | Baeldung 各种证书后缀介绍 本部内容主要来自:SSL各种眼花迷乱的证书后缀_cer.36.ⅴip-CSDN博客 项目要用Https

39910
  • 最近学习了 HTTP 连接池

    HttpClient可以搜到两个类似的工具包,一个是commons-httpclientcommons-httpclient...commons-httpclient 3.1 一个是httpclient...即commons-httpclient是一个HttpClient老版本的项目,到3.1版本为止,此后项目被废弃不再更新(3.1版本,07年8.21发布),它已经被归入了一个更大的Apache HttpComponents...随着不断更新,HttpClient底层针对代码细节、性能上都有持续的优化,因此切记选择org.apache.httpcomponents这个groupId。...HTTPS原理不细讲了,反正大致上就是一个证书交换-->服务端加密-->客户端解密的过程,整个过程中反复地客户端+服务端交换数据是一个耗时的过程,且数据的加解密是一个计算密集型的操作消耗CPU资源,因此如果相同的请求能省去加解密这一套就能在

    1.5K10

    java(优化20) httpClient简介

    .*; import org.apache.commons.httpclient.methods.GetMethod; import org.apache.commons.httpclient.params.HttpMethodParams...这里有两种方法可以打开https连接,第一种就是得到服务器颁发的证书,然后导入到本地的keystore中;另外一种办法就是通过扩展HttpClient的类来实现自动接受证书。...取得并且导入证书证书可以通过IE来获得: 1. 用IE打开需要连接的https网址,会弹出如下对话框: 2....这个自定义的类必须实现接口org.apache.commons.httpclient.protocol.SecureProtocolSocketFactory,在实现接口的类中调用自定义的X509TrustManager...步骤二 创建一个org.apache.commons.httpclient.protocol.Protocol的实例,指定协议名称和默认的端口号Protocol myhttps = new Protocol

    89730

    .Net Core 3.0 gRPC部署问题解决

    Net Core客户端必须在https服务器地址中使用才能正确的使用安全连接) 2、信任证书(可行)   仔细查看错误,发现最后标明是证书无效。...这是想起我们在本地第一次运行的时候弹窗提示我们是否信任证书。好像就是这个关系了。照这个路子想下去。找到在如何安装 ASP.NET Core HTTPS 开发证书。然后我们再试试、果然就可以了。...dotnet dev-certs https --trust 3、忽略无效证书(可行)   后面又发现了一种解决方案,既然是证书无效导致的问题,那么忽略无效证书是不是可以呢?...在代码中加上忽略无效证书的代码。然后再次进行尝试发现也是可以的。...不过这里需要注意的是这个忽略无效证书在开发过程中使用即可,换到生产环境还是替换成有效证书        var httpClientHandler = new HttpClientHandler();

    1.5K30

    RestTemplate进阶:打开Basic Authorization的正确zishi,你知道吗

    生活就是练习.柬埔寨 原文链接:https://www.baeldung.com/how-to-use-resttemplate-with-basic-authentication-in-spring...和现在的4.x都对Apache HTTP库有很好的支持: 在Spring 3.0中,CommonsClientHttpRequestFactory集成了现在已经停止更新的HttpClient 3.x 在...Spring 3.1中,通过HttpComponentsClientHttpRequestFactory引入了对HttpClient 4.x的支持(在JIRA SPR-6180中添加的支持) 在Spring...总结 尽管Apache HttpClient的3.x开发分支已经停止更新,并且Spring对这个版本的支持也已经被完全废弃了,但是在 RestTemplate和安全性上找到的大部分信息仍然不能解释当前HttpClient...本文尝试通过循序渐进的方式来解读如何使用RestTemplate来配置 Basic身份认证以及如何使用它来消费一个受保护的REST API来改变这种情况。

    69610
    领券