`
happyqing
  • 浏览: 3198092 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java keystore导出证书,导出私钥,导出公钥

    博客分类:
  • java
阅读更多

 

import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.security.Key;
import java.security.KeyPair;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.UnrecoverableKeyException;
import java.security.cert.Certificate;

import sun.misc.BASE64Encoder;

/**
 * 导出证书(base64),导出私钥,导出公钥
 * @author happyqing
 */
public class ExportCert {
	
	//导出证书 base64格式
	public static void exportCert(KeyStore keystore, String alias, String exportFile) throws Exception {
		Certificate cert = keystore.getCertificate(alias);
		BASE64Encoder encoder = new BASE64Encoder();
		String encoded = encoder.encode(cert.getEncoded());
		FileWriter fw = new FileWriter(exportFile);
		fw.write("-----BEGIN CERTIFICATE-----\r\n");	//非必须
		fw.write(encoded);
		fw.write("\r\n-----END CERTIFICATE-----");	//非必须
		fw.close();
	}

	//得到KeyPair
	public static KeyPair getKeyPair(KeyStore keystore, String alias,char[] password) {
		try {
			Key key = keystore.getKey(alias, password);
			if (key instanceof PrivateKey) {
				Certificate cert = keystore.getCertificate(alias);
				PublicKey publicKey = cert.getPublicKey();
				return new KeyPair(publicKey, (PrivateKey) key);
			}
		} catch (UnrecoverableKeyException e) {
		} catch (NoSuchAlgorithmException e) {
		} catch (KeyStoreException e) {
		}
		return null;
	}

	//导出私钥
	public static void exportPrivateKey(PrivateKey privateKey,String exportFile) throws Exception {
		BASE64Encoder encoder = new BASE64Encoder();
		String encoded = encoder.encode(privateKey.getEncoded());
		FileWriter fw = new FileWriter(exportFile);
		fw.write("—–BEGIN PRIVATE KEY—–\r\n");	//非必须
		fw.write(encoded);
		fw.write("\r\n—–END PRIVATE KEY—–");		//非必须
		fw.close();
	}
	
	//导出公钥
	public static void exportPublicKey(PublicKey publicKey,String exportFile) throws Exception {
		BASE64Encoder encoder = new BASE64Encoder();
		String encoded = encoder.encode(publicKey.getEncoded());
		FileWriter fw = new FileWriter(exportFile);
		fw.write("—–BEGIN PUBLIC KEY—–\r\n");		//非必须
		fw.write(encoded);
		fw.write("\r\n—–END PUBLIC KEY—–");		//非必须
		fw.close();
	}

	public static void main(String args[]) throws Exception {
		
		String keyStoreType = "JKS";
		//String keystoreFile = "C:/mykeystore";
		String keystoreFile = "C:/Documents and Settings/zhao/.keystore";
		String password = "123456";
		
		KeyStore keystore = KeyStore.getInstance(keyStoreType);
		keystore.load(new FileInputStream(new File(keystoreFile)), password.toCharArray());
		
		String alias = "cms";
		String exportCertFile = "C:/Documents and Settings/zhao/cms.cer";	
		String exportPrivateFile = "C:/Documents and Settings/zhao/cmsPrivateKey.txt";
		String exportPublicFile = "C:/Documents and Settings/zhao/cmsPublicKey.txt";
		
		ExportCert.exportCert(keystore, alias, exportCertFile);
		KeyPair keyPair = ExportCert.getKeyPair(keystore, alias, password.toCharArray());
		ExportCert.exportPrivateKey(keyPair.getPrivate(), exportPrivateFile);
		ExportCert.exportPublicKey(keyPair.getPublic(), exportPublicFile);
		
		System.out.println("OK");
	}
}
 

 

分享到:
评论

相关推荐

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

    本主题将详细解释如何从Java Keystore导出`.pfx`、`.key`和`.crt`文件,这些都是在网络安全中常见的证书格式。 首先,`.pfx`(Personal Information Exchange)文件是一种包含证书和私钥的二进制文件,广泛用于...

    导出JVM KeyStore中私钥的Java程序

    Java中的KeyStore是用于存储证书、密钥对和信任证书的重要工具,主要应用于安全通信,如SSL/TLS协议。在Java环境中,keytool是用于管理KeyStore的命令行工具,可以进行证书的创建、导入、导出等操作。本文将详细讲解...

    KeyStore私钥及证书导出,可命令行直接用[2013-11]

    标题中的"KeyStore私钥及证书导出,可命令行直接用[2013-11]"指的是一项关于Java KeyStore操作的技术,重点在于如何在命令行环境下导出私钥和证书。KeyStore是Java提供的一种安全服务,用于存储用户的数字证书、私钥...

    PFX软证书(私钥证书)下载及导出方法(请务必交给商户技术部门处理)

    5. 在导出向导中,选择“是,导出私钥”,因为私钥是证书的核心,不能丢失。 6. 不要勾选任何额外的复选框,如“包含证书路径中的所有证书”或“删除私钥的策略信息”,这可能会导致不必要的安全风险。 7. 设置一...

    对密钥,密钥对,公钥,证书,私钥,jks,keystore,truststore,cer,pfx

    密钥、密钥对、公钥、证书、、私钥、jks、keystore、truststore、cer、pfx 等概念是信息安全领域中密钥管理和加密技术的重要组成部分。下面对这些概念进行详细的解释和说明: 1. 密钥:指的是公钥和私钥的统称。...

    java keytool安全证书学习

    KeyStore是Java用来存储密钥对和证书的容器,它可以包含公钥、私钥以及相应的证书链。私钥用于对数据进行解密和签名,而公钥则用于加密和验证签名。在服务器端,KeyStore通常用于存储服务器的私钥,这确保了只有...

    JAVA使用数字证书加密文件

    3. PFX(Personal Information Exchange)文件是一种二进制格式,包含了私钥和证书链,常用于导出和导入整个证书库。 4. CER(Certificate)文件是X.509证书的标准格式,包含公钥和证书信息,通常是DER编码,一种二...

    java代码生成数字证书

    它可以生成密钥对,导入/导出证书,以及管理Keystore。然而,本案例中我们不使用keytool,而是通过编程方式生成证书。 4. **Java密钥和证书管理**:在Java中,`java.security.KeyPairGenerator`类用于生成密钥对,`...

    Java安全_使用JavaAPI管理证书

    在Java中,KeyStore是存储密钥和证书的容器,它可以保存用户的私钥对、服务器的证书、证书链以及受信任的CA证书。KeyStore对象通过`java.security.KeyStore`类来表示,它支持多种类型的存储格式,如JKS(Java ...

    keystore转x509.pem、pk8工具,兼容windows、linux

    它将keystore中的私钥导出为pk8格式,然后使用openssl工具将pk8和公钥证书转换为x509.pem格式。 对于Linux或Unix用户,keystore2pem.sh的工作原理相似,但可能需要先确保openssl工具已经安装。运行脚本时,同样需要...

    javakeytool支持的类型及如何将证书导入jks中.docx

    Java Keytool 是 Java 自带的一个密钥和证书管理工具,能够管理自己的公钥/私钥对及相关证书,用于自我认证、数据完整性以及认证服务。Keytool 将密钥和证书储存在一个所谓的密钥仓库(keystore)中,缺省的密钥仓库...

    java 实现数字证书的操作实现网络安全

    下面将详细阐述如何在Java中实现数字证书的创建、查看、PIN码修改、导入导出以及删除,并探讨服务器端验证用户权限的过程。 1. **数字证书创建(初始化)**: 创建数字证书通常涉及生成一对密钥——公钥和私钥。...

    java生成证书 包括openssl

    2. 导出服务端公钥证书:`keytool -export -alias serverkey -keystore server.jks -file server.cer` 这将导出服务端公钥证书,用于客户端验证。 3. 客户端导入服务器端公钥:`keytool -import -alias serverkey -...

    Java签名证书信息查看工具

    Java Keytool是Java自带的一个命令行工具,它允许开发者生成、存储、管理和导出各种类型的密钥对(公钥和私钥)以及数字证书。这些密钥对和证书用于加密、解密、签名和验证签名,确保了代码的安全性和完整性。...

    kestore-export

    首先,keystore文件包含了公钥和私钥对,以及相关的证书信息。私钥用于解密由公钥加密的数据,而公钥则用于加密需要发送到服务器的数据。keystore中的每个条目都有一个唯一的别名,用于区分不同的密钥对或证书。 ...

    数字证书查看、拆分和格式转换工具

    keystore导出工具和JKS打开工具是为了管理和操作这些密钥和证书的。例如,管理员可能需要查看keystore中的证书信息,或者将keystore中的证书导出为其他格式,以适应不同的应用场景。 “crt”文件通常指的是X.509...

    转换工具.7z

    keystore转pk8意味着将keystore中的私钥导出为pk8格式,这是Java密钥库中私钥的标准编码格式。keystore转pem则表示将keystore中的公钥证书转换为x509.pem格式,这是一种常见的公钥证书格式,易于阅读和交换。 ...

    keystore.zip

    Keystore 是一个安全的数据库,用于存储公钥和私钥对、证书以及信任锚(根证书)。在网络安全中,这些密钥和证书用于身份验证、数据加密以及数字签名。Java 提供了 `keytool` 工具来创建、管理及操作 keystore。 2...

    portecle keystore制作工具

    Keystore是Java提供的一种安全机制,用于存储用户的私钥、公钥、证书以及密码等敏感信息。在SSL/TLS协议中,Keystore通常包含服务器的数字证书,用于验证服务器的身份,并为客户端提供加密服务。 2. **Portecle...

    Keystore Tool v0.1

    它存储了数字证书、私钥、公钥和其他安全凭据,确保数据传输的安全性。 在WebLogic、WebSphere、Tomcat等主流应用服务器上,配置SSL服务时,Keystore工具至关重要。SSL(Secure Socket Layer)或其更新版本TLS...

Global site tag (gtag.js) - Google Analytics