将现有私钥导入BKS密钥库

Rdl*_*dlP 3 java security android rsa keytool

我有一个由openssl以下列方式生成的密钥对

openssl genrsa -out private_key.pem 2048

我把它转换成DER格式如下

openssl pkcs8 -topk8 -inform PEM -outform DER -in private_key.pem\-out private_key.der -nocrypt

现在我想在android中导入它,但我不想导入它,因为我想在密钥库中保护它.

所以我的问题是如何使用keytool将现有密钥导入BKS密钥库?

谢谢

alw*_*arn 5

A Private Key始终伴随着Certificate ChainKeyStore中的(包括相应的证书).您不能仅仅将它自己添加到KeyStore.

生成后Private Key,您可以生成自签名证书,然后可以使用此证书将您的私钥与证书一起添加到KeyStore.

生成自签名证书

openssl req -new -x509 -key [PRIVATE_KEY_FILE] -out [SELF_SIGNED_CERTIFICATE_FILE] -days 3650 -subj/[YOUR_SUBJECT_DN]

创建包含PrivateKey和证书的PKCS#12文件

openssl pkcs12 -export -inkey [PRIVATE_KEY_FILE] -in [CERTIFICATE_FILE] -out [PKCS12_FILE.p12] -name mykey

最后,将PKCS12 KeyStore转换为您想要的BKS商店类型

keytool -importkeystore -srckeystore [ABOVE_P12_FILE] -srcstorepass [ABOVE_P12_PASSWORD] -srcstoretype pkcs12 -deststorestore [NEW_P12_FILE.p12] -deststorepass [NEW_P12_PASSWORD] -deststoretype bks -providerclass org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath [ABSOLUTE_PATH_TO__bcprov-jdk15on-152 .罐]

如果需要Java缺省存储类型JKS,则可以从最后一个命令中删除-providerclass-providerpath参数.