2013-07-02 39 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

谢谢您的帮助:) –