在Android设备上生成客户端证书

7
我希望创建一个使用SSL客户端证书认证的Android应用程序。
我已经找到了示例代码,展示了如何在Android应用程序中使用SSL客户端证书认证。这对我来说很清楚。
然而,我的问题是我想在设备上生成SSL客户端证书。简单地说,我希望我的程序执行以下操作:
当程序安装在设备上时,应该在设备上生成一个客户端证书(第一次运行时),并将公钥指纹发送到我的服务器。(证书必须在第一次使用时生成)。
我该如何从我的应用程序在Android设备上生成客户端证书?
1个回答

8

你可以在Android上运行以下代码来生成密钥对并检索指纹。它使用了优秀的jCraft的JSCH库

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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接