对于一个项目,我想测试是否有人篡改SSL连接。HttpsUrlConnection
使用的是用固定证书的SSLContext
。
我的问题是:如果我得到 sslexception ,例如。有人试图伪造错误的证书,是否有任何方法可以获取有关该证书的详细信息?
在计算机上,使用浏览器(取决于浏览器和版本),我将获得证书警告,并可以选择查看有关证书的详细信息。
我想知道,是否有任何方法可以使用HttpsUrlConnection
或其他可能性? getServerCertificates()
目前将无法使用,因为尚未建立连接,我没有其他选项。
事实证明,从Android SDK 22开始,抛出的例外已经包括有关证书的详细信息。
我可以目睹运行Android 21的设备会抛出IOException
(未经验证的主机名),而Android 22也抛出了SSLPeerUnverifiedException
,也提供了有关证书的详细信息。