En la aplicación en la que estoy trabajando, tengo que hacer una conexión HTTPS a un servidor web. Obtuve errores de certificados no confiables y, después de consultar con stackoverflow, encontré esta publicación en el blog: http://blog.antoine.li/index.php/2010/10/android-trusting-ssl-certificates/Error de Android SSL: certificado no confiable ... a veces
Parece que la CA de este servidor no está incluida en la tienda predeterminada de Android. En pocas palabras, descargué todos los certificados, creé un almacén de claves con el proveedor de BKS, importé las claves, importé el almacén de claves en mi proyecto, subclasé la clase DefaultHttpClient para forzarlo a utilizar mi almacén de claves.
Después de seguir los pasos en el blog, funcionó perfectamente en el emulador. Sin embargo, cuando lo pruebo en un dispositivo, falla intermitentemente. Creo que he aislado un patrón. Parece que después de que haya pasado un tiempo y trato de hacer una conexión HTTPS, fallará. Entonces, si intento la misma conexión nuevamente, tendrá éxito. Si espero un poco y luego vuelvo a intentarlo, falla la primera vez y tiene éxito en intentos repetidos. Probablemente pueda solucionarlo haciendo múltiples intentos de falla, pero me gustaría saber qué está pasando. El comportamiento sugiere algún tipo de caché, pero no sé cómo encontrarlo o modificar su comportamiento. ¿Alguien tiene alguna sugerencia sobre lo que está pasando o sabe lo que estoy haciendo mal? Cualquier ayuda sería apreciada.
Finalmente decidí poner el intento de conexión en un ciclo que se repite tres veces. Hasta ahora siempre funciona en el segundo intento. Hacky, pero todavía consigo usar el certificado. Aún no sé lo que está pasando. – d370urn3ur
¡funciona bien para mí! –
Si acepta todos los certs, advierta al usuario. Es su derecho saber que estás pasando por alto la seguridad. – Krylez