java - 将 PFX 文件导入现有 JKS 文件(不从 .pfx 转换为 .jks)

标签 java x509 keytool pfx jks

我有 Java 网络服务,并使用 Java Keytool 创建的 jks 文件实现了 X.509。

keytool -genkey -keyalg RSA -sigalg SHA1withRSA -validity 730 -alias myservicekey -keypass skpass -storepass sspass -keystore serviceKeystore.jks -dname "cn=localhost"

keytool -genkey -keyalg RSA -sigalg SHA1withRSA -validity 730 -alias myclientkey  -keypass ckpass -storepass cspass -keystore clientKeystore.jks -dname "cn=clientuser"

为了在客户端和服务器之间建立信任,我将服务器证书导入客户端,将客户端证书导入服务器。

将服务器公钥(证书)导入客户端。

keytool -export -rfc -keystore clientKeystore.jks -storepass cspass -alias myclientkey -file MyClient.cer
keytool -import -trustcacerts -keystore serviceKeystore.jks -storepass sspass -alias myclientkey -file MyClient.cer -noprompt

将客户端公钥(证书)导入服务器

keytool -export -rfc -keystore serviceKeystore.jks -storepass sspass -alias myservicekey -file MyService.cer
keytool -import -trustcacerts -keystore clientKeystore.jks -storepass cspass -alias myservicekey -file MyService.cer -noprompt

服务和客户端都是用 Java 编写的,并且运行良好。现在我有一个 .NET 客户端,我的理解是,如果我将相同的 jave 客户端证书提供给 .NET 客户端,即 clientKeystore.jks,它应该可以工作,但是 .net 客户端有问题。

.NET 客户端开发人员坚持要我使用他生成的 .pfx 证书,如何将 .pfx 证书导入现有的 .jks 文件

我在网上看到的例子要求我创建一个新的.jks 文件。

谢谢。

最佳答案

您可以将该文件视为 Java PKCS12 keystore 。您可以使用所有相同的 keytool 命令,但您还需要指定 -storetype PKCS12,因为默认值为 JKS。适用于 JDK 1.6 及更高版本的示例:

keytool -importkeystore -srckeystore mypfxfile.pfx -srcstoretype pkcs12 
-destkeystore clientcert.jks -deststoretype JKS

另见 this线。我认为这回答了你的问题,但如果你不介意一个建议,我会简单地将你现有的 JKS 文件输出为 P12 文件,然后将 P12 文件提供给 .NET 客户端。如果它确实是格式问题,那将解决您的问题。您可以按照概述的步骤执行此操作 here .如果仍有问题,您应该发布 .NET 客户端的异常,否则我们无法帮助您。

关于java - 将 PFX 文件导入现有 JKS 文件(不从 .pfx 转换为 .jks),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26808193/

相关文章:

java - 如何将模型从 ML Pipeline 保存到 S3 或 HDFS?

unicode - 如何解码带有 unicode 符号的混合字符串?

cryptography - X.509 和 pem 的区别

tomcat - 无法使用 keystore 在 tomcat 7 中访问 HTTPS

java - Android 应用程序可以在手机上运行,​​但不能在平板电脑上运行

java - 单击适配器类内的国家/地区选择器时崩溃 java.lang.ClassCastException :

java - 构造函数中的 StackOverflowError 异常

certificate - 如何向具有自定义 DN 格式的实体颁发证书?

ssl - 删除或自动输入 haproxy ssl 的 pem 密码; Chrome 仍然警告 CA 未签名

java - 将证书导入 keystore ,证书链为空