繁体   English   中英

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

[英]Import PFX file into Existing JKS file (NOT converting from .pfx to .jks)

我有Java Web服务,并使用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

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

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

Service和Client都是用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客户端的例外,否则我们无法帮助您。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM