测试 SSL 攻击 - 可以在 SSLException 之后提取服务器证书吗?

Test for SSL attacks - possible to extract certificate of server after SSLException?

为了一个项目,我想测试一下是否有人在篡改SSL连接。 HttpsUrlConnection 正在使用带有固定证书的 SSLContext

我的问题是:万一我收到 SSLException,例如有人试图伪造错误的证书,有什么方法可以获取有关该证书的详细信息吗?

在计算机上,使用浏览器(取决于浏览器和版本)我会收到证书警告,并可以选择查看有关证书的详细信息。

我想知道,是否有任何方法可以使用 HttpsUrlConnection 获得此信息,或者是否还有其他可能性? getServerCertificates()此时将不起作用,因为连接尚未建立,我看不到其他选项..

原来从AndroidSDK 22开始,抛出的异常已经包含了证书的详细信息。

我可以看到设备 运行 Android 21 会抛出 IOException(主机名未验证),而 Android 22 会抛出 SSLPeerUnverifiedException ,还提供有关证书的详细信息。