我正在使用KeyStore API在Android应用程序中生成SSL密钥对。我希望根据公钥/私钥对创建证书签名请求(CSR),以便将其发送到外部CA进行签名。这是可能的吗?如果可能的话,我想使用内置的Android库而不是BouncyCastle,以便让Android安全地存储密钥。
KeyStore
yqlxgs2m1#
Certificate enrollment process检查这个链接。它生成密钥对和CSR。关于在Android手机上生成CSR(证书签名请求),我认为使用Spongycastle代替是相当直接的。它是Bouncycastle的Android端口。
mqkwyuun2#
您可以使用Bouncy Castle来使用Android KeyStore中的密钥。这并不意味着您必须将Bouncy Castle设置为安全提供程序。包含库就足够了:
implementation 'org.bouncycastle:bcpkix-jdk18on:1.72'
注:海绵城堡已过时。标准Bouncy Castle库必须包含在您的Android应用程序中。有关原因的详细信息,请参阅:https://github.com/rtyley/spongycastle/issues/34
val keyPairGenerator: KeyPairGenerator = KeyPairGenerator.getInstance( KeyProperties.KEY_ALGORITHM_EC, "AndroidKeyStore" ) val keySpecBuilder = KeyGenParameterSpec.Builder( Constants.clientCertificateKeyAlias, KeyProperties.PURPOSE_SIGN or KeyProperties.PURPOSE_VERIFY ).setDigests(KeyProperties.DIGEST_NONE, KeyProperties.DIGEST_SHA256, KeyProperties.DIGEST_SHA512) keyPairGenerator.initialize(keySpecBuilder.build()) val pair = keyPairGenerator.generateKeyPair() val p10Builder: PKCS10CertificationRequestBuilder = JcaPKCS10CertificationRequestBuilder( X500Principal("CN=My Client Certificate"), pair.public ) val csBuilder = JcaContentSignerBuilder("SHA256withECDSA") val signer: ContentSigner = csBuilder.build(pair.private) val csr: PKCS10CertificationRequest = p10Builder.build(signer) val pemObject = PemObject("CERTIFICATE REQUEST", csr.encoded) val csrAsString = csrAsStringingWriter() val pemWriter = PEMWriter(csrAsString) pemWriter.writeObject(pemObject) pemWriter.close() csrAsString.close() Log.v("CSR", "CSR: $csrAsString")
4urapxun3#
由于Android应用程序是使用Java构建的,因此您可以使用Java keytool工具生成CSR:从CA请求签名证书。
keytool
3条答案
按热度按时间yqlxgs2m1#
Certificate enrollment process
检查这个链接。它生成密钥对和CSR。关于在Android手机上生成CSR(证书签名请求),我认为使用Spongycastle代替是相当直接的。它是Bouncycastle的Android端口。
mqkwyuun2#
您可以使用Bouncy Castle来使用Android KeyStore中的密钥。这并不意味着您必须将Bouncy Castle设置为安全提供程序。包含库就足够了:
注:海绵城堡已过时。标准Bouncy Castle库必须包含在您的Android应用程序中。有关原因的详细信息,请参阅:https://github.com/rtyley/spongycastle/issues/34
4urapxun3#
由于Android应用程序是使用Java构建的,因此您可以使用Java
keytool
工具生成CSR:从CA请求签名证书。