java - 如何从 keystore 中列出/导出私钥?

标签 java ssl keystore

如何列出和导出 keystore 中的私钥?

最佳答案

您可以使用 Java6 和 OpenSSL 从 keystore 中提取私钥。这一切都取决于 Java 和 OpenSSL 都支持 PKCS#12 格式的 keystore 这一事实。要进行提取,首先使用 keytool 转换为标准格式。确保对两个文件使用相同的密码(私钥密码,而不是 keystore 密码),否则您稍后会在第二步中遇到奇怪的失败。

keytool -importkeystore -srckeystore keystore.jks \
    -destkeystore intermediate.p12 -deststoretype PKCS12

接下来,使用 OpenSSL 提取到 PEM:

openssl pkcs12 -in intermediate.p12 -out extracted.pem -nodes

您应该能够足够轻松地处理该 PEM 文件;它是纯文本,其中包含编码的未加密私钥和证书(格式非常明显)。

执行此操作时,请注意确保创建的文件安全。它们包含 secret 凭据。如果您未能正确保护它们,则不会发出任何警告。 保护它们的最简单方法是在除用户之外的任何人都没有任何访问权限的目录中执行所有这些操作。并且永远不要将您的密码放在命令行或环境变量中;其他用户太容易抢到了。

关于java - 如何从 keystore 中列出/导出私钥?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/150167/

相关文章:

java - 身份验证过滤器未加载 3 个网页的 css

PHP-PKPass 不适用于 iOS 7 添加使用 PHP 中的 S/MIME signing-time 属性对通行证进行签名的日期和时间

Java 信任 ssl CA

java - 从 Eclipse 解密保存的密码

Java DOM解析无法读取节点

java - Android Studio 在 generatedJava 文件夹中生成 AIDL java 文件,但包名错误

java.lang.IllegalStateException : Fragment

java - 仅使用 .key 和 .crt 构建 io.netty.handler.ssl.SslContext

docker - Nginx 与 Cloudflare : Error 525 SSL Handshake failed

android - 我可以在 Android 的 "String"中存储 "keystore"并稍后检索它吗?