参考How to use TLS 1.2 in Java 6中提供的解决方案,是否可以将TSLSocketConnectionFactory与Apache HttpClient4.4一起使用。
此致 j
答案 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 "":
}