将现有私钥导入 BKS Keystore
Import existing private key into BKS Keystore
我有一个由 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 密钥库?
谢谢
A Private Key
在 KeyStore 中总是伴随着 Certificate Chain
(包括相应的证书)。您不能将它单独添加到 KeyStore。
生成 Private Key
后,您可以生成一个自签名证书,然后您可以使用此证书将您的私钥连同证书一起添加到 KeyStore。
正在生成自签名证书
openssl req -new -x509 -key [PRIVATE_KEY_FILE] -out [SELF_SIGNED_CERTIFICATE_FILE]
-days 3650 -subj /[YOUR_SUBJECT_DN]
创建包含私钥和证书的 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 -destkeystore [NEW_P12_FILE.p12] -deststorepass [NEW_P12_PASSWORD] -deststoretype bks -providerclass
org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath
[ABSOLUTE_PATH_TO__bcprov-jdk15on-152.jar]
如果您需要 Java 默认存储类型 JKS
,您可以从最后一个命令中删除 -providerclass
和 -providerpath
参数。
我有一个由 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 密钥库?
谢谢
A Private Key
在 KeyStore 中总是伴随着 Certificate Chain
(包括相应的证书)。您不能将它单独添加到 KeyStore。
生成 Private Key
后,您可以生成一个自签名证书,然后您可以使用此证书将您的私钥连同证书一起添加到 KeyStore。
正在生成自签名证书
openssl req -new -x509 -key [PRIVATE_KEY_FILE] -out [SELF_SIGNED_CERTIFICATE_FILE] -days 3650 -subj /[YOUR_SUBJECT_DN]
创建包含私钥和证书的 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 -destkeystore [NEW_P12_FILE.p12] -deststorepass [NEW_P12_PASSWORD] -deststoretype bks -providerclass org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath [ABSOLUTE_PATH_TO__bcprov-jdk15on-152.jar]
如果您需要 Java 默认存储类型 JKS
,您可以从最后一个命令中删除 -providerclass
和 -providerpath
参数。