Android KEYSTORE文件签名-->JKS文件签名
来源:互联网 发布:c并发编程实战 中文版 编辑:程序博客网 时间:2024/05/29 04:57
前言:
虽然知道如何通过命令来完成keystore与jks的转换,之前写了keystore转jks,今天有需求需要把keystore转jks,下面就是本人整合的两种方法
java function 方式
这个方法是转载的,原来博客地址:http://blog.csdn.net/kgn28/article/details/4099167,亲测是可以的,并且代码比较简单,容易懂,顾手机下来,感谢原来博客作者。
标准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); } } }
可能调用完方法,还需要其他的操作,但是毕竟已经到了很容易的一步,必须要装载如对应类型空文件就行。下面本人的方法中也有提到转载,希望对亲有用哈。
DOC命令方式
下面以我的1.keystore为例子,其中密码为123456,当然这个命令的灵感也是来自于上面的diamagnetic逻辑
keystore---->pfxD:\>keytool -importkeystore -v -srckeystore 1.keystore -srcstoretype jks -srcstorepass 123456 -destkeystore key.pfx -deststoretype pkcs12 -deststorepass 123456pfx------>jkskeytool -importkeystore -v -srckeystore D:\1.pfx -srcstoretype pkcs12 -srcstorepass 123456 -destkeystore D:\1.jks -deststoretype jks -deststorepass 123456
亲自测试时可以的
就生成好了,哈哈,看了一些命令,虽然有些还是比较不懂,但是一直学习中,希望越来越好吧。简单粗暴能用就好。
-importkeystore 导入密钥库,通过格式设定,我们可以将PKCS#12文件转换为JKS格式。 -v显示详情 -srckeystore 源密钥库-srcstoretype 源密钥库格式,这里为pkcs12 -srcstorepass 源密钥库密码,这里为123456 -destkeystore 目标密钥库-deststoretype 目标密钥库格式,这里为jks,默认值也如此 -deststorepass 目标密钥库密码,这里为123456
比较官方的方法
下面的方法是来自http://www.willrey.com/support/jks_pfx.html
JKS和PFX文件相互转换方法
JKS(JavaKeysotre)格式和PFX(PKCS12)格式,是最常见的 SSL证书 格式文件,可以包含完整的证书密钥对,证书链和信任证书信息。PFX常用于Windows IIS服务器,JKS常用语JAVA类的WEB服务器,如TOMCAT,WEBLOGIC,JBOSS,RESIGN,虽然近年来,这些服务器新的版本,都是可以同时支持PFX,JKS文件格式了,但是老的版本和免费版本,往往都只支持JKS格式,所以当我们在不同WEB平台切换的时候,如何转换现有的SSL证书格式。希望可以帮到 VeriSign证书用户。
PFX文件转换为JKS文件
使用JWSDP工具包中的工具
安装J2SE 1.5,下载并运行jdk-1_5_0_09-windows-i586-p.exe
下载并安装jave web service develop pack, jwsdp-2_0-windows-i586.exe
创建一个新的keystore文件,里面的别名取做TEMP
keytool -genkey -alias temp -keyalg RSA -keystore server.jks
准备好要导入的PFX文件,server.pfx,运行:
C:\Sun\jwsdp-2.0\xws-security\bin\pkcs12import.bat pkcs12import -file server.p12 -alias server -keystore server.jks
查看server.jks 里面的证书记录:
keytool -list -v -keystore server.jks
JKS文件转换为PFX文件
通过jks2pfx工具
请下载:JKS2PFX转换工具。
将压缩包解开到 c:\jks2pfx 目录下,
运行以下命令:
JKS2PFX <导出文件名> [Java Runtime的目录]备注: KeyStore文件:指Tomcat保存SSL证书的文件 KeyStore密码:KeyStore文件对应的密码 Alias别名: 生成证书CSR时,所起的Alias别名 导出文件名: 准备导出的文件名称 (不要带扩展名) Java Runtime的目录(可选): 指包含Java.exe和keytool.exe的目录,如:c:\progra~1\Java\jre1.5.0_06\bin
例如:
JKS2PFX server.jks 123456 tomcat exportfile c:\progra~1\Java\jre1.5.0_06\bin
该命令将server.jks中别名为tomcat的SSL证书导出,运行后将产生3个文件 exportfile.key、exportfile.crt、exportfile.pfx,exportfile.pfx可以导入到微软的IIS中,exportfile.key和exportfile.crt 可用于Apache或者OpenSSL兼容的系统。
可以用下面命令查看PFX文件内容:
openssl pkcs12 -info -in exportfile.pfx
PFX文件转换为X509证书文件和RSA密钥文件
通过Openssl命令行
openssl pkcs12 -in myssl.pfx -nodes -out server.pemopenssl rsa -in server.pem -out server.keyopenssl x509 -in server.pem -out server.crt
不过,我更加喜欢简单粗暴的方法,比如方法2。先存着,希望对你我有用
阅读全文
0 0
- Android jks文件签名-->keystore文件签名
- Android KEYSTORE文件签名-->JKS文件签名
- as上签名文件在Android Studio中的.jks文件代替在eclipse时.keystore
- 生成jks签名文件
- Android 用signkey.jks签名文件对 Apk 进行签名
- Android 修改签名文件keystore文件密码
- Android打包签名-生成keystore文件
- android--查看keystore文件签名信息
- Android Studio生成keystore签名文件
- Android Studio生成keystore签名文件
- Android Studio生成.keystore签名文件
- Android签名文件keystore一键生成
- Android之Keystore文件签名(获取查看apk签名)
- Android之Keystore文件签名(获取查看apk签名)
- Android之Keystore文件签名(获取查看apk签名)
- Android之Keystore文件签名(获取查看apk签名)
- 利用cmd给apk重新签名(keystore和jks文件两种)
- Android Debug 调试签名 .keystore .jks 本地设置
- 12.19早课
- MAC OS Cocoapods安装更新实战
- Gazebo Error [Node.cc:90] No namespace found
- 网格寻优SVM
- hibernate 注解 映射实体属性不做映射
- Android KEYSTORE文件签名-->JKS文件签名
- 图形视图框架
- 关于HttpsURLConnection自动重试导致的请求重复
- 分布式开放消息系统(RocketMQ)的原理与实践
- 第十篇实训博客
- 机器学习实战第九章ValueError: Masked arrays must be 1-D
- 在github上新建项目
- Android——深入浅出RxJava 和RxAndroid(操作符)
- svg绘制简单流程图