【发布时间】:2015-08-22 14:44:35
【问题描述】:
我正在尝试向应用程序服务器发送 HTTP 请求,并使用 SSL 进行保护。我有一个来自服务器团队的自签名 X.509 证书。我按照documentation 的教程进行操作,但仍然得到了SSLHandshakeException:java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
我正在使用此代码:
CertificateFactory cf = CertificateFactory.getInstance("X.509", "BC");
AssetManager assManager = ShoppingHelperApp.getContext().getAssets();
InputStream is = assManager.open("keystore2.crt");
InputStream caInput = new BufferedInputStream(is);
Certificate ca = cf.generateCertificate(caInput);
caInput.close();
String keyStoreType = KeyStore.getDefaultType();
KeyStore keyStore = KeyStore.getInstance(keyStoreType);
keyStore.load(null, null);
keyStore.setCertificateEntry("ca", ca);
String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
tmf.init(keyStore);
context = SSLContext.getInstance("TLS");
context.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setSSLSocketFactory(context.getSocketFactory());
有人知道如何解决吗?
【问题讨论】:
标签: android ssl https ssl-certificate x509certificate