标准keystore(standard jdk keystore types)包括:

JCEKS,JKS,PKCS12这几种格式,主要区别就是jceks可是用来存储对称密钥(分组密钥、私密密钥),而jks就只能存储非对称密钥对(私钥+x509公钥证书),pkcs12是通用格式(rsa公司标准)微软和java都支持。这里就产生了一个问题:使用java的keytool产生的keystore如何在微软的系统下使用(如何导入到ie中),解决方法就是先将jks的keystore变成pkcs12格式的keystore。其实jdk中存在一个keystore class,提供了抽象的通用对keystore操作的类,基于这个接口,实现了以下这个可是在两种格式之间互导的程序:

import java.security.KeyStore; import java.security.Key; import java.security.KeyFactory; import java.security.PrivateKey; import java.security.spec.PKCS8EncodedKeySpec; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; public class KeyStoreConvert{ public static void main(String[] args){ convert(args[0],args[1],args[2],args[3],args[4],args[5], args[6],args[7],args[8],args[9],args[10]); //convert("JKS","test.jks","abc123","kp2","abc123","kp2", // "PKCS12","test.p12","abc123","kp2","abc123"); //convert("PKCS12","test.p12","abc123","kp2","abc123","kp2", // "JKS","test1.jks","abc123","kp2","abc123"); } public static void convert(String storeType1 , String stroe1FileName , String store1Passwd , String store1KeyAlias , String store1KeyPasswd , String store1CertChainAlias , String storeType2 , String store2FileName , String store2Passwd , String store2KeyAlias , String store2KeyPasswd ){ try{ FileInputStream fis = new FileInputStream(stroe1FileName); KeyStore keyStore1 = KeyStore.getInstance(storeType1); keyStore1.load (fis, store1Passwd.toCharArray()); Key key = keyStore1.getKey(store1KeyAlias ,store1KeyPasswd.toCharArray()); KeyFactory keyfact = java.security.KeyFactory.getInstance(key.getAlgorithm()); PrivateKey priKey = keyfact.generatePrivate(new PKCS8EncodedKeySpec(key.getEncoded())); KeyStore keystore2 = KeyStore.getInstance(storeType2); keystore2.load(null, null); keystore2.setKeyEntry(store2KeyAlias, priKey, store2KeyPasswd.toCharArray(),keyStore1.getCertificateChain(store1CertChainAlias)); keystore2.store(new FileOutputStream(store2FileName), store2Passwd.toCharArray()); }catch(Exception e){ e.printStackTrace(System.out); } } }

在运行这个程序时,如果是将jks导成pkcs12,然后再将pkcs12格式导成jks,可以发现一个问题:jks中存储的是密钥对,需要将申请的证书导入jks和密钥配对,如果不将信任根(颁发给你证书的根)导入,那么配对证书是导入不到jks中的,可是像现在这样实现就可以产生一个没有根的jks——里面有包括配对的密钥+证书:

不过仔细想想这个也不是问题,因为产生这个问题的原因是有一个jks中已经包括根了。

最后缅怀一下sun(刚被收购)。。。

jks与pkcs12格式的keystore互转相关推荐

  1. SSL证书格式PEM、CER、JKS、PKCS12

    一.主流的SSL证书格式 根据不同的服务器以及服务器的版本,我们需要用到不同的证书格式,就市面上主流的服务器来说,大概有以下格式: DER.CER,文件是二进制格式,只保存证书,不保存私钥. PEM, ...

  2. excel转las文件_这3种Word、Excel格式不变的互转方法,实在太好用了

    日常工作中用Word写总结.写报告,写分析,一定离不开数据支持.但在制作的过程中你一定碰到过这些问题:Excel里做的表格.图表,一复制到word就变的乱七八糟! 那么,有没有什么好的方法,即省时,又 ...

  3. java时间戳龙_Java时间戳与日期格式字符串的互转

    Java时间戳与日期格式字符串的互转 import java.text.SimpleDateFormat; import java.util.Date; public class DateUtil { ...

  4. Jetty9下生成Jetty使用的OBF格式的keystore密码

    为什么80%的码农都做不了架构师?>>>    生成Jetty使用的OBF格式的keystore密码 java -cp jetty-all-9.0.5.v20130815.jar o ...

  5. 税务局接口-xml格式和对象互转工具类使用说明

    税务局接口-xml格式和对象互转工具类使用说明 注意: 由于税务局接口请求xml数据和返回xml数据和常规的不一样,所以手动写了一个工具类,本工具类只针对税务局xml请求参数和返回参数与对象互相. 说 ...

  6. Android签名jks转pkcs12(JKS 密钥库使用专用格式。建议使用 “keytool -importkeystore xx pkcs12“ 迁移到行业标准格式 PKCS12)

    有遇到如下error的朋友,可以阅读此文解决: 1.JKS 密钥库使用专用格式.建议使用 "keytool -importkeystore -srckeystore E:\eeee -des ...

  7. Java对象、List集合、Map和JSON格式数据的互转(谷歌的gson-2.2.4.jar包)

    1. 导入JSON的jar包 博主使用的是谷歌开发的gson.2.2.4.jar包,如果需要jar包可评论.导包过程不熟悉的可参考jar包导入教程.导入之后即可使用,如下图. 2. Java对象和JS ...

  8. js与php时间戳,js时间戳与日期格式之间的互转

    1. 将时间戳转换成日期格式 // 简单的一句代码 var date = new Date(时间戳); //获取一个时间对象 /** 1. 下面是获取时间日期的方法,需要什么样的格式自己拼接起来就好了 ...

  9. java时间戳转换日期格式_Java时间戳与日期格式字符串的互转

    1 import java.text.SimpleDateFormat; 2 import java.util.Date; 3 4 public class DateUtil { 5 /** 6 * ...

最新文章

  1. 中国在5G、AI等领域对美国紧追不舍,但设备工艺依旧落后
  2. 消息推送与同步协议的思考
  3. 给opentaps添加定制的表和字段
  4. 使用Java高速实现进度条
  5. 利用Jqurey写一个输入内容增加并且可以删除,上下移动的标签
  6. 通过QEMU-GuestAgent实现从外部注入写文件到KVM虚拟机内部
  7. java 2和java有什么区别
  8. 加拿大计算机硕士gpa不够,加拿大研究生留学申请者绩点低怎么办?这四类应对方法你都知道吗?...
  9. 如何在Shell脚本中使用if-else?
  10. 奥维使用天地图 疑似攻击解决方案、访问上限解决方案
  11. 阿里云Android直播demo流程
  12. android 图片大小判断,android中如何使用一张图片适配不同尺寸的APP引导页
  13. 四川大学计算机专业调剂,2020年四川大学计算机学院(软件学院)考研调剂信息...
  14. Unity生成随机数
  15. 2022-2028年全球与中国聚酰亚胺(PI)行业市场前瞻与投资战略规划分析
  16. 2023 情人节表白单页源码
  17. ​生鲜也能卖尾货了?
  18. 2020年度“全球酒店集团225强”排名公布,首旅如家再进榜单前十
  19. C++ STL和泛型编程(四)----movable
  20. 穿越火线枪战王者服务器维护,CF手游8.24体验服维护公告 全新HD地图登场

热门文章

  1. vue3 滑块拼图验证登录(vue3-puzzle-vcode)
  2. 记上海紫龙技术美术实习生面经
  3. Java 省市区三级联动
  4. JavaScript系列文章:变量提升和函数提升
  5. LeetCode50——一题学会快速幂算法
  6. @Autowired 和 @Resource 的区别(为什么更推荐使用@Resource ?)
  7. ubuntu: 查看cuda版本
  8. 使用ASP.NET.MVC制作手机接收验证码
  9. 未定义标识符ULONG_PTR,BOOL等错误解决方法
  10. 驼峰命名法【规约与实践】