Pinzado de certificado SSL con Picasso

Estoy usando Picasso para almacenar imágenes en caché. Nuestro backend ha cambiado recientemente a HTTPS usando autenticación auto firmada como autenticación. Utilicé la biblioteca de khandroid para crear un cliente de HTTP que ponga los certificados a cada petición; básicamente siguiendo este ejemplo.

Using Android Volley With Self-Signed SSL Certificate

Ahora necesito aplicar este mismo concepto a Picasso pero no estoy seguro de cómo modificar el singleton de Picasso para usar certificados SSL fijados.

Resulta que estaba buscando en el lugar equivocado. Intentaba modificar el OkHttpDownloader, pero necesitaba modificar el OkHttpClient. He aquí algunos ejemplos de código.

public static Picasso getInstance(Context context) { if (sPicasso == null) { InputStream keyStore = context.getResources().openRawResource(R.raw.my_keystore); Picasso.Builder builder = new Picasso.Builder(context); OkHttpClient okHttpClient = new OkHttpClient(); SSLContext sslContext; try { sslContext = SSLContext.getInstance("TLS"); sslContext.init(null, new TrustManager[]{new SsX509TrustManager(keyStore, password)}, null); okHttpClient.setSslSocketFactory(sslContext.getSocketFactory()); OkHttpDownloader okHttpDownloader = new OkHttpDownloader(okHttpClient); builder.downloader(okHttpDownloader); sPicasso = builder.build(); } catch (NoSuchAlgorithmException e) { throw new IllegalStateException("Failure initializing default SSL context", e); } catch (KeyManagementException e) { throw new IllegalStateException("Failure initializing default SSL context", e); } catch (GeneralSecurityException e) { e.printStackTrace(); } } return sPicasso; } 
  • Android manual X509 validación de la cadena de certificados
  • El host remoto cerró la conexión durante el apretón de manos: Certificado Burp en Android
  • Certificado de pinning no funciona con OkHttp en Android
  • Error en la autenticación mutua en Android con javax.net.ssl.SSLHandshakeException: El apretón de manos falló
  • Android - Error al conectar con URI de inicio de sesión
  • Primera autentificación para obtener el token
  • "Flujo no representa una tienda de claves PKCS12" después de almacenar con una nueva contraseña en el dispositivo Android
  • Problema con el certificado: aparece la página SSL "necesita establecer un pin o una contraseña de bloqueo de pantalla para poder usar el almacenamiento de credenciales" en Android
  • Https conexión, las diferencias entre Android 2.3 y 4
  • javax.net.ssl.SSLPeerUnverifiedException: Nombre de host no verificado:
  • ¿Debemos usar el proveedor de seguridad de google con OkHttp?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.