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`文件,这些都是在网络安全中常见的证书格式。 首先,`.pfx`(Personal Information Exchange)文件是一种包含证书和私钥的二进制文件,广泛用于...
Java中的KeyStore是用于存储证书、密钥对和信任证书的重要工具,主要应用于安全通信,如SSL/TLS协议。在Java环境中,keytool是用于管理KeyStore的命令行工具,可以进行证书的创建、导入、导出等操作。本文将详细讲解...
标题中的"KeyStore私钥及证书导出,可命令行直接用[2013-11]"指的是一项关于Java KeyStore操作的技术,重点在于如何在命令行环境下导出私钥和证书。KeyStore是Java提供的一种安全服务,用于存储用户的数字证书、私钥...
5. 在导出向导中,选择“是,导出私钥”,因为私钥是证书的核心,不能丢失。 6. 不要勾选任何额外的复选框,如“包含证书路径中的所有证书”或“删除私钥的策略信息”,这可能会导致不必要的安全风险。 7. 设置一...
密钥、密钥对、公钥、证书、、私钥、jks、keystore、truststore、cer、pfx 等概念是信息安全领域中密钥管理和加密技术的重要组成部分。下面对这些概念进行详细的解释和说明: 1. 密钥:指的是公钥和私钥的统称。...
KeyStore是Java用来存储密钥对和证书的容器,它可以包含公钥、私钥以及相应的证书链。私钥用于对数据进行解密和签名,而公钥则用于加密和验证签名。在服务器端,KeyStore通常用于存储服务器的私钥,这确保了只有...
3. PFX(Personal Information Exchange)文件是一种二进制格式,包含了私钥和证书链,常用于导出和导入整个证书库。 4. CER(Certificate)文件是X.509证书的标准格式,包含公钥和证书信息,通常是DER编码,一种二...
它可以生成密钥对,导入/导出证书,以及管理Keystore。然而,本案例中我们不使用keytool,而是通过编程方式生成证书。 4. **Java密钥和证书管理**:在Java中,`java.security.KeyPairGenerator`类用于生成密钥对,`...
在Java中,KeyStore是存储密钥和证书的容器,它可以保存用户的私钥对、服务器的证书、证书链以及受信任的CA证书。KeyStore对象通过`java.security.KeyStore`类来表示,它支持多种类型的存储格式,如JKS(Java ...
它将keystore中的私钥导出为pk8格式,然后使用openssl工具将pk8和公钥证书转换为x509.pem格式。 对于Linux或Unix用户,keystore2pem.sh的工作原理相似,但可能需要先确保openssl工具已经安装。运行脚本时,同样需要...
Java Keytool 是 Java 自带的一个密钥和证书管理工具,能够管理自己的公钥/私钥对及相关证书,用于自我认证、数据完整性以及认证服务。Keytool 将密钥和证书储存在一个所谓的密钥仓库(keystore)中,缺省的密钥仓库...
下面将详细阐述如何在Java中实现数字证书的创建、查看、PIN码修改、导入导出以及删除,并探讨服务器端验证用户权限的过程。 1. **数字证书创建(初始化)**: 创建数字证书通常涉及生成一对密钥——公钥和私钥。...
2. 导出服务端公钥证书:`keytool -export -alias serverkey -keystore server.jks -file server.cer` 这将导出服务端公钥证书,用于客户端验证。 3. 客户端导入服务器端公钥:`keytool -import -alias serverkey -...
Java Keytool是Java自带的一个命令行工具,它允许开发者生成、存储、管理和导出各种类型的密钥对(公钥和私钥)以及数字证书。这些密钥对和证书用于加密、解密、签名和验证签名,确保了代码的安全性和完整性。...
首先,keystore文件包含了公钥和私钥对,以及相关的证书信息。私钥用于解密由公钥加密的数据,而公钥则用于加密需要发送到服务器的数据。keystore中的每个条目都有一个唯一的别名,用于区分不同的密钥对或证书。 ...
keystore导出工具和JKS打开工具是为了管理和操作这些密钥和证书的。例如,管理员可能需要查看keystore中的证书信息,或者将keystore中的证书导出为其他格式,以适应不同的应用场景。 “crt”文件通常指的是X.509...
keystore转pk8意味着将keystore中的私钥导出为pk8格式,这是Java密钥库中私钥的标准编码格式。keystore转pem则表示将keystore中的公钥证书转换为x509.pem格式,这是一种常见的公钥证书格式,易于阅读和交换。 ...
Keystore 是一个安全的数据库,用于存储公钥和私钥对、证书以及信任锚(根证书)。在网络安全中,这些密钥和证书用于身份验证、数据加密以及数字签名。Java 提供了 `keytool` 工具来创建、管理及操作 keystore。 2...
Keystore是Java提供的一种安全机制,用于存储用户的私钥、公钥、证书以及密码等敏感信息。在SSL/TLS协议中,Keystore通常包含服务器的数字证书,用于验证服务器的身份,并为客户端提供加密服务。 2. **Portecle...
它存储了数字证书、私钥、公钥和其他安全凭据,确保数据传输的安全性。 在WebLogic、WebSphere、Tomcat等主流应用服务器上,配置SSL服务时,Keystore工具至关重要。SSL(Secure Socket Layer)或其更新版本TLS...