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

Tal*_*mli 7 authentication ssl android certificate client-certificates

我想创建一个将使用SSL客户端证书身份验证的Android应用程序.

我找到了示例代码,向我展示了两个如何在Android应用程序中使用SSL客户端证书身份验证.这对我来说很清楚.

但问题是,我想在设备上生成SSL客户端证书.简单地说,我希望我的程序执行以下操作:

当程序安装在设备上时,应在设备上生成客户端证书(首次运行时),并将公钥指纹发送到我的服务器.(必须在首次使用时生成证书).

如何从我的应用程序和Android设备上生成客户端证书?

dde*_*ele 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));


}   
Run Code Online (Sandbox Code Playgroud)

只需将JAR放在libs文件夹中,就可以了.

如果你使用maven,你可以像这样引用JSCH依赖:

<dependency>
    <groupId>com.jcraft</groupId>
    <artifactId>jsch</artifactId>
    <version>0.1.50</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)