keystore与pfx互转

原创 2016年09月22日 09:40:10
package com.eudi.encode;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.security.Key;
import java.security.KeyStore;
import java.security.cert.Certificate;
import java.util.Enumeration;

public class ConvertPFX {
	public static final String PKCS12 = "PKCS12";
	public static final String JKS = "JKS";
	public static final String PFX_KEYSTORE_FILE = "C:\\Users\\zqteng\\Desktop\\shijun\\cloud.hs.pfx";
	public static final String KEYSTORE_PASSWORD = "Hillstone123456";
	public static final String JKS_KEYSTORE_FILE = "C:\\Users\\zqteng\\Desktop\\shijun\\hillstone.keystore";

	/**
	 * 将pfx或p12的文件转为keystore
	 */
	public static void coverTokeyStore() {
		try {
			KeyStore inputKeyStore = KeyStore.getInstance("PKCS12");
			FileInputStream fis = new FileInputStream(PFX_KEYSTORE_FILE);
			char[] nPassword = null;

			if ((KEYSTORE_PASSWORD == null)
					|| KEYSTORE_PASSWORD.trim().equals("")) {
				nPassword = null;
			} else {
				nPassword = KEYSTORE_PASSWORD.toCharArray();
			}

			inputKeyStore.load(fis, nPassword);
			fis.close();

			KeyStore outputKeyStore = KeyStore.getInstance("JKS");

			outputKeyStore.load(null, KEYSTORE_PASSWORD.toCharArray());

			Enumeration enums = inputKeyStore.aliases();

			while (enums.hasMoreElements()) { // we are readin just one
												// certificate.

				String keyAlias = (String) enums.nextElement();

				System.out.println("alias=[" + keyAlias + "]");

				if (inputKeyStore.isKeyEntry(keyAlias)) {
					Key key = inputKeyStore.getKey(keyAlias, nPassword);
					Certificate[] certChain = inputKeyStore
							.getCertificateChain(keyAlias);

					outputKeyStore.setKeyEntry(keyAlias, key,
							KEYSTORE_PASSWORD.toCharArray(), certChain);
				}
			}

			FileOutputStream out = new FileOutputStream(JKS_KEYSTORE_FILE);

			outputKeyStore.store(out, nPassword);
			out.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 将keystore转为pfx
	 */
	public static void coverToPfx() {
		try {
			KeyStore inputKeyStore = KeyStore.getInstance("JKS");
			FileInputStream fis = new FileInputStream(JKS_KEYSTORE_FILE);
			char[] nPassword = null;

			if ((KEYSTORE_PASSWORD == null)
					|| KEYSTORE_PASSWORD.trim().equals("")) {
				nPassword = null;
			} else {
				nPassword = KEYSTORE_PASSWORD.toCharArray();
			}

			inputKeyStore.load(fis, nPassword);
			fis.close();

			KeyStore outputKeyStore = KeyStore.getInstance("PKCS12");

			outputKeyStore.load(null, KEYSTORE_PASSWORD.toCharArray());

			Enumeration enums = inputKeyStore.aliases();

			while (enums.hasMoreElements()) { // we are readin just one
												// certificate.

				String keyAlias = (String) enums.nextElement();

				System.out.println("alias=[" + keyAlias + "]");

				if (inputKeyStore.isKeyEntry(keyAlias)) {
					Key key = inputKeyStore.getKey(keyAlias, nPassword);
					Certificate[] certChain = inputKeyStore
							.getCertificateChain(keyAlias);

					outputKeyStore.setKeyEntry(keyAlias, key,
							KEYSTORE_PASSWORD.toCharArray(), certChain);
				}
			}

			FileOutputStream out = new FileOutputStream(PFX_KEYSTORE_FILE);

			outputKeyStore.store(out, nPassword);
			out.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		coverTokeyStore();
	}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

PFX格式证书和JAVA keyStore证书相互转换

  • 2009年03月05日 18:00
  • 3KB
  • 下载

pfx keystore 证书互换(转载)

import java.io.FileInputStream; import java.io.FileOutputStream; import java.security.Key; ...
  • ssihc0
  • ssihc0
  • 2010年09月16日 10:14
  • 4200

keystore与pfx互转

keystore与pfx互转
  • eudivkfdskf
  • eudivkfdskf
  • 2016年09月22日 09:40
  • 1662

密钥对,公钥,证书,私钥,jks,keystore,truststore,cer,pfx名词说明

转载自:网络地点太多不确定源地址 密钥: 我理解是公钥+私钥的统称。 密钥对: 公钥(证书)和私钥成对存在。通信双方各持有自己的私钥和对方的公钥。自己的私钥需密切保护,而公钥是公开给对...
  • u013923339
  • u013923339
  • 2016年05月18日 22:35
  • 1067

密钥对,公钥,证书,私钥,jks,keystore,truststore,cer,pfx名词说明

转载自:网络地点太多不确定源地址 密钥: 我理解是公钥+私钥的统称。 密钥对: 公钥(证书)和私钥成对存在。通信双方各持有自己的私钥和对方的公钥。自己的私钥需密...
  • w451373766
  • w451373766
  • 2011年12月28日 16:09
  • 17104

服务器证书转换命令(openssl+keytool工具)

1、nginx证书转化为tomcat证书 a、公私钥key转pfx openssl pkcs12 -export -in pub.key-out p.pfx -inkey pri.key b、pfx...
  • duan19056
  • duan19056
  • 2016年07月07日 14:19
  • 1825

证书导入keystore

简介 Java自带的keytool工具是个密钥和证书管理工具。它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务。...
  • kotonohaparty
  • kotonohaparty
  • 2011年10月31日 12:45
  • 8320

不同格式证书导入keystore方法(2)

keytool无法直接导入PKCS12文件。 第一种方法是使用IE将pfx证书导入,再导出为cert格式文件。使用上面介绍的方法将其导入到密钥仓库中。这样的话仓库里面只包含了证书信息,没有私钥内容。...
  • CSDNBenbenChong
  • CSDNBenbenChong
  • 2012年03月16日 16:30
  • 4493

java keystore导出.pfx .key .crt 私钥

  • 2011年06月22日 20:28
  • 560KB
  • 下载

OpenSSL与KeyStore指令小集

前言 最近项目里面用到了SSL双向认证和传输加密的技术,研究了一下,想把相关的指令和代码分享出来,以期后来者能够少踩坑,顺利解决问题。我们的项目服务器是C,客户端为Java,CS架构,中间通过Sock...
  • kimylrong
  • kimylrong
  • 2015年02月05日 11:06
  • 7177
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:keystore与pfx互转
举报原因:
原因补充:

(最多只允许输入30个字)