如何更改我的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。
事实上,我只是希望它停止使用TLSv1.2,对于这个特定的HttpClient。
HttpClient-4.5,使用TLSv1。2、您必须这样编码:
//Set the https use TLSv1.2
private static Registry<ConnectionSocketFactory> getRegistry() throws KeyManagementException, NoSuchAlgorithmException {
SSLContext sslContext = SSLContexts.custom().build();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext,
new String[]{"TLSv1.2"}, null, SSLConnectionSocketFactory.getDefaultHostnameVerifier());
return RegistryBuilder.<ConnectionSocketFactory>create()
.register("http", PlainConnectionSocketFactory.getSocketFactory())
.register("https", sslConnectionSocketFactory)
.build();
}
public static void main(String... args) {
try {
//Set the https use TLSv1.2
PoolingHttpClientConnectionManager clientConnectionManager = new PoolingHttpClientConnectionManager(getRegistry());
clientConnectionManager.setMaxTotal(100);
clientConnectionManager.setDefaultMaxPerRoute(20);
HttpClient client = HttpClients.custom().setConnectionManager(clientConnectionManager).build();
//Then you can do : client.execute(HttpGet or HttpPost);
} catch (KeyManagementException | NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
这就是我如何让它在http客户端4.5上工作(根据橄榄树请求):
CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(
new AuthScope(AuthScope.ANY_HOST, 443),
new UsernamePasswordCredentials(this.user, this.password));
SSLContext sslContext = SSLContexts.createDefault();
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext,
new String[]{"TLSv1", "TLSv1.1"},
null,
new NoopHostnameVerifier());
CloseableHttpClient httpclient = HttpClients.custom()
.setDefaultCredentialsProvider(credsProvider)
.setSSLSocketFactory(sslsf)
.build();
return httpclient;
解决办法是:
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虽然。
问题内容: 如何在HttpClient上更改受支持的TLS版本? 我正在做: 但是当我检查创建的套接字时,它仍然说支持的协议是TLSv1.0,TLSv1.1和TLSv1.2。 实际上,我只希望它针对此特定HttpClient停止使用TLSv1.2。 问题答案: 解决方案是: 不过,这需要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。 我使用了以下命令 但是之后给出了错误。 问题答案: 如果这 不起作用(应该) 您可以使用以下命令在您的计算机中添加一个别名: 如果这不起作用,则应该只使用虚拟环境。阅读此页以开始使用。
我的项目使用Android Volley网络框架已经很久了,但是最近我发现了一个发布在互联网上的SSL 3.0协议bug。 我想知道如何找出我的项目使用的TLS版本,以及如何确认库是否更新。 这是我的源代码片段: 我认为重点是HurlStack类,它取决于包,但是我不知道TLS/SSL配置在哪里。