Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将PFX文件导入现有JKS文件(不从.PFX转换为.JKS)_Java_X509_Keytool_Pfx_Jks - Fatal编程技术网

Java 将PFX文件导入现有JKS文件(不从.PFX转换为.JKS)

Java 将PFX文件导入现有JKS文件(不从.PFX转换为.JKS),java,x509,keytool,pfx,jks,Java,X509,Keytool,Pfx,Jks,我有JavaWeb服务,并使用JavaKeyTool创建的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 SH

我有JavaWeb服务,并使用JavaKeyTool创建的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客户端,我的理解是,如果我给.NET客户端提供相同的jave客户端证书,即clientKeystore.jks,它应该可以工作,但是.NET客户端有问题

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

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


谢谢。

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

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

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

我很高兴您在@KyleM提出了这个建议,将JKS改为PFX就是解决方案!