Я разрабатываю приложение для Android, которое использует Volley. Вся связь осуществляется через соединение HTTPS. Поскольку я тестирую его в локальной среде, я использую самозаверяющие сертификаты для Tomcat.
Раньше у меня были только устройства Android 2.3 и 3.0. Теперь у меня также есть 4.1 и 4.4.
Моя реализация использует этот подход: http://developer.android.com/training/articles/security-ssl.html (часть Неизвестный центр сертификации) На устройствах с Android до 4.1 он работает отлично. SSLSocketFactory с пользовательскими сертификатами передается волейболу:
Volley.newRequestQueue(getApplicationContext(), new HurlStack(null, socketFactory));
Но что происходит на Android 4.1+? Почему это не работает? Я также пробовал с NullX509TrustManager следующим образом:
private static class NullX509TrustManager implements X509TrustManager {
@Override
public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType)
throws CertificateException {
}
@Override
public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType)
throws CertificateException {
}
@Override
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
}
Но он по-прежнему не работает...