- 浏览: 314712 次
- 性别:
- 来自: 重庆
文章分类
- 全部博客 (286)
- 设计模式 (14)
- spring (5)
- 开发工具 (12)
- java (19)
- apache.commons工具 (7)
- ibaits (5)
- extjs4.0 (4)
- 数据库 (2)
- spring工具类 (2)
- jquery1.8 (32)
- 杂记 (1)
- linux (2)
- Quart (1)
- springMVC (2)
- webservice (1)
- oracle (5)
- dwr (6)
- jbmp3 (27)
- lucene3.5 (27)
- javascript (18)
- hibernate3.3.2 (27)
- spring事务管理 (10)
- nio (2)
- strust2 (3)
- jvm (7)
- jquery-easyui-1.2.6 (22)
- 多线程 (14)
- maven (3)
- 常用正则表达式 (4)
最新评论
-
HF_SKY000:
请问:
一、能否提供一下密钥库文件的生成方法?
二、密钥库的密 ...
Java sslSocket 聊天实例
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());
}
}
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());
}
}
发表评论
-
http协议 文件下载原理及多线程断点续传
2014-06-18 17:28 1529最近研究了一下关于文件下载的相关内容,觉得还是写些东西记下 ... -
Java安全通信:HTTPS与SSL
2014-04-18 17:37 6551. HTTPS概念 1)简介 ... -
Java KeyStore的类型
2014-04-18 15:05 832JKS和JCEKS是Java密钥库(KeyStore)的两种 ... -
对https的理解
2014-03-20 11:39 1816一、什么是HTTPS在说HTTPS之前先说说什么是HTTP ... -
BigDecimal四舍五入的问题
2013-03-15 10:33 970System.out.println(new BigDec ... -
java正则表达式
2012-08-28 11:34 1142在Sun的Java JDK 1.40版本中 ... -
JAVA中使用FTPClient实现文件上传下载
2012-08-24 15:48 803在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上 ... -
java 数字签名
2012-08-07 11:04 1177发送报文时,发送方用 ... -
Java进行数据加密
2012-06-26 16:41 913本文主要谈一下密码学 ... -
常见加密算法
2012-06-26 16:24 1012DES(Data Encryption Standard):对 ... -
消息摘要
2012-06-26 16:22 831消息摘要(Message Digest)又称为数字摘要(D ... -
UML 依赖 关联 聚合 组合
2012-06-25 09:54 1287<1>依赖 依赖关系用虚线加箭头表示,如图所示: ... -
Java sslSocket 聊天实例
2012-06-18 10:46 2122------------------------------- ... -
keytool证书与密钥管理
2012-06-18 10:44 14691)创建服务端密钥库 > ... -
Java ssl socket 双向认证
2012-06-18 10:37 1622总体思路步骤是 1. 分别生成客户端何服务器端 ... -
JAVA String.format 方法使用介绍
2012-06-13 16:51 761JAVA String.format 方法使用 ... -
HttpUrlConnection使用
2011-11-10 17:46 3893下边的总结对我帮助蛮大的~不仅用法了解,整个连接流程也要明 ... -
java i/o
2010-07-16 14:33 842java.io在Java类库中,IO部分的内容是很庞大的,因为 ...
相关推荐
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...