我想知道apache cxf 3.1.6是否支持TLS1.2
我查看了Apache的文档,发现没有与TLS1.2相关的信息 http://cxf.apache.org/docs/tls-configuration.html
我还尝试将“secureSocketProtocol”设置为“TLSv2”,但最终在日志中收到“TLSv2 SSLContext不可用”。
非常感谢这方面的任何帮助。
答案 0 :(得分:1)
我在Apache httpClient中使用自定义ssl上下文在Java 7中打开TLSv1.2(默认情况下不启用),因此您应该能够在CXF中打开它。在Java 8中,它应该默认使用它。我会尝试使用
TLSv1.2工作
作为参数,如果您使用配置。
如果这不起作用,您可以尝试使用自定义SSL工厂。
// enable tls v1.1 and v1.2 on JRE 7
String jreVersion = System.getProperty("java.version");
if (jreVersion.startsWith("1.7")){
try {
SSLContext sslcontext = SSLContexts.custom().build();
// Allow TLSv1.1 and 1.2 protocol only
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslcontext,
new String[] { "TLSv1.1", "TLSv1.2" }, null,
SSLConnectionSocketFactory.getDefaultHostnameVerifier());
customClient.setSSLSocketFactory(sslsf); // set the httpClient custom factory
} catch (KeyManagementException | NoSuchAlgorithmException e) {
e.printStackTrace();
throw e;
}
}
让CXF使用自定义套接字工厂已被回答on this SO question