程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

如何使用HostnameVerifier?

发布于2021-05-21 17:51     阅读(1146)     评论(0)     点赞(10)     收藏(4)


我现在正在尝试使用KeyManager和TrustManager进行SSL配置,除了HostNameVerifier部分之外,其他一切对我来说似乎都很清楚。

我已阅读以下内容:
https : //docs.oracle.com/javase/7/docs/api/javax/net/ssl/HostnameVerifier.html
https://lightbend.github.io/ssl-config/HostnameVerification.html

因此,基本上,当请求的URL与证书中的URL不匹配时,它才生效。

处理此问题的最佳做法是什么?

 new HostnameVerifier() {
        @Override
        public boolean verify(String hostname, SSLSession session) {
          // some code
        }
    };

从安全性(就像中间攻击的人)的角度来看,我认为它必须一直返回false,但是在这种情况下,这件事的目的是什么?
无论如何,大多数时候我在互联网上冲浪时都会遇到返回原始“ true”的解决方案(对参数不做任何工作)。

所以它使我感到困惑,何时,为什么以及如何使用它。

您能详细说明一下吗?


解决方案


从安全性(就像处于中间攻击中的人)的角度来看,我认为它必须始终返回false。

几乎正确。仅当默认验证检测到问题时才调用此方法。在几乎所有情况下,此类问题都意味着应中止连接以确保其安全。

无论如何,大多数时候我在互联网上冲浪时都会遇到返回原始“ true”的解决方案(对参数不做任何工作)。

这几乎是错误的。此类代码的作者通常不理解其含义(如您正确所说的可能是MITM),而只是希望他们的代码以某种方式工作。是的,它可以工作,但在不安全的时候也可以工作,即它是不安全的。

默认验证失败的典型原因是服务器配置错误的证书不正确或使用错误的主机名(即不是证书中的主机名)访问服务器。

所以它使我感到困惑,何时,为什么以及如何使用它。

仅当您知道主机返回的主题错误时,才应使用该证书,但您也知道究竟是什么错误,并将在实现过程中正确验证这一期望。

当然,最好不要在所有访问服务器的应用程序中都解决,而要解决实际问题。根据问题的真正原因,这通常意味着在服务器上固定证书或固定用于访问服务器的主机名。



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.javaheidong.com/blog/article/198434/bf998164e7378f916a89/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

10 0
收藏该文
已收藏

评论内容:(最多支持255个字符)