`

从JKS文件中读取密钥

    博客分类:
  • java
 
阅读更多

JKS文件是一个java中的密钥管理库,里面可以放各种密钥文件,JKS文件的生成这里暂且不说,这里主要是关注如何从JKS文件中将已有的密钥读取出来。

 

下面是两个java读取JKS文件中密钥的方法

当然在看懂下面两个方法之前要对JKS文件的结构有所了解:

JKS文件就好像一个仓库,里面可以放很多的东西,这里只存放一类东西就是密钥,仓库当然会有一把锁,防范别人随便乱拿,这个就是JKS文件的密码。里面存放的密钥也各有不同,每个密钥都有一个名字(在下面叫别名),一类就密钥对,一类叫公钥,一类叫私钥,密钥对就是包含公钥和私钥的。这里的公钥只要你能进入仓库你就可以随便查看拿走,私钥则是有密码的,只允许有权限的人查看拿走。所以在下面读取密钥时也就有点细微的不同之处,对于读取公钥只需要知道JKS文件(仓库)的密码就可以了,但是在读取私钥时则必须有私钥的密码也就是你必须要有权限,在下面你会发现,在读取私钥时多了一个参数,对应的就是私钥的密码。

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->


import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
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.CertificateException;

import javax.security.cert.Certificate;

public class JKSTesting {
public static PublicKey getPublicKey(String keyStoreFile,
String storeFilePass, String keyAlias)
{

// 读取密钥是所要用到的工具类
KeyStore ks;

// 公钥类所对应的类
PublicKey pubkey = null;
try {

// 得到实例对象
ks = KeyStore.getInstance("JKS");
FileInputStream fin;
try {

// 读取JKS文件
fin = new FileInputStream(keyStoreFile);
try {
// 读取公钥
ks.load(fin, storeFilePass.toCharArray());
java.security.cert.Certificate cert
= ks
.getCertificate(keyAlias);
pubkey
= cert.getPublicKey();
}
catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
catch (CertificateException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}

}
catch (FileNotFoundException e) {
e.printStackTrace();
}

}
catch (KeyStoreException e) {
e.printStackTrace();
}

return pubkey;
}


/** *//**
* 得到私钥
*
*
@param keyStoreFile
* 私钥文件
*
@param storeFilePass
* 私钥文件的密码
*
@param keyAlias
* 别名
*
@param keyAliasPass
* 密码
*
@return
*/

public static PrivateKey getPrivateKey(String keyStoreFile,
String storeFilePass, String keyAlias, String keyAliasPass)
{
KeyStore ks;
PrivateKey prikey
= null;
try {
ks
= KeyStore.getInstance("JKS");
FileInputStream fin;
try {
fin
= new FileInputStream(keyStoreFile);
try {
try {
ks.load(fin, storeFilePass.toCharArray());
// 先打开文件
prikey = (PrivateKey) ks.getKey(keyAlias, keyAliasPass
.toCharArray());
// 通过别名和密码得到私钥
}
catch (UnrecoverableKeyException e) {
e.printStackTrace();
}
catch (CertificateException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}

}
catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}

}
catch (FileNotFoundException e) {
e.printStackTrace();
}

}
catch (KeyStoreException e) {
e.printStackTrace();
}

return prikey;
}


public static void main(String[] args) {
PublicKey publicKey;
PrivateKey privateKey;

publicKey
=getPublicKey("C:\\aaa.jks","AAAAAAAA", "ibmwebspheremq");
privateKey
=getPrivateKey("C:\\aaa.jks","AAAAAAAA", "ibmwebspheremq","AAAAAAAA");

System.out.println(publicKey.toString());
System.out.println(privateKey.toString());
}

}
分享到:
评论

相关推荐

    jks2pfx工具

    4. 在这个过程中,OpenSSL工具会根据openssl.conf配置文件的指示,读取JKS文件中的私钥和证书,并将其打包成PFX文件(例如:mykeystore.pfx)。 5. 最后,转换完成后,生成的PFX文件可以导入到需要的系统或应用程序...

    JKS2PFX证书转换工具

    3. 脚本会调用ExportPrvKey.java或者使用OpenSSL命令行工具读取JKS文件,提取私钥并将其与证书一起打包成PFX格式。 4. 最后,生成的PFX文件可以导入到目标系统,如IIS服务器或Windows证书存储中。 这个过程涉及到的...

    was8.5.5配置https步骤.docx

    8. WAS会从JKS文件中读取密钥的别名,选择JKS中的密钥别名,并输入导入到WAS后的别名,然后点击“确定”。 9. 点击“保存”到主配置。 10. 选中“default”别名,点击“替换”选择“替换为‘websphere’”,点击...

    JKS 输入表加密工具

    1. **密钥管理**:允许用户创建、导入、导出和管理JKS文件中的密钥对。这包括公钥和私钥,私钥用于解密数据,公钥则用于加密数据,确保只有拥有相应私钥的持有者才能访问信息。 2. **证书管理**:工具支持添加、...

    jce_policy-6

    转换过程通常涉及到读取JKS文件中的条目,然后将其导出并导入到BKS文件中,确保密钥和证书的安全迁移。 总结一下,"jce_policy-6"这个压缩包包含的是与Java加密相关的资源,特别是关于解除加密强度限制的政策文件,...

    License管理_流程和页面设计

    3. 根据密钥仓库中的所有入口地址得到对应的私钥信息,读取license.properties文件,生成license文件并保存。 License文件的验证流程包括以下步骤: 1. 输入访问密码以及用于提取公钥信息的序列码(时间变量)。 2....

    Java数字证书的一些实例

    ### Java数字证书实例详解 #### 一、所需导入的包 ...以上步骤展示了如何在Java中实现数字证书的基本操作,包括从文件或密钥库中读取证书、展示证书信息、更新密钥库密码等。这对于开发安全的网络应用非常有用。

    WebSphere 6.1 SSL配置

    在 WAS 中,需要创建一个密钥库文件(WASkey.jks),然后生成一个自签名证书(WAScert)。 在创建密钥库和证书之后,需要将其导入到对方的系统中。在 IHS 中,需要导入 WAS 中抽取的证书(WAStoIHScert.arm),而在...

    jks-js:从Java密钥库中提取PEM证书,以便使用节点js安全地连接到基于Java的服务器

    JKS-JS 描述 jks-js是到PEM证书的转换器,以便使用节点js安全地连接到基于Java的服务器。 安装 npm install jks - js 用法 ... const jks = require ( 'jks-js' ) ; const keystore = jks . toPem ( fs . ...

    JAVA对数字证书的常用操作

    通过文件输入流`FileInputStream`读取证书文件,并使用`generateCertificate`方法从文件中生成证书对象。最后,通过调用`toString()`方法输出证书的信息。 #### 三、从密钥库中直接读取证书 此部分代码演示了如何...

    数字证书格式详细说明

    从 p12/pfx 文件中提取密钥对及其长度可以按照以下步骤进行: 1. 读取 pfx/p12 文件(需要提供保护密码)。 2. 通过别名(Alias)提取你想要分析的证书链。 3. 再将其转换为一个以 X509 证书结构体。 4. 提取里面的...

    golang解析数字证书

    使用`ioutil.ReadFile`读取.crt文件,然后使用`x509.ParseCertificate`解析证书。 ```go certBytes, err := ioutil.ReadFile("certificate.crt") if err != nil { // 处理错误 } cert, err := x509....

    Android local.properties 文件读取实例详解

    然后,通过InputStream从文件中读取数据,并调用load方法将文件内容加载到Properties对象中。之后,我们就可以通过getProperty方法获取到具体的配置信息,比如sdk路径、签名文件的别名、密钥密码以及存储密码等,并...

    https单向验证小工具类

    1. **读取配置文件信息**:为了避免在代码中硬编码敏感信息,如证书路径、密码等,工具类会从配置文件中读取这些信息。这提高了代码的可维护性和安全性。配置文件通常采用JSON、XML或properties格式,包含证书路径、...

    cxf 数字安全证书 生成工具

    配置文件(如`cxf.xml`或类似的)将包含关于证书路径、密钥别名、密码等关键信息,这些信息CXF在运行时需要读取以正确地处理安全设置。 总结起来,这个工具包提供了生成和配置CXF Web服务数字证书的全套解决方案,...

    Android_apk打包签名

    - `-keystore your_keystore_file.jks` 指定存储密钥的keystore文件及其名称。 2. 使用Key签名APK:使用`jarsigner`命令对APK进行签名,如: ``` jarsigner -verbose -keystore your_keystore_file.jks your_apk...

    keystoke证书转换nginx证书工具

    1. 使用`keytool`从`.keystore`文件中导出公钥证书,生成`.crt`文件。 2. 同样使用`keytool`导出私钥,生成`.key`文件。 3. 可能还需要合并`.key`和`.crt`文件到一个`.pem`文件,以便Nginx能够读取。 4. 对于`.pfx`...

    Android 中Failed to read key from keystore解决办法

    Failed to read key from keystore是一个常见的 Android 编译错误,具体来说是指在 Android 打包过程中无法读取 keystore 文件中的密钥所导致的错误。本文将详细介绍该错误的解决办法,并提供相关的知识点。 知识...

    platform.pk8和platform.x509.pem以及Signapk工具

    在实际操作中,开发者或系统集成者需要谨慎处理这些密钥文件,因为私钥一旦泄露,可能导致系统安全性的严重威胁。因此,通常会将私钥保管在高度安全的环境中,避免被非法获取。 总之,“platform.pk8”、“platform...

Global site tag (gtag.js) - Google Analytics