当前位置: 首页 > 面试题库 >

如何在apache HttpClient上设置TLS版本

常雪风
2023-03-14
问题内容

如何在HttpClient上更改受支持的TLS版本?

我正在做:

SSLContext sslContext = SSLContext.getInstance("TLSv1.1");
sslContext.init(
    keymanagers.toArray(new KeyManager[keymanagers.size()]),
    null,
    null);

SSLSocketFactory socketFactory = new SSLSocketFactory(sslContext, new String[]{"TLSv1.1"}, null, null);
Scheme scheme = new Scheme("https", 443, socketFactory);
SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(scheme);
BasicClientConnectionManager cm = new BasicClientConnectionManager(schemeRegistry);
httpClient = new DefaultHttpClient(cm);

但是当我检查创建的套接字时,它仍然说支持的协议是TLSv1.0,TLSv1.1和TLSv1.2。

实际上,我只希望它针对此特定HttpClient停止使用TLSv1.2。


问题答案:

解决方案是:

SSLContext sslContext = SSLContexts.custom()
    .useTLS()
    .build();

SSLConnectionSocketFactory f = new SSLConnectionSocketFactory(
    sslContext,
    new String[]{"TLSv1", "TLSv1.1"},   
    null,
    BROWSER_COMPATIBLE_HOSTNAME_VERIFIER);

httpClient = HttpClients.custom()
    .setSSLSocketFactory(f)
    .build();

不过,这需要org.apache.httpcomponents.httpclient4.3.x。



 类似资料:
  • 我在一个软件应用程序上工作,该应用程序使用gRPC在客户端和服务器之间建立双向流。 我正在寻找类似于这张票的答案的东西,只在java中:如何为gRPC启用服务器端SSL? 我想配置我的应用程序,以便他们可以选择他们想要使用的TLS场景: 场景1:明文(无加密) 场景2:服务器端TLS 场景3:共同TLS 对于TLS设置,我在非Android环境中使用Java,因此我只考虑使用https://git

  • 问题内容: 我使用RSA建立SSL我的春节,引导服务器(如何配置SSL /HTTPS的春天?通过以下)的指导: 使用创建了一个新的密钥库和密钥 将这些行放在我的application.properties文件中: 奇迹般有效。但是,当我通过运行生成AES 256密钥并将.properties文件更改为新的密钥存储区/密钥值时,对服务器的每个请求均导致。我应该遵循什么步骤来成功配置它? 问题答案:

  • 我有一个windows窗体应用程序,它是通过单击一次来部署的。该应用程序是用。net 4.7.2,它使用HttpClient API访问托管在内部服务器上的两个rest web服务。正如您所料,这些服务只能通过HTTPS访问,并且服务器配置为支持所有TLS版本(顺便说一句,这是2016 windows服务器)。 intranet客户端应用程序(即windows forms应用程序)部署在多个内部子

  • 我遵循每一个步骤来设置新的版本。 我已经有了,为了更新,我下载了 ....现在当我运行Android Studio时,它说: 错误:配置根项目“empty”时出现问题。 未能解析配置“:classpath”的所有依赖项。找不到com.android.tools.build:gradle:4.1。在以下位置搜索:文件:/c:/程序文件/android/android Studio1/gradle/m

  • 但在Wire shark软件中,我们看到客户端只在TLSV1中与服务器进行对话。 参考链接:https://superuser.com/questions/747377/enable-tls-1-1-and-1-2-for-clients-on-java-7 在和中。但仍然在Wire shark软件中,我们看到客户端只在TLSV1中与服务器进行对话。 谁能告诉我们如何在客户端和服务器上执行TLS1

  • 问题内容: 有没有办法将CentOS 7上的Python 3.5.2设置为默认的Python版本?目前,我已经默认安装了Python 2.7和Python 3.5.2。 我使用了以下命令 但是之后给出了错误。 问题答案: 如果这 不起作用(应该) 您可以使用以下命令在您的计算机中添加一个别名: 如果这不起作用,则应该只使用虚拟环境。阅读此页以开始使用。