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?

One Solution collect form web for “Generar un certificado de cliente en un dispositivo Android”

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> 
  • SSL de Android: sin certificado de nivel superior
  • ¿El android apoya el tipo del keystore de .jks?
  • SSL Pinning con la biblioteca Volley en Android
  • Uso de la versión personalizada de la aplicación de App Engine en Android
  • Autenticación SSL de dos vías en android
  • ¿Por qué android obtiene el certificado ssl incorrecto? (Dos dominios, un servidor)
  • Marcado del certificado SSL de MediaPlayer de Android
  • Com.android.volley.NoConnectionError: javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: Protocolo SSL abortado:
  • SSLHandshakeException en Android 4.4 y menor
  • Certificado SSL para los servicios web REST (utilizados por Android)?
  • Reutilización de la conexión SSL con Android HttpClient
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.