gpt4 book ai didi

ssl - 为什么 Apache HttpClient 4.4 拒绝将 www.googleapis.com 作为有效的主机名?

转载 作者:太空宇宙 更新时间:2023-11-03 12:43:29 24 4
gpt4 key购买 nike

我最近从 4.3 切换到 HttpClient 4.4,我得到了 SSLPeerUnverifiedException 说:

Host name 'www.googleapis.com' does not match the certificate subject provided by the peer (CN=*.googleapis.com, O=Google Inc, L=Mountain View, ST=California, C=US)

问题来自于 HttpClient 现在使用 publicsuffix.org 的事实验证列表(参见 SSLConnectionSocketFactory.java 的源代码)。

解决此问题的一种方法是关闭主机名验证:

CloseableHttpClient httpClient = HttpClients.custom().
setSSLHostnameVerifier(new NoopHostnameVerifier()).build();

...但我试图理解为什么客户端不匹配通配符以及为什么它被认为过于宽泛 ( reference )。

RFC2818 spec说:

Names may contain the wildcard
character * which is considered to match any single domain name
component or component fragment. E.g., *.a.com matches foo.a.com but
not bar.foo.a.com. f*.com matches foo.com but not bar.com.

这是否意味着 HttpClient 4.4 不遵守规范?

最佳答案

这与通配符匹配本身无关。从版本 4.4 开始,HttpClient 根据 public domain suffix 检查证书身份Mozilla 维护的列表,以确保证书主题或替代名称中的通配符仅适用于非公共(public)域。例如,*.com*.co.uk 等模式应该被拒绝,因为它们过于宽泛而无法防止它们被滥用。

无论好坏,PSL 现在还包含列表维护者所称的“私有(private)域”(对于公共(public)域后缀列表来说,这是一个非常令人困惑的术语)。 googleapis.com 就是这样的域之一。从下一个功能版本 (4.5) 开始,HttpClient 将正确处理“私有(private)”域。详情见HTTPCLIENT-1613

关于ssl - 为什么 Apache HttpClient 4.4 拒绝将 www.googleapis.com 作为有效的主机名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29124161/

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