HostnameVerifier与TrustManager?

jww*_*jww 3 java ssl https jsse

在什么情况下一个用HostnameVerifierTrustManagerJava中?一个推荐超过另一个?看看Java文档(Interface HostnameVerifierInterface TrustManager),我无法分辨它何时最好使用(虽然TrustManager看起来更通用).

在过去,我一直使用自定义TrustManager.但是,我注意到java中的Heartbleed漏洞使用了两者(但我不认为它是正确的).

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

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

use*_*421 7

在什么情况下,在Java中的TrustManager上使用HostnameVerifier?

决不.他们做不同的事情.TrustManage将证书作为SSL的一部分进行身份验证.HostnameVerifier验证主机名作为HTTPS的一部分.他们没有参加比赛.

一个推荐超过另一个?

没有.

编辑

  • TrustManagerTLS握手过程中运行.如果指示失败,则中止握手并且连接失败.
  • HostnameVerifier运行之后 TLS握手,通过TLS连接是已经从视TLS点有效,所以在这一点上,你知道该证书是有效的,由受信任的发布者签名的,未过期的(?)等,你所要做的就是决定(a)它是来自正确的服务器还是(b)你是否信任该服务器.你可以做(​​b)在一个内部,TrustManager,但更常见的是你根本不提供自己TrustManager的.