- 浏览: 252893 次
- 性别:
- 来自: 深圳
最新评论
-
whizkid:
[img] private void enableNdefEx ...
android通过NFC读写数据 -
zhangminglife:
您好!不错,最近正在弄这个东西,能否把demo发给我一份谢谢了 ...
SSL双向认证java实现(转) -
water卡:
android如何调用显示和隐藏系统默认的输入法 -
water卡:
android如何调用显示和隐藏系统默认的输入法 -
sjp524617477:
good
生成android使用的BKS证书
常用的证书库:
JKS和JCEKS是Java密钥库(KeyStore)的两种比较常见类型,JKS的Provider是SUN,在每个版本的JDK中都有,JCEKS的Provider是SUNJCE,1.4后我们都能够直接使用它。
JCEKS在安全级别上要比JKS强,使用的Provider是JCEKS(推荐),尤其在保护KeyStore中的私钥上(使用TripleDES)
PKCS#12(PFX)是公钥加密标准,它规定了可包含所有私钥、公钥和证书。其以二进制格式存储,在windows中可以直接导入到密钥区,注意,PKCS#12的密钥库保护密码同时也用于保护Key。
BKS来自BouncyCastleProvider,它使用的也是TripleDES来保护密钥库中的Key,它能够防止证书库被不小心修改(Keystore的keyentry改掉1个bit都会产生错误),BKS能够跟JKS互操作。
UBER比较特别,当密码是通过命令行提供的时候,它只能跟keytool交互。整个keystore是通过PBE/SHA1/Twofish加密,因此keystore能够防止被误改、察看以及校验。SunJDK允许你在不提供密码的情况下直接加载一个Keystore,类似cacerts,UBER不允许这种情况。
/**
* PFX证书转换为JKS(Java Key Store)
*
* @param pfxPassword
* PFX证书密码
* @param pfxFilePath
* PFX证书路径
* @param jksPassword
* JKS证书密码
* @param jksFilePath
* JKS证书路径
*/
public static void covertPFXtoJKS(String pfxPassword, String pfxFilePath, String jksPassword, String jksFilePath)
{
FileInputStream fis = null;
FileOutputStream out = null;
try
{
// 加载PFX证书
KeyStore inputKeyStore = KeyStore.getInstance("PKCS12");
fis = new FileInputStream(pfxFilePath);
char[] inPassword = pfxPassword == null ? null : pfxPassword.toCharArray();
char[] outPassword = jksPassword == null ? null : jksPassword.toCharArray();
inputKeyStore.load(fis, inPassword);
KeyStore outputKeyStore = KeyStore.getInstance("JKS");
outputKeyStore.load(null, outPassword);
Enumeration<String> enums = inputKeyStore.aliases();
while (enums.hasMoreElements())
{
String keyAlias = enums.nextElement();
if (inputKeyStore.isKeyEntry(keyAlias))
{
Key key = inputKeyStore.getKey(keyAlias, inPassword);
Certificate[] certChain = (Certificate[]) inputKeyStore.getCertificateChain(keyAlias);
outputKeyStore.setKeyEntry(keyAlias, key, pfxPassword.toCharArray(), (java.security.cert.Certificate[]) certChain);
}
}
out = new FileOutputStream(jksFilePath);
outputKeyStore.store(out, outPassword);
} catch (Exception e)
{
e.printStackTrace();
} finally
{
try
{
if (fis != null)
{
fis.close();
}
if (out != null)
{
out.close();
}
} catch (Exception e)
{
e.printStackTrace();
}
}
}
/**
* 从JKS格式转换为PKCS12格式
*
* @param jksFilePath
* String JKS格式证书库路径
* @param jksPasswd
* String JKS格式证书库密码
* @param pfxFilePath
* String PKCS12格式证书库保存文件夹
* @param pfxPasswd
* String PKCS12格式证书库密码
*/
public void covertJSKToPFX(String jksFilePath, String jksPasswd, String pfxFolderPath, String pfxPasswd) throws Throwable
{
FileInputStream fis = null;
try
{
KeyStore inputKeyStore = KeyStore.getInstance("JKS");
fis = new FileInputStream(jksFilePath);
char[] srcPwd = jksPasswd == null ? null : jksPasswd.toCharArray();
char[] destPwd = pfxPasswd == null ? null : pfxPasswd.toCharArray();
inputKeyStore.load(fis, srcPwd);
KeyStore outputKeyStore = KeyStore.getInstance("PKCS12");
Enumeration<String> enums = inputKeyStore.aliases();
while (enums.hasMoreElements())
{
String keyAlias = (String) enums.nextElement();
System.out.println("alias=[" + keyAlias + "]");
outputKeyStore.load(null, destPwd);
if (inputKeyStore.isKeyEntry(keyAlias))
{
Key key = inputKeyStore.getKey(keyAlias, srcPwd);
java.security.cert.Certificate[] certChain = inputKeyStore.getCertificateChain(keyAlias);
outputKeyStore.setKeyEntry(keyAlias, key, destPwd, certChain);
}
String fName = pfxFolderPath + "_" + keyAlias + ".pfx";
FileOutputStream out = new FileOutputStream(fName);
outputKeyStore.store(out, destPwd);
out.close();
outputKeyStore.deleteEntry(keyAlias);
}
} finally
{
try
{
if (fis != null)
{
fis.close();
}
} catch (Exception e)
{
e.printStackTrace();
}
}
}
/**
* 从BKS格式转换为PKCS12格式
*
* @param jksFilePath
* String JKS格式证书库路径
* @param jksPasswd
* String JKS格式证书库密码
* @param pfxFilePath
* String PKCS12格式证书库保存文件夹
* @param pfxPasswd
* String PKCS12格式证书库密码
*/
public void covertBKSToPFX(String jksFilePath, String jksPasswd, String pfxFolderPath, String pfxPasswd) throws Throwable
{
FileInputStream fis = null;
try
{
KeyStore inputKeyStore = KeyStore.getInstance("BKS", new org.bouncycastle.jce.provider.BouncyCastleProvider());
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
fis = new FileInputStream(jksFilePath);
char[] srcPwd = jksPasswd == null ? null : jksPasswd.toCharArray();
char[] destPwd = pfxPasswd == null ? null : pfxPasswd.toCharArray();
inputKeyStore.load(fis, srcPwd);
KeyStore outputKeyStore = KeyStore.getInstance("PKCS12");
Enumeration<String> enums = inputKeyStore.aliases();
while (enums.hasMoreElements())
{
String keyAlias = (String) enums.nextElement();
System.out.println("alias=[" + keyAlias + "]");
outputKeyStore.load(null, destPwd);
if (inputKeyStore.isKeyEntry(keyAlias))
{
Key key = inputKeyStore.getKey(keyAlias, srcPwd);
java.security.cert.Certificate[] certChain = inputKeyStore.getCertificateChain(keyAlias);
outputKeyStore.setKeyEntry(keyAlias, key, destPwd, certChain);
}
String fName = pfxFolderPath + "_" + keyAlias + ".pfx";
FileOutputStream out = new FileOutputStream(fName);
outputKeyStore.store(out, destPwd);
out.close();
outputKeyStore.deleteEntry(keyAlias);
}
} finally
{
try
{
if (fis != null)
{
fis.close();
}
} catch (Exception e)
{
e.printStackTrace();
}
}
}
/**
* 列出JKS库内所有X509证书的属性
*
* @param jksFilePath
* 证书库路径
* @param jksPasswd
* 证书库密码
* @param algName
* 库类型
*/
public static void listAllCerts(String jksFilePath, String jksPasswd, String algName)
{
try
{
char[] srcPwd = jksPasswd == null ? null : jksPasswd.toCharArray();
FileInputStream in = new FileInputStream(jksFilePath);
KeyStore ks = KeyStore.getInstance(algName);
ks.load(in, srcPwd);
Enumeration<String> e = ks.aliases();
while (e.hasMoreElements())
{
String alias = e.nextElement();
java.security.cert.Certificate cert = ks.getCertificate(alias);
if (cert instanceof X509Certificate)
{
X509Certificate X509Cert = (X509Certificate) cert;
System.out.println("**************************************");
System.out.println("版本号:" + X509Cert.getVersion());
System.out.println("序列号:" + X509Cert.getSerialNumber().toString(16));
System.out.println("主体名:" + X509Cert.getSubjectDN());
System.out.println("签发者:" + X509Cert.getIssuerDN());
System.out.println("有效期:" + X509Cert.getNotBefore());
System.out.println("签名算法:" + X509Cert.getSigAlgName());
System.out.println("输出证书信息:\n" + X509Cert.toString());
System.out.println("**************************************");
}
}
} catch (Exception e)
{
e.printStackTrace();
}
}
/*
* 列出BKS库内所有X509证书的属性
*
* @param jksFilePath
* 证书库路径
* @param jksPasswd
* 证书库密码
* @param algName
* 库类型
*/
public static void listAllCertsBks(String jksFilePath, String jksPasswd, String algName)
{
try
{
char[] srcPwd = jksPasswd == null ? null : jksPasswd.toCharArray();
FileInputStream in = new FileInputStream(jksFilePath);
KeyStore ks = KeyStore.getInstance(algName, new org.bouncycastle.jce.provider.BouncyCastleProvider());
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
ks.load(in, srcPwd);
Enumeration<String> e = ks.aliases();
while (e.hasMoreElements())
{
String alias = e.nextElement();
java.security.cert.Certificate cert = ks.getCertificate(alias);
if (cert instanceof X509Certificate)
{
X509Certificate X509Cert = (X509Certificate) cert;
System.out.println("**************************************");
System.out.println("版本号:" + X509Cert.getVersion());
System.out.println("序列号:" + X509Cert.getSerialNumber().toString(16));
System.out.println("主体名:" + X509Cert.getSubjectDN());
System.out.println("签发者:" + X509Cert.getIssuerDN());
System.out.println("有效期:" + X509Cert.getNotBefore());
System.out.println("签名算法:" + X509Cert.getSigAlgName());
System.out.println("输出证书信息:\n" + X509Cert.toString());
System.out.println("**************************************");
}
}
} catch (Exception e)
{
e.printStackTrace();
}
}
发表评论
-
Android RSA加密解密
2016-11-11 10:44 608Android RSA加密解密 2014-11-24 10:3 ... -
JAVA和.NET使用DES对称加密的区别
2014-05-10 18:54 788JAVA和.NET的系统类库里都有封装DES对称加密的实现方式 ... -
openssl生成公钥私钥对的方法
2012-05-17 18:17 10142在计算机软件开发世界 ... -
openssl的man中文文档
2012-05-16 19:06 2289openssl简介-证书 http://bbs.chinau ... -
openssl 证书转换
2012-05-16 19:02 1769证书转换 PKCS 全称是 Public-Key Cryp ... -
生成android使用的BKS证书
2012-05-10 12:21 2850生成android使用的BKS证书 android 系统中 ... -
SSL Socket双向认证的实现
2012-05-09 10:57 3190SSL Socket双向认证的实现 ... -
SSL双向认证java实现(转)
2012-03-01 18:18 913本文通过模拟场景,介绍SSL双向认证的java实现 默认的情 ... -
SSL的工作流程简介(转)
2012-03-01 16:47 9171:客户端的浏览器向服务器传送客户端 SSL 协议的版本号,加 ... -
SSL工作原理
2011-07-11 09:58 917SSL 是一个安全协议,它 ...
相关推荐
PKCS12与JKS格式转换器,提供pkcs12文件转换成jks文件,可以选择源文件位置,和转换后文件存储位置。
由于生成的证书是jks格式,nginx不能直接用,需要要转成PEM格式,这要用到jks2pfx工具进行转换。 jks2pfx的命令格式:JKS2PFX.bat keystore password alias exportname keystore:KeyStore文件绝对路径 password:...
转换jks、p12、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
1. cer格式——>JKS (keytool 为JDK自带的,可以在bin目录下找到) ...OpenSSL> pkcs12 –in d:\tomcatclient.p12 –out d:\key.pem 4. cer格式——>pem x509 –in d:\wer.cer –inform –out d:\ope.pem
Java平台默认识别jks格式的证书文件,但是android平台只识别bks格式的证书文件。官网下载很慢,因此下载下来放到csdn供需要的人下载
BKS来自BouncyCastleProvider,它使用的也是TripleDES来保护密钥库中的Key,它能够防止证书库被不小心修改(Keystore的keyentry改掉1个bit都会产生错误),BKS能够跟JKS互操作。 JKS和JCEKS是Java密钥库(KeyStore)的...
将jks文件生成pfx文件的工具,亲测可以使用。 例如: JKS2PFX server.jks 123456 tomcat exportfile c:\progra~1\Java\jre1.5.0_06\bin 该命令将server.jks中别名为tomcat...openssl pkcs12 -info -in exportfile.pfx
JKS2PFX证书转换工具
使用keytool.exe,将jks格式证书转换成pfx格式证书。由于本工具未包括keytool.exe 需要安装jdk 才能够正常运行。 没有积分的用户可以根据以下命令行手动导出(keytool.exe 可以在jdk安装目录中找到): keytool.exe ...
https证书格式转换(bks bksv-1 cer jks) 各种证书的生成,比如P12证书转BKS证书。BKS证书转P12
JKS2PFX证书转换工具 支持jdk生成证书转换
nginx证书转换jks,将jks文件导出为Nginx所需要的文件.crt和.key
文档主要包括三部分内容 ... openssl生成的pem格式证书转换为p12(pfx/pkcs12)、jks格式证书 keytool生成的jks证书转换为 p12(pfx/pkcs12)、pem格式证书 4。证书安全说明 常用crt/cer、pem、p12/pfx、jks解释说明
srckeystore E:\androidstudio\androidstudio_work\CommonDemo\app\fast_keystore.jks -destkeystore E:\androidstudio\androidstudio_work\CommonDemo\app\fast_keystore.jks -deststoretype pkcs12” 迁移到行业...
由于生成的证书是jks格式,nginx不能直接用,需要要转成PEM格式,这要用到jks2pfx工具进行转换。 jks2pfx的命令格式:JKS2PFX.bat keystore password alias exportname keystore:KeyStore文件绝对路径 将jks文件...
Tomcat9.0安装JKS格式SSL证书;资源装包含了tomcat需要配置的文件,下载下来覆盖原始的文件,要把证书名和密码换成自己的就行
javakeytool支持的类型及如何将证书导入jks中.docx
golang解析数字证书 PKCS#1 PKCS#8格式的私钥