С помощью этой сетевой библиотеки:Как использовать самоподписанный SSL в сетевой библиотеке Android (ION)?
В текущем состоянии развития, я хотел бы использовать самоподписанный SSL сертификат
Библиотеки форум имеет некоторое обсуждение:
https://github.com/koush/ion/issues/3
Ion ion = Ion.getDefault(c);
ion.configure().createSSLContext("TLS");
ion.getHttpClient().getSSLSocketMiddleware().setSSLContext(sslContext);
ion.getHttpClient().getSSLSocketMiddleware().setTrustManagers(trustManagers);
После некоторых исследований я захватил crt a го получения SSLContext и TrustManager, проблема в том, что до сих пор вернуться за исключением
javax.net.ssl.SSLException
Caused by: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
Вот моя попытка:
try {
CertificateFactory cf = CertificateFactory.getInstance("X.509");
InputStream caInput = getResources().openRawResource(R.raw.load);
Certificate ca;
try {
ca = cf.generateCertificate(caInput);
//System.out.println("ca=" + ((X509Certificate) ca).getSubjectDN());
} finally {
caInput.close();
}
String keyStoreType = KeyStore.getDefaultType();
KeyStore keyStore = KeyStore.getInstance(keyStoreType);
keyStore.load(null, null);
keyStore.setCertificateEntry("ca", ca);
String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
tmf.init(keyStore);
ssl_context = SSLContext.getInstance("TLS");
ssl_context.init(null, tmf.getTrustManagers(), null);
} catch (Exception e) {
Log.d("test1", "A: " + e);
}
Ion.getDefault(this).getHttpClient().getSSLSocketMiddleware().setTrustManagers(tmf.getTrustManagers());
Ion.getDefault(this).getHttpClient().getSSLSocketMiddleware().setSSLContext(ssl_context);
//test SSL
Ion.getDefault(this).with(this)
.load("https://na2b.no-ip.com/dragonair/can_app/api/media_list.php")
.asJsonObject()
.setCallback(new FutureCallback<JsonObject>() {
@Override
public void onCompleted(Exception e, JsonObject result) {
if (e != null) {
Log.d("test1", "B: " + e);
} else {
Log.d("test1", "result" + result);
}
}
});
уведомление о том, что исключение в B: часть так, что означает TrustManager и SSLContext должны правильно построить, как это исправить?
Спасибо за помощь.
Я сделал это будет okhttp, посмотрев @ http://developer.android.com/training/articles/security-ssl. HTML. посмотрите, помогает ли он смотреть на документы. – Raghunandan
Для использования с самоподписанным сертификатом, пожалуйста, прочитайте мой ответ по адресу http://stackoverflow.com/questions/32154115/android-volley-self-signed-https-trust-anchor-for-certification-path-not-found/ 32219177? S = 0 | 3.1941 # 32219177 или http://stackoverflow.com/questions/32969952/android-to-server-communication-using-ssl-with-bouncy-castle/32980130?s=0|3.2268#32980130 – BNK
@BNK, спасибо за совет, похоже, не может переопределить настройки сетевой библиотеки – user3538235