Ssl en android tema extraño
Estoy intentando cargar un archivo a algún url usando ssl. Yo uso este código para establecer administrador de confianza –
public static void trustAll () { TrustManage[] trustEverythingTrustManager = new TrustManager[] { new X509TrustManager() { public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { // TODO Auto-generated method stub } public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { // TODO Auto-generated method stub } public X509Certificate[] getAcceptedIssuers() { // TODO Auto-generated method stub return null; } } }; SSLContext sc; try { sc = SSLContext.getInstance("TLS"); sc.init(null, trustEverythingTrustManager, new SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); } catch (Exception e) { } }
Y éste para establecer el verificador de nombre de host –
- Vimeo error de SSL con Retrofit en Android
- ¿Por qué algunas solicitudes HTTPS fallan al descifrar en Fiddler, mientras que algunas obras?
- Tengo un archivo keystore, ¿cómo puedo proporcionar keyManagers a sslContext en la aplicación de Android?
- Cómo agregar un certificado pkcs12 de cliente a Postman Chrome, W7?
- SSL Broken Pipe
public static HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() { public boolean verify(String hostname, SSLSession session) { return true; } };
Entonces estoy abriendo la conexión como esto –
URL url = new URL("some_url"); HttpURLConnection connection = null; // check if this is https or just http if (url.getProtocol().toLowerCase().equals("https")) { trustAll(); HttpsURLConnection https = (HttpsURLConnection) url.openConnection(); https.setHostnameVerifier(DO_NOT_VERIFY); connection = https; } else { connection = (HttpURLConnection) url.openConnection(); }
Después de obtener la conexión lo uso para cargar los datos. ¿Utilizo http todo está bien pero cuando intento https consigo la excepción siguiente –
Error de escritura: Error de E / S durante la llamada al sistema, Roto pipe java.io.IOException: Error de escritura: Error de E / S durante la llamada del sistema, Rechazo de pipe en org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.nativewrite (Nativo Método) en org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.access $ 600 (OpenSSLSocketImpl.java:55) en org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl $ SSLOutputStream.write (OpenSSLSocketImpl.java:565 ) En java.io.OutputStream.write (OutputStream.java:82) en org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection $ HttpOutputStream.write (HttpURLConnection.java:652) en java. Io.DataOutputStream.write (DataOutputStream.java:101)
Lo extraño es que no recibo excepción todo el tiempo. Cuando intento cargar archivos pequeños (200K) funciona bien o se está estrellando muy raro, pero cuando intento subir los más grandes (más de 1 MB) recibo la excepción casi cada vez.
Algunas ideas ?
- Android - Error al conectar con URI de inicio de sesión
- Marcado del certificado SSL de MediaPlayer de Android
- Certificado de fijación en Android
- Agregar varios certificados SSL a Android KeyStore no funciona. (Desde el archivo de recursos)
- Error de certificado no confiable y httpclient en android
- Android se conecta al servidor con certificado autenticado
- "Certificado de servidor no confiable" en Android 2.2 pero no 3.0
- Aplicación de Android que trabaja en WIFI y 3G (Sin proxy), pero no funciona en 3G (Si proxy y puerto están asignados)
Los chicos de android informó que es un error en android sdk http://code.google.com/p/android/issues/detail?id=8625 .
- Los elementos secundarios ExpandableListView no obtienen el enfoque cuando se tocan
- No se pudo crear el emulador de Android: Error al analizar el archivo de configuración AVD