TLSv1.2 + BouncyCastle + Apache httpclient 4.4

时间:2016-01-26 21:50:27

标签: ssl bouncycastle java-6

参考How to use TLS 1.2 in Java 6中提供的解决方案,是否可以将TSLSocketConnectionFactory与Apache HttpClient4.4一起使用。

此致 j

1 个答案:

答案 0 :(得分:4)

你应该可以像以下一样在HttpClient中使用TSLSocketConnectionFactory:

SSLConnectionSocketFactory sf = new SSLConnectionSocketFactory(new TLSSocketConnectionFactory(), new String[]{"TLSv1.2"}, null, new DefaultHostnameVerifier());
HttpClient client = HttpClientBuilder.create()
            .setSSLSocketFactory(sf)
            .build();

您可能需要在TSLSocketConnectionFactory中更改某些SSLSession方法实现。

在我的情况下,当我尝试将它与HttpClient一起使用时,我不得不更改以下内容:

在SSLSocket()实现:

@Override
public String[] getEnabledCipherSuites() {          
    // return null;
    return new String[]{""};
}

@Override
public String[] getEnabledProtocols() {
    // return null;
    return new String[]{""};
 }

在SSLSession()实现:

 @Override
 public String getProtocol() {
 // throw new UnsupportedOperationException();
    return null;
 }
 @Override
 public String getProtocol() {
 // throw new UnsupportedOperationException();
    return "";
 }
 @Override
 public String getCipherSuite() {
 // throw new UnsupportedOperationException();
    return "":
 }