java - 将现有私钥导入 BKS Keystore

标签 java android security rsa keytool

我有一个由 openssl 按以下方式生成的 key 对

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 中导入它,但我不想导入它,因为我想在 keystore 中保护它。

所以我的问题是如何使用 keytool 将现有 key 导入 BKS keystore ?

谢谢

最佳答案

私钥 始终伴随着 keystore 中的证书链(包括相应的证书)。您不能将它单独添加到 KeyStore。

生成私钥后,您可以生成一个自签名证书,然后您可以使用该证书将您的私钥连同证书一起添加到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 参数。

关于java - 将现有私钥导入 BKS Keystore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36688119/

相关文章:

java - 节省空间的长表示

android - Html.fromHtml(string) 不解析 android 中的 P 标签

android - 使用 Flutter 时我有哪些存储数据的选项? (iOS 和安卓)

c# - 从 httprequest C# 读取客户端证书

java - 尝试将 java 连接到 mysql 时出现 MySQLSyntaxErrorException

java - Android 中的 Listview 适配器和监听器?

VBA密码保护: how it works?安全吗?有其他选择吗?

wordpress - 为什么我在 wordpress 页面上的 firefox 中连接不安全

java - 线程安全单例和内部类解决方案

android - 刷新时禁用默认的 SwipeRefreshLayout 动画