¿Cómo habilitar un certificado autofirmado para sockets SSL en Android?

Tengo un certificado del servidor firmado de uno mismo (cert.pem) y necesito permitirlo para los zócalos del SSL en una aplicación de Androide. Idealmente, me gustaría empaquetar el código como archivo .jar y no necesitar un archivo de certificado externo (es decir, incluirlo en el código).

Con este código puedo aceptar todos los certificados, que no es lo que quiero:

SSLContext sc = SSLContext.getInstance("TLS"); sc.init(null, new TrustManager [] { new MyTrustManager() }, new SecureRandom()); 

¿Necesito agregar el certificado a un KeyManager personalizado o al TrustManager personalizado?

Uno de los problemas que he encontrado es que Android no acepta los almacenes de claves JKS (KeyStore.getDefaultType () devuelve "BKS"): " java.security.KeyStoreException: Implementación JKS de KeyStore no encontrada "

Cualquier idea de cómo proceder sería muy apreciada!

Sí, debe agregar el certificado a un KeyStore personalizado. Es básicamente un proceso de 4 pasos:

  1. Obtenga su certificado de servidor.
  2. Importe el certificado del servidor a un almacén de claves como un recurso sin formato en su aplicación. El tipo KeyStore debe ser BKS.
  3. Cree su propio TrustManager en su programa Java / Android para cargar el certificado en un SSLContext.
  4. Utilice ese SSLContext para sus conexiones SSL.

Consulte este enlace para obtener instrucciones detalladas y código de ejemplo:
http://randomizedsort.blogspot.com/2010/09/step-to-step-guide-to-programming.html

Buena suerte.
Nehc

  • Certificado ssl de android
  • Generación e instalación de certificados SSL
  • Android Studio / Intellij, Gradle Error: Causa: no homologado
  • Android - Multiple onReceivedHttpAuthRequest con WebView
  • TLS 1.1, 1.2 en WebView para android <= 4.3
  • Excepción terminada handshake de https de Android
  • Conectar el dispositivo android a través de MQTT con ssl
  • HTTPS con Retrofit y OkHttp Handshake falló
  • Cómo administrar la conexión ssl cuando el servicio de red cambia
  • Java - ignorar certificado SSL expirado
  • Protocolos SSL / TLS y suites de cifrado con AndroidHttpClient
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.