【问题标题】:Generating a client certificate on an Android device在 Android 设备上生成客户端证书
【发布时间】:2013-06-30 08:50:45
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: android authentication ssl certificate client-certificates


    【解决方案1】:

    您可以在 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多