在Java 6上使用httpClient 4.3.6在客户端强制协议

时间:2018-03-08 07:30:06

标签: java ssl apache-httpclient-4.x java-6 sslv3

出于某些测试原因,我需要强制客户端使用SSLv3。 SSLv3是服务器中接受的协议。试图使用SSLContextBuilder.useProtocol(“SSLv3”)强行强制如下:

SSLContextBuilder发起如下:

....
....
Allow legacy hello messages: true
Is initial handshake: true
Is secure renegotiation: false
%% No cached client session
*** ClientHello, TLSv1
RandomCookie:  
GMT: 1503650935 
bytes = { 
255, 
....
....

但是日志中的结果显示握手总是在TLSv1中进行:

{{1}}

我的理解是,客户端应该请求服务器是否接受所定义的协议。在这种情况下,我希望看到客户端应该请求使用SSLv3而不是TLSv1。

1 个答案:

答案 0 :(得分:1)

这将迫使HC 4.3仅使用SSLv3

SSLConnectionSocketFactory sslSocketFactory = new SSLConnectionSocketFactory(
        SSLContext.getDefault(), new String[] {"SSLv3"}, null, SSLConnectionSocketFactory.STRICT_HOSTNAME_VERIFIER);
CloseableHttpClient httpClient = HttpClients.custom()
        .setSSLSocketFactory(sslSocketFactory)
        .build();