当前位置: 首页 > 知识库问答 >
问题:

限制SSLContext中的protcols

胥良平
2023-03-14
DefaultHttpClient httpClient = new DefaultHttpClient();
SSLContext ctx = SSLContext.getInstance("SSLv3");
TrustManager[] trustManagers = getTrustManagers("jks", new FileInputStream(new File("C:\\SSLKeyStore.ks")), "changeit");
ctx.init(null, trustManagers, new SecureRandom());
System.out.println("Context Protocol - " + ctx.getProtocol());

SSLSocketFactory factory = new SSLSocketFactory(ctx);
factory.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

ClientConnectionManager manager = httpClient.getConnectionManager();
manager.getSchemeRegistry().register(new Scheme("https", 443, factory));

HttpGet httpget = new HttpGet("https://localhost:8844/getData");

System.out.println("executing request" + httpget.getRequestLine());

HttpResponse response = httpClient.execute(httpget);

问题是当我启用'javax.net.debug=ssl'时,在我看到的日志中,我的客户机正在使用TLSv1,而我的服务器正在通过SSLv3进行正确的通信。下面是原木的样子,

*** ClientHello, TLSv1
***
main, WRITE: TLSv1 Handshake, length = 149
main, READ: SSLv3 Handshake, length = 1353
*** ServerHello, SSLv3

当我打印支持的协议时,我看到“SSLv3,TLSV1”,因此我猜客户端显示的是更高版本的协议。

但这里的问题是我如何限制客户端只使用“SSLv3”。我还尝试设置https.protocols=“sslv3”。但这也无济于事。

提前道谢。

维姬

共有1个答案

子车俊哲
2023-03-14

找到了解决办法

如果我子类SSLSocketFactory并将createSocket方法重写为“SetEnabledProtocols”'SSLv3'。则通信与给定的完全相同,即客户端和服务器都使用SSLv3进行通信。

下面是调试交换,

*** ClientHello, SSLv3
***
main, WRITE: SSLv3 Handshake, length = 149
main, READ: SSLv3 Handshake, length = 1353
*** ServerHello, SSLv3
 类似资料:
  • 问题内容: 我正在通过migrations.changeColumn函数在迁移中添加一个约束。 添加约束是可行的,但是由于您需要提供Possibly unhandled SequelizeDatabaseError: relation “myAttribute_unique_idx” already exists`。 (使用的数据库是postgres) 我也尝试过使用removeIndex 但是在

  • 我正在编写一个Java TLS客户端。关于如何最安全地使用SSLContext类,我有几个问题,以便在可能的情况下使用TLS,并且只有在TLS不可用时才使用SSLv3。(附带说明:我看到文档中说TLS1.1和TLS1.2由于某些供应商产品的不兼容问题而对客户端禁用)。 是否仅使用SSL协议,或者是否使用TLS协议(如果它们可用)? 使用时,默认的协议是什么,它们的优先顺序是什么? 是否仅使用TLS

  • 问题内容: 我正在用GRequests和lxml在Python 2.7.3中编写一个小脚本,这将允许我从各个网站收集一些可收集的卡价格并进行比较。问题是网站之一限制了请求的数量,如果我超过了它,则会发回HTTP错误429。 有没有一种方法可以限制GRequestes中的请求数量,以使我不超过我指定的每秒请求数量?另外-如果发生HTTP 429,如何让GRequestes在一段时间后重试? 附带说明

  • 我正在用Python 2.7.3编写一个小脚本,其中包含GRequests和lxml,它将允许我从各种网站收集一些可收集的卡价格并进行比较。问题是其中一个网站限制了请求的数量,如果我超过它,就会发回HTTP错误429。 有没有办法在grequests中增加限制请求数,这样我就不会超过我指定的每秒请求数?还有——如果HTTP 429出现,我如何让GRequestes在一段时间后重试? 另一方面,他们

  • 我目前正在制作一个游戏,我想限制每秒的帧数,但我对此有问题。这是我正在做的: 我通过每个帧执行的这个方法获取deltaTime: DeltaTime是有我所期望的值(大约0.012......到0.016...) 然后,我使用deltaTime通过睡眠窗口函数来延迟帧,如下所示: MAXFPS等于60,我乘以1000将秒转换为毫秒。虽然一切似乎都是正确的,但我的帧速率仍然超过了60帧(我的帧频约为

  • 还有,既然可以指定要使用的安全提供程序,那么我应该使用哪个提供程序呢? 谢谢