2013-07-02 12 views
7

Desidero creare un'applicazione Android che utilizzi l'autenticazione del certificato client SSL.Generazione di un certificato client su un dispositivo Android

Ho trovato codici di esempio che mostrano come due utilizzano l'autenticazione del certificato client SSL in un'applicazione Android. Questo è chiaro per me.

Il mio problema è comunque che voglio generare un certificato client SSL sul dispositivo. In breve, desidero che il mio programma esegua le seguenti operazioni:

Quando il programma è installato sul dispositivo, deve essere generato un certificato client sul dispositivo (quando viene eseguito per la prima volta) e un fingerprint della chiave pubblica sarà inviato al mio server. (Il certificato deve essere generato al primo utilizzo).

Come posso generare un certificato client su e un dispositivo Android dalla mia applicazione?

risposta

7

È possibile eseguire il seguente codice su Android per generare una coppia di chiavi e recuperare l'impronta digitale. Usa l'eccellente JSCH library from 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)); 


} 

Basta posizionare il JAR nella cartella della tua libs e sei a posto.

Se si utilizza Maven, è possibile fare riferimento la dipendenza JSch in questo modo:

<dependency> 
    <groupId>com.jcraft</groupId> 
    <artifactId>jsch</artifactId> 
    <version>0.1.50</version> 
</dependency> 
+0

Grazie per il vostro aiuto :) –