TLSv1.2 + BouncyCastle + Apache httpclient 4.4

问题描述:

参考How to use TLS 1.2 in Java 6中提供的解决方案,是否可以将TSLSocketConnectionFactory与Apache HttpClient4.4配合使用。TLSv1.2 + BouncyCastle + Apache httpclient 4.4

问候, Ĵ

您应该能够使用TSLSocketConnectionFactory与HttpClient的类似以下内容:

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 "": 
}