【问题标题】:Create and Import PKCS12 Certificate In Android (Java)在 Android (Java) 中创建和导入 PKCS12 证书
【发布时间】:2020-09-27 00:31:28
【问题描述】:

我正在开发一个处理客户端证书创建和安装的 Android 应用。除了使用 KeyChain.createInstallIntent() 函数将 PKCS12 证书导入 Android 之外,我已经完成了所有设置和工作。因为我需要处理 PKCS12 证书客户端的创建,所以我正在生成密钥并将它们手动导入 KeyStore,以便它们可以在 PKCS12 导入/导出中使用。当尝试“导出”PKCS12 密钥库并将其导入主 Android 密钥库时,系统会提示我“输入密码”字段。根据下面的代码,它应该只是空字符串。我也尝试将其设置为“某物”,但它仍然拒绝我输入的任何密码。

应为提供的代码 sn-p 做出的假设:

privateKey 是一个 PrivateKey

server.name 是一个字符串

CA 密钥已安装到主 android 证书存储中

   void importCertificateIntoAndroid(String certStr) throws CertificateException, KeyStoreException {
        try {
            KeyStore pk12KeyStore = KeyStore.getInstance("PKCS12");
            pk12KeyStore.load(null, null);
            ByteArrayInputStream is = new ByteArrayInputStream(certStr.getBytes());
            CertificateFactory cf = CertificateFactory.getInstance("X.509");
            Certificate cert = cf.generateCertificate(is);
            pk12KeyStore.setKeyEntry(server.name, privateKey, "".toCharArray(), new Certificate[]{cert});
            ByteArrayOutputStream os = new ByteArrayOutputStream();
            pk12KeyStore.store(os, "".toCharArray());
            Intent certInstallIntent = KeyChain.createInstallIntent();
            certInstallIntent.putExtra(KeyChain.EXTRA_PKCS12, String.valueOf(os));
            certInstallIntent.putExtra(KeyChain.EXTRA_KEY_ALIAS, server.name);
            certInstallIntent.putExtra(KeyChain.EXTRA_NAME,  server.name);
            startActivity(certInstallIntent);
        } catch (Exception e) {
            Log.d(TAG, "help");
        }
    }

【问题讨论】:

    标签: java android client-certificates pkcs#12


    【解决方案1】:

    有点晚了,但问题出在

    certInstallIntent.putExtra(KeyChain.EXTRA_PKCS12, String.valueOf(os));
    

    您必须将 byte [] 设置为这个额外的。就像使用 'os.toByteArray()'。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-28
      • 2018-11-15
      • 2012-12-31
      • 1970-01-01
      • 1970-01-01
      • 2021-09-24
      • 1970-01-01
      相关资源
      最近更新 更多