Generar un certificado de cliente en un dispositivo Android

Quiero crear una aplicación de Android que utilice la autenticación de certificado de cliente SSL.

He encontrado códigos de ejemplo que me muestran cómo dos usan la autenticación de certificado de cliente SSL en una aplicación de Android. Esto es claro para mí.

Mi problema es sin embargo que quiero generar un certificado del cliente del SSL en el dispositivo. En pocas palabras, quiero que mi programa haga lo siguiente:

Cuando el programa está instalado en el dispositivo, se debe generar un certificado de cliente en el dispositivo (al ejecutarlo por primera vez) y se enviará una impresión de clave pública a mi servidor. (El certificado debe ser generado en el primer uso).

¿Cómo puedo generar un certificado de cliente y un dispositivo Android desde mi aplicación?

Puede ejecutar el siguiente código en Android para generar un par de claves y recuperar la huella digital. Utiliza la excelente biblioteca JSCH de jCraft .

public void generatePublicPrivateKeyPair() throws Exception { ByteArrayOutputStream privateKeyOutputStream = new ByteArrayOutputStream(); ByteArrayOutputStream publicKeyOutputStream = new ByteArrayOutputStream(); JSch jsch=new JSch(); KeyPair kpair=KeyPair.genKeyPair(jsch, KeyPair.RSA); //kpair.setPassphrase(passphrase); kpair.writePrivateKey(privateKeyOutputStream); kpair.writePublicKey(publicKeyOutputStream, "Generated by vPro Management Console"); String fingerPrint = kpair.getFingerPrint(); System.out.println("Finger print: "+ fingerPrint); kpair.dispose(); byte[] privateKey = privateKeyOutputStream.toByteArray(); byte[] publicKey = publicKeyOutputStream.toByteArray(); System.out.println("Private key " + new String(privateKey)); System.out.println("Public key " + new String(publicKey)); } 

Simplemente coloque el JAR en su carpeta de librerías y estará listo.

Si utiliza maven, puede hacer referencia a la dependencia JSCH de la siguiente manera:

 <dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId> <version>0.1.50</version> </dependency> 
  • Android ssl: javax.net.ssl.SSLPeerUnverifiedException: Ningún certificado de igual (una vez más)
  • Comodo SSL: ERR_CERT_AUTHORITY_INVALID en Chrome móvil y Opera móvil (Android)
  • Uso de un certificado autofirmado para crear una conexión cliente-servidor segura en android
  • ¿Debemos usar el proveedor de seguridad de google con OkHttp?
  • SSL Broken Pipe
  • El certificado StartSSL no es de confianza en Firefox y en Android
  • Java - ignorar certificado SSL expirado
  • Deshabilitar SSL como un protocolo en HttpsURLConnection
  • "Certificado de servidor no confiable" en Android 2.2 pero no 3.0
  • ¿Es OAuth en un teléfono móvil usando un servidor proxy demasiado problema?
  • Cómo crear un formato BKS (BouncyCastle) Java Keystore que contiene una cadena de certificados de cliente
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.