gpt4 book ai didi

java - HostnameVerifier 与 TrustManager?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:26:30 26 4
gpt4 key购买 nike

在什么情况下会在 Java 中使用 HostnameVerifier 而不是 TrustManager?一个比另一个推荐吗?查看 Java 文档(Interface HostnameVerifierInterface TrustManager),我不知道什么时候最好使用它们(尽管 TrustManager 似乎更通用)。

过去,我一直使用自定义的 TrustManager。但是,我注意到 Heartbleed exploit in java两者都用(但我认为它不正确)。

编辑:使用HostnameVerifier 时,是否执行了其他惯常的 X509 检查,例如路径构建、过期和撤销(如果已配置)?我想我本质上是在问 HostnameVerifier 是否补充了其他检查(而不是替换它们)。

例如,假设开发服务器位于 dev.example.com 并且由内部 CA 签名。 dev.example.com 的证书及其 dev.example.com 中有一个 DNS 名称。此外,假设我以 192.168.1.10 连接到它。我可以使用 HostnameVerifier 来允许 dev.example.com192.168.1.10 吗?在这种情况下,是否允许额外的名称​​和是否执行了其他惯常的 X509 检查?

最佳答案

Under what circumstances would one use a HostnameVerifier over a TrustManager in Java?

从来没有。他们做不同的事情。 TrustManage 将证书作为 SSL 的一部分进行身份验证。 HostnameVerifier 验证主机名作为 HTTPS 的一部分。他们没有竞争。

Is one recommended over the other?

没有。

编辑

  • TrustManager 在 TLS 握手期间运行。如果它指示失败,则握手中止并且连接失败。
  • HostnameVerifier 在 TLS 握手之后 运行,通过从 TLS 角度来看已经有效的 TLS 连接,因此此时您知道证书是有效、由受信任的发行者签名、未过期 (?) 等,您所要做的就是决定 (a) 它是否来自正确的服务器以及 (b) 您是否信任该服务器。您可以在 TrustManager 中执行 (b),但更常见的是您根本不会提供自己的 TrustManager

关于java - HostnameVerifier 与 TrustManager?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23591513/

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