gpt4 book ai didi

Java http 客户端和 POODLE

转载 作者:太空狗 更新时间:2023-10-29 22:43:10 26 4
gpt4 key购买 nike

关于 POODLE 漏洞,如果我理解正确的话,它需要一个客户端在无法与使用服务器通告的更高版本协议(protocol)的服务器建立安全通道时自动将 TLS 协议(protocol)降级为 SSLv3。

常见的 java HTTP 客户端库,特别是 javax.net.ssl.HttpsURLConnection 和 Apache HttpClient,是否会在无法与服务器建立 TLS session 时自动降级 TLS 协议(protocol)?如果不是,我是否正确认为它们不受 POODLE 攻击的影响,除非 (a) 服务器仅支持 SSLv3,或者 (b) 更高级别的逻辑执行降级?

我正在寻找类似 http://blog.hagander.net/archives/222-A-few-short-notes-about-PostgreSQL-and-POODLE.html 的内容但对于 Java 客户端。

最佳答案

Apache HttpClient 不实现任何 TLS 协议(protocol)方面。它依靠 JSSE API 进行 TLS/SSL 握手并建立安全的 SSL session 。除了 SSL 主机名验证逻辑之外,就 TLS/SSL 而言,Apache HttpClient 与其运行的 JRE 一样安全(或易受攻击)。


更新: 默认情况下,HttpClient 4.3 总是使用 TLS,因此,除非明确配置它使用 SSLv3 HttpClient 应该不容易受到基于 POODLE 的攻击

事实证明这是错误的。一个 必须从支持的协议(protocol)列表中明确删除 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)。

关于Java http 客户端和 POODLE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26429751/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com