`
lukejin
  • 浏览: 366152 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

如何导出keystore中的私钥

    博客分类:
  • Java
阅读更多
一般情况下,你通过keytool生成的密钥对中的私钥是无法导出来的,
但是通过自己的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.*;
public class ExportPrivateKey {
private File keystoreFile;
private String keyStoreType;
private char[] password;
private String alias;
private File exportedFile;
public static KeyPair getPrivateKey(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 void export() throws Exception{
KeyStore keystore=KeyStore.getInstance(keyStoreType);
BASE64Encoder encoder=new BASE64Encoder();
keystore.load(new FileInputStream(keystoreFile),password);
KeyPair keyPair=getPrivateKey(keystore,alias,password);
PrivateKey privateKey=keyPair.getPrivate();
String encoded=encoder.encode(privateKey.getEncoded());
FileWriter fw=new FileWriter(exportedFile);
fw.write("—–BEGIN PRIVATE KEY—–\n");
fw.write(encoded);
fw.write("\n");
fw.write("—–END PRIVATE KEY—–");
fw.close();
}
public static void main(String args[]) throws Exception{
ExportPrivateKey export=new ExportPrivateKey();
export.keystoreFile=new File("/Users/Luke/Workspace/StringTest/src/com/lukejin/stringtest/keystore.jks");
export.keyStoreType="JKS";
export.password="changeit".toCharArray();
export.alias="tom_server";
export.exportedFile=new File("luke");
export.export();
}
}

1
0
分享到:
评论

相关推荐

    导出JVM KeyStore中私钥的Java程序

    以上就是使用Java程序导出KeyStore中私钥的流程。在实际应用中,可能还需要处理异常,以及合并私钥和证书链成一个PEM文件,以便Nginx使用。 对于标签"Java keytool keystore SSL",理解这些关键词至关重要。`...

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

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

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

    在Java开发中,Keystore是用于存储证书和私钥的安全容器。它对于保护敏感信息,如服务器证书或应用签名密钥,至关重要。本主题将详细解释如何从Java Keystore导出`.pfx`、`.key`和`.crt`文件,这些都是在网络安全中...

    keystore_export导出密钥工具

    【keystore_export导出密钥工具】是一款基于Java编写的实用程序,专为方便开发者和系统管理员导出由keytool生成的keystore文件中的私钥和证书。keytool是Java SDK自带的一个命令行工具,用于管理数字证书和密钥对,...

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

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

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

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

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

    在 Java 程序中,可以使用 jks 文件来存储公钥和私钥,并使用 keytool.exe 工具来查看、导入、导出和删除密钥。对于 HTTPS 网站,可以使用 jks 文件来存储站方公钥,以便Java程序可以正常访问该网站。 密钥、密钥对...

    kse-543.dmg keystore-explorer: 5.4.3

    只需使用几个简单的对话框就可以创建和修改,导入和导出KeyStore的内容。对Java代码进行签名KeyStore Explorer提供了以JAR和J2ME“ MIDlet”形式对Java应用程序进行数字签名的功能。广泛的格式支持KeyStore Explorer...

    portecle keystore制作工具

    - **导入/导出**:可以导入已有的Keystore文件,或者将Keystore内容导出为其他格式。 - **生成密钥对**:在Keystore中生成RSA、DSA等类型的密钥对,用于SSL/TLS加密。 - **管理证书**:添加、删除或更新Keystore...

    KeyStore Explorer.zip

    在文件中,可能涵盖了如何启动安装程序(kse-540-setup.exe),创建新的KeyStore,导入或导出证书,设置密钥密码,以及将生成的密钥对配置到服务器的SSL配置文件中等内容。 在实际操作中,创建SSL证书通常包括以下...

    keystore_oracle_

    而`keystore.crt`则很可能是已经导出的证书文件,用于在不同的系统之间分享或导入到Keystore中。 综上所述,"keystore_oracle_"的主题涵盖了Oracle数据库的SSL和Keystore管理,这是数据库管理员和安全专业人员必须...

    keystore秘钥文件

    - **导入/导出**:可以使用`keytool`将证书导入到`keystore`,或将`keystore`中的密钥对导出为单独的文件。 - **更新**:如果需要更改`keystore`中的信息,如更新密钥口令或添加新的密钥对,也可以通过`keytool`...

    Android签名文件jks和keystore相互装换.zip

    本教程将详细讲解如何在JKS和Keystore文件之间进行转换,以及如何在命令行中执行这些操作。 首先,我们需要理解JKS和Keystore的区别。JKS是Java密钥库,是Oracle Java平台的标准密钥存储格式。而Keystore是一个更...

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

    java 生成的有私钥的证书导入IE,或者把IE导出的证书导入java的KeyStore

    java-exportpriv.zip

    Java ExportPriv是一个专门为Java开发者设计的开源工具,其主要功能是导出Java Secure Socket Extension (JSSE) Keystore中的私钥。在Java安全框架中,Keystore是一个存储证书、私钥和其他安全凭证的地方,通常用于...

    android系统签名文件(platform.keystore)生成工具

    平台签名文件(platform.keystore)是Android系统中用于签署系统级应用和更新的关键组件。本资源包含了一个用于生成Android 9.0(Pie)系统签名文件的工具集,这将帮助开发者在原生模拟器上运行或安装系统级别的应用...

    Keystore Tool v0.1

    Keystore中每个条目都有一个唯一的别名,对应一个证书或私钥对。 2. **创建Keystore**: 使用`keytool`命令行工具,可以创建一个新的Keystore。用户需要设定一个强密码来保护Keystore,防止未授权访问。例如,`...

    AppKeystore1.0

    每个Android应用都必须使用一个私钥进行签名,这个私钥通常存储在一个Keystore文件中。Keystore文件可以包含多个密钥对,每个密钥对可以用于签署不同的应用。 生成Android Keystore的步骤如下: 1. 使用`keytool`...

    基于java的keytool GUI 图形工具

    2. **导入/导出证书**:你可以将外部的证书导入到Keystore,或者将Keystore中的证书导出。 3. **生成密钥对**:Keytool可以生成RSA或DSA等类型的密钥对,用于加密和解密数据。 4. **查看Keystore信息**:显示...

Global site tag (gtag.js) - Google Analytics