我的Android应用需要支持通过TLS连接到不受信任的服务器。我通过使用自定义SSLSocketFactory
安装自定义X509TrustManager
来处理此问题,该自定义WebViewClient
显示一个对话框,要求用户确认连接。我还通过覆盖onReceivedSslError
的{{1}}回调(导致this question)来解决此问题。
这些X509Certificate
只是公钥,所以如果它们以明文形式存储则无关紧要。但是,我可以存储它们以便系统自动处理验证吗?现在,我只是将它们放在Set<String>
SharedPreferences
中,并检查我收到的针对该Set<String>
的任何不受信任的证书。理想情况下,有一种方法可以将它们放入默认信任库,然后在用户注销时从默认信任库中清除它们。