Apache HttpClient没有实现任何TLS协议方面。它依靠JSSE API进行TLS /
SSL握手并建立安全的SSL会话。除了SSL主机名验证逻辑外,就TLS / SSL而言,Apache
HttpClient与其在其中运行的JRE一样安全(或易受攻击)。
更新: 默认情况下,HttpClient 4.3始终使用TLS,因此,除非明确将其配置为使用SSLv3,否则HttpClient 应该。
不容易受到基于POODLE的攻击
事实证明这是错误的。一个 必须 从支持的协议列表中明确删除SSLv3!
SSLContext sslContext = SSLContexts.custom() .useTLS() // only this turned out to be not enough .build();SSLConnectionSocketFactory sf = new SSLConnectionSocketFactory( sslContext, new String[] {"TLSv1", "TLSv1.1", "TLSv1.2"}, null, SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER);CloseableHttpClient client = HttpClients.custom() .setSSLSocketFactory(sf) .build();更新2: 从版本4.3.6开始,HttpClient默认禁用所有版本的SSL(包括SSLv3)。



