java - openssl der 文件导入到 java 密钥库
问题描述
我用 openssl 创建了一个密钥对,并希望它们导入到 java-keystore:
1) openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out my_privatekey.pem
2) openssl rsa -pubout -outform DER -in my_privatekey.pem -out mypublic_key.der
3) openssl pkcs8 -topk8 -nocrypt -outform DER -in my_privatekey.pem -out my_privatekey.der
首先,我创建了一个私钥(.pem 格式),然后我创建了一个公钥,最后我将私钥转换为可以在 java (pkcs8) 中使用的格式。
现在,我想在我的 java 应用程序中以安全的方式使用这些密钥,所以我做了一些研究,解决方案似乎是使用 java-keystore。
但是,如果我是正确的,您无法将公钥直接存储到密钥库中,因为您必须先创建证书:
将您的证书转换为 DER 格式:
openssl x509 -outform der -in certificate.pem -out certificate.der
导入密钥库
keytool -import -alias your-alias -keystore cacerts -file certificate.der
这让我现在提出我的问题。是否可以在没有证书的情况下将私钥和公钥导入密钥库?我不需要证书,因为我只想安全地存储我的密钥,所以它们是受密码保护的。
如果这是不可能的,那么您可以创建并签署您自己的证书。但是,证书可能会过期,所以一段时间后我必须总是更新它还是我错了?
我与第三方共享这个公钥(他们需要这个密钥来验证我用我的私钥签名的数据),我还从他们那里得到一个公钥来加密一些数据。所以我需要在最后存储 2 个公钥(我的密钥和我收到的公钥)。
我怎么做?我是否需要创建 2 个证书作为 hack,以便能够将它们存储到 java-keystore 中?
解决方案
“keytool -importcert”命令可以轻松读取 PEM 和 DER 格式的证书。
keytool -importcert -file <openssl_crt.pem> -keystore <jks-file-name.jks> -storepass jkspass -alias <alias-name> -keypass <keypass>
推荐阅读
- html - 如何在 CSS(或引导程序)的所有视点上保持按钮居中在图像上?
- reactjs - react native如何在react native项目中导入和使用纯android sdk
- flutter - 如何在颤振中创建可搜索和可选择的列表视图?
- angular - 我怎样才能使我的角度组件在根级别上成为父级的 100 宽度?
- gcloud - 使用 DataFlow 将 GCP 中的大型 Bigtable 数据库从一个帐户迁移到另一个帐户
- react-native - 我在哪里可以找到 launchDarkly 客户端的“user_key”?
- svn - SVN 默默地忽略忽略模式中未包含的某些文件 (*.reg)
- apache-kafka - Kafka 在同一台机器上流式传输应用程序
- python - 获得 3 个不同数字之和的整数/舍入问题
- security - 浏览器突然要求我使用大多数网站的用户名和密码登录