那里。我需要与https://free.temafon.ru建立https连接,但我在Android 2.3及更低版本上有CertPathValidatorException。我做了什么。
Init ssl context:
final KeyStore 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());
在这里,我使用custom TrustManager,因为服务器以错误的顺序发送证书。
此代码在Android 4.0上运行良好,但在2.3 java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
上失败了我正在做什么?
我已经创建了一个测试项目,可以找到here。
答案 0 :(得分:0)
当您说您使用FireFox获取所有证书时,您是否也包含根CA?
最有可能的是,Android 2.3没有安装根CA.按此link,
在这种情况下,会发生SSLHandshakeException,因为您有一个不受系统信任的CA.这可能是因为您拥有来自尚未受到Android信任的新CA的证书,或者您的应用程序在没有CA的旧版本上运行。