javax.net.ssl.SSLPeerUnverifiedException:未验证主机名XXX,因为没有自签名证书

时间:2018-02-07 17:43:45

标签: java android https okhttp okhttp3

问题

最近,我注意到在简单javax.net.ssl.SSLPeerUnverifiedException超过GET期间,1-0.5%的用户面临HTTPS

但它们看起来很有趣:异常消息包含证书信息,根据此信息证书与我的服务器无关,例外的例子是:

  

javax.net.ssl.SSLPeerUnverifiedException:未验证主机名XXX:       证书:sha256 / AUSXlKDCf1X30WhWeAWbjToABfBkJrKWPL6KwEi5VH0 =       DN:CN = hautdebitmobile.orange.fr,OU = Orange France,O = Orange,L = Paris,ST = Paris,C = FR       subjectAltNames:[hautdebitmobile.orange.fr]

     

javax.net.ssl.SSLPeerUnverifiedException:未验证主机名XXX:       证书:sha256 / LKtpdq9q7F7msGK0w1 + b / gKoDHaQcZKTHIf9PTz2u + U =       DN:CN = wireless.wifirst.net,OU = Gandi标准SSL,OU =域控制验证       subjectAltNames:[wireless.wifirst.net,www.wireless.wifirst.net]

     

javax.net.ssl.SSLPeerUnverifiedException:未验证主机名XXX:       证书:sha256 / TfZXN7z9Tky / Z84sfOJcq4lhD3kNY4fPp3gKUZ27ekE =       DN:CN = .internet-access.center,OU = Gandi标准通配符SSL,OU =域控制验证       subjectAltNames:[ .internet-access.center,internet-access.center]

     

javax.net.ssl.SSLPeerUnverifiedException:未验证主机名XXX:       证书:sha256 / Bx0LzMlqtgOKRIfUR4cQfb7yDy + 3iotESgqk9HvWTOA =       DN:CN = .nomosphere.fr,OU = Gandi标准通配符SSL,OU =域控制验证       subjectAltNames:[ .nomosphere.fr,nomosphere.fr]

     

javax.net.ssl.SSLPeerUnverifiedException:未验证主机名XXX:       证书:sha256 / zaV2Aw1A742R1 + WpXWvL5atsJbGmeSS6dzZOfe6f1Yw =       DN:CN = login.globalsuite.net,OU = COMODO SSL Unified Communications,OU =域控制已验证       subjectAltNames:[login.globalsuite.net,* .gtkcentral.net,* .gtkserver.net]

     

javax.net.ssl.SSLPeerUnverifiedException:未验证主机名XXX:       证书:sha256 / UwOkRGMlP0K / mKNJdpQ0sTg2ean9Tje8UTOvFYzt1GE =       DN:CN = login.netinary.net,OU =安全,O = NETINARY,L = MARSEILLE,ST = Bouches-du-Rhône,C = FR       subjectAltNames:[login.netinary.net]

首先看看这些证书看起来像是随机的,但经过快速研究后我发现那里提到的域名与互联网提供商有关

问题

  • 当最终用户无法访问互联网并且只是重定向到提供商特定网站(登录,或者记入一些钱)时,是否可能发生此异常?

1 个答案:

答案 0 :(得分:1)

您的假设可能是正确的。

似乎有一个中间人(MitM)拦截了流量,从而创建了Java不接受的证书(自签名证书或中间CA)。

默认情况下,Java仅在根目录接受来自受信任CA的证书。受信任的证书位于Java安装中的文件cacerts中。