JKS文件是一个java中的密钥管理库,里面可以放各种密钥文件,JKS文件的生成这里暂且不说,这里主要是关注如何从JKS文件中将已有的密钥读取出来。
下面是两个java读取JKS文件中密钥的方法
当然在看懂下面两个方法之前要对JKS文件的结构有所了解:
JKS文件就好像一个仓库,里面可以放很多的东西,这里只存放一类东西就是密钥,仓库当然会有一把锁,防范别人随便乱拿,这个就是JKS文件的密码。里面存放的密钥也各有不同,每个密钥都有一个名字(在下面叫别名),一类就密钥对,一类叫公钥,一类叫私钥,密钥对就是包含公钥和私钥的。这里的公钥只要你能进入仓库你就可以随便查看拿走,私钥则是有密码的,只允许有权限的人查看拿走。所以在下面读取密钥时也就有点细微的不同之处,对于读取公钥只需要知道JKS文件(仓库)的密码就可以了,但是在读取私钥时则必须有私钥的密码也就是你必须要有权限,在下面你会发现,在读取私钥时多了一个参数,对应的就是私钥的密码。
/**
* 得到公钥
*
* @param keyStoreFile
* 公钥文件名
* @param storeFilePass
* 公钥文件的PASS
* @param keyAlias
* 公钥别名
* @return 公钥
*/
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());
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;
}
分享到:
相关推荐
4. 在这个过程中,OpenSSL工具会根据openssl.conf配置文件的指示,读取JKS文件中的私钥和证书,并将其打包成PFX文件(例如:mykeystore.pfx)。 5. 最后,转换完成后,生成的PFX文件可以导入到需要的系统或应用程序...
3. 脚本会调用ExportPrvKey.java或者使用OpenSSL命令行工具读取JKS文件,提取私钥并将其与证书一起打包成PFX格式。 4. 最后,生成的PFX文件可以导入到目标系统,如IIS服务器或Windows证书存储中。 这个过程涉及到的...
8. WAS会从JKS文件中读取密钥的别名,选择JKS中的密钥别名,并输入导入到WAS后的别名,然后点击“确定”。 9. 点击“保存”到主配置。 10. 选中“default”别名,点击“替换”选择“替换为‘websphere’”,点击...
1. **密钥管理**:允许用户创建、导入、导出和管理JKS文件中的密钥对。这包括公钥和私钥,私钥用于解密数据,公钥则用于加密数据,确保只有拥有相应私钥的持有者才能访问信息。 2. **证书管理**:工具支持添加、...
转换过程通常涉及到读取JKS文件中的条目,然后将其导出并导入到BKS文件中,确保密钥和证书的安全迁移。 总结一下,"jce_policy-6"这个压缩包包含的是与Java加密相关的资源,特别是关于解除加密强度限制的政策文件,...
3. 根据密钥仓库中的所有入口地址得到对应的私钥信息,读取license.properties文件,生成license文件并保存。 License文件的验证流程包括以下步骤: 1. 输入访问密码以及用于提取公钥信息的序列码(时间变量)。 2....
### Java数字证书实例详解 #### 一、所需导入的包 ...以上步骤展示了如何在Java中实现数字证书的基本操作,包括从文件或密钥库中读取证书、展示证书信息、更新密钥库密码等。这对于开发安全的网络应用非常有用。
在 WAS 中,需要创建一个密钥库文件(WASkey.jks),然后生成一个自签名证书(WAScert)。 在创建密钥库和证书之后,需要将其导入到对方的系统中。在 IHS 中,需要导入 WAS 中抽取的证书(WAStoIHScert.arm),而在...
JKS-JS 描述 jks-js是到PEM证书的转换器,以便使用节点js安全地连接到基于Java的服务器。 安装 npm install jks - js 用法 ... const jks = require ( 'jks-js' ) ; const keystore = jks . toPem ( fs . ...
通过文件输入流`FileInputStream`读取证书文件,并使用`generateCertificate`方法从文件中生成证书对象。最后,通过调用`toString()`方法输出证书的信息。 #### 三、从密钥库中直接读取证书 此部分代码演示了如何...
从 p12/pfx 文件中提取密钥对及其长度可以按照以下步骤进行: 1. 读取 pfx/p12 文件(需要提供保护密码)。 2. 通过别名(Alias)提取你想要分析的证书链。 3. 再将其转换为一个以 X509 证书结构体。 4. 提取里面的...
使用`ioutil.ReadFile`读取.crt文件,然后使用`x509.ParseCertificate`解析证书。 ```go certBytes, err := ioutil.ReadFile("certificate.crt") if err != nil { // 处理错误 } cert, err := x509....
然后,通过InputStream从文件中读取数据,并调用load方法将文件内容加载到Properties对象中。之后,我们就可以通过getProperty方法获取到具体的配置信息,比如sdk路径、签名文件的别名、密钥密码以及存储密码等,并...
1. **读取配置文件信息**:为了避免在代码中硬编码敏感信息,如证书路径、密码等,工具类会从配置文件中读取这些信息。这提高了代码的可维护性和安全性。配置文件通常采用JSON、XML或properties格式,包含证书路径、...
配置文件(如`cxf.xml`或类似的)将包含关于证书路径、密钥别名、密码等关键信息,这些信息CXF在运行时需要读取以正确地处理安全设置。 总结起来,这个工具包提供了生成和配置CXF Web服务数字证书的全套解决方案,...
- `-keystore your_keystore_file.jks` 指定存储密钥的keystore文件及其名称。 2. 使用Key签名APK:使用`jarsigner`命令对APK进行签名,如: ``` jarsigner -verbose -keystore your_keystore_file.jks your_apk...
1. 使用`keytool`从`.keystore`文件中导出公钥证书,生成`.crt`文件。 2. 同样使用`keytool`导出私钥,生成`.key`文件。 3. 可能还需要合并`.key`和`.crt`文件到一个`.pem`文件,以便Nginx能够读取。 4. 对于`.pfx`...
Failed to read key from keystore是一个常见的 Android 编译错误,具体来说是指在 Android 打包过程中无法读取 keystore 文件中的密钥所导致的错误。本文将详细介绍该错误的解决办法,并提供相关的知识点。 知识...
在实际操作中,开发者或系统集成者需要谨慎处理这些密钥文件,因为私钥一旦泄露,可能导致系统安全性的严重威胁。因此,通常会将私钥保管在高度安全的环境中,避免被非法获取。 总之,“platform.pk8”、“platform...