2013-07-02 40 views
7

我想創建一個將使用SSL客戶端證書身份驗證的Android應用程序。在Android設備上生成客戶端證書

我發現了一些示例代碼,它們向我展示瞭如何在Android應用程序中使用SSL客戶端證書身份驗證。這很清楚。

但是我的問題是我想在設備上生成一個SSL客戶端證書。簡單地說,我希望我的程序執行以下操作:

當程序安裝在設備上時,應該在設備上生成客戶端證書(第一次運行時)和公鑰指紋將被髮送到我的服務器。 (必須在首次使用時生成證書)。

如何從我的應用程序在Android設備上生成客戶端證書?

回答

7

您可以在Android上運行以下代碼以生成密鑰對並檢索指紋。它使用優秀的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)); 


} 

只需將JAR放入libs文件夾中即可。

如果你使用Maven的時候,你可以參考JSCH依賴這樣的:

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

謝謝您的幫助:) –