那里。我需要与https://free.temafon.ru建立 https 连接,但我在 Android 2.3 及更低版本上遇到了 CertPathValidatorException。我做了什么。
- 使用 Firefox从https://free.temafon.ru获取所有证书。
- 从 temefon 证书到根证书依次导入 keystore 中的证书。
初始化 ssl 上下文:
最终 KeyStore 密钥库 = KeyStore.getInstance("BKS");
keystore.load(getResources().openRawResource(R.raw.temafon), "W0d3Uoa5PkED".toCharArray()); final TrustManager trustManager = new TemafonTrustManager(keystore); final SSLContext sslContext = SSLContext.getInstance("TLS"); sslContext.init(null, new TrustManager[] { trustManager }, null); HttpsURLConnection.setDefaultSSLSocketFactory(sslContext .getSocketFactory());
在这里,我使用自定义 TrustManager,因为服务器以错误的顺序发送证书。
此代码在 Android 4.0 上运行良好,但在 2.3 上因 java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
我做错了什么而失败?
我创建了一个测试项目,可以在这里找到。