【问题标题】:Import existing private key into BKS Keystore将现有私钥导入 BKS Keystore
【发布时间】:2016-08-09 20:16:55
【问题描述】:

我有一个由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 密钥库?

谢谢

【问题讨论】:

    标签: java android security rsa keytool


    【解决方案1】:

    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]

    创建包含 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 -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 参数。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-15
    • 1970-01-01
    • 2020-03-20
    • 2013-05-22
    • 2021-05-21
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多