编程语言
首页 > 编程语言> > java – HostnameVerifier与TrustManager?

java – HostnameVerifier与TrustManager?

作者:互联网

在什么情况下,在Java中的TrustManager上使用HostnameVerifier?一个推荐超过另一个?看看Java文档(Interface HostnameVerifierInterface TrustManager),我不知道什么时候使用它们(尽管TrustManager似乎更通用).

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

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

例如,假设dev服务器位于dev.example.com并且由内部CA签名. dev.example.com的证书中有一个DNS名称及其dev.example.com.此外,假设我连接到192.168.1.10.我可以使用HostnameVerifier来同时允许dev.example.com和192.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握手期间运行.如果指示失败,则中止握手并且连接失败.
> HostLSVerifier在TLS握手之后运行,通过TLS连接从TLS的角度来看已经有效,所以此时您知道证书有效,由受信任的颁发者签名,未过期(?)等你需要做的就是决定(a)它是来自正确的服务器,还是(b)你是否信任该服务器.您可以()在TrustManager中执行,但更常见的是您根本不会提供自己的TrustManager.

标签:java,ssl,https,jsse
来源: https://codeday.me/bug/20190825/1715495.html