keytool -genkey -alias test -keyalg RSA -keystore c:/key.store
生成keyStore
RSA是一个既能用于数据加密也能用于数字签名的算法。
DSA(Digital Signature Algorithm,数字签名算法,用作数字签名标准的一部分),它是另一种公开密钥算法,它不能用作加密,只用作数字签名。DSA使用公开密钥,为接受者验证数据的完整性和数据发送者的身份。
提取证书:
通过keytool命令我们可以很轻松的提取证书.
证书包括主体信息,公钥.
keytool -export -alias 别名 -keystore 文件名 -file 证书名称
但是我们无法通过KEYTOOL工具来提取私钥的..我们只能通过java的KeyStore类getEntry() 或者getKey()来提取私钥.
读取keyStore文件:
char[] password = "password".toCharArray();
java.io.FileInputStream fis = new java.io.FileInputStream("c:/server/server_keystore");
// 从指定的输入流中加载此 KeyStore
ks.load(fis, password);
//keystore 中的每一项都用“别名”字符串标识。
//使用指定保护参数获取指定别名的 keystore Entry
。
//KeyStore.PrivateKeyEntry 保存 PrivateKey
和相应证书链的 KeyStore
项。
方法1. KeyStore.PrivateKeyEntry pkEntry = (KeyStore.PrivateKeyEntry) ks.getEntry(
"keystore别名",
new KeyStore.PasswordProtection(
password));
// 返回与给定别名相关联的密钥
方法2. PrivateKey key = (PrivateKey) ks.getKey("ser", password);
怎么来验证提取的私钥是否正确呢?(因为公钥私钥必须成对出现,我们可以通过证书提取去公钥,然后用公钥加密,使用刚刚获得的私钥解密)
提取证书的方法:
keytool -export -alias 别名 -keystore 文件名 -file 证书名称
//通过证书,获取公钥
CertificateFactory cf = CertificateFactory.getInstance("X.509");
FileInputStream in = new FileInputStream("C:\\server\\server.cer");
//生成一个证书对象并使用从输入流 inStream
中读取的数据对它进行初始化。
Certificate c = cf.generateCertificate(in);
PublicKey publicKey = c.getPublicKey();
//通过下面这段代码提取的私钥是否正确
String before = "asdf";
byte[] plainText = before.getBytes("UTF-8");
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
// 用公钥进行加密,返回一个字节流
byte[] cipherText = cipher.doFinal(plainText);
cipher.init(Cipher.DECRYPT_MODE, myPrivateKey);
// 用私钥进行解密,返回一个字节流
byte[] newPlainText = cipher.doFinal(cipherText);
System.out.println(new String(newPlainText, "UTF-8"));
分享到:
相关推荐
根据压缩包子文件的文件名称"2.KeyStore私钥和证书提取.bat"和"keyExport.jar",我们可以推测这包含了一个批处理脚本和一个Java应用程序,用于执行私钥和证书的导出。批处理脚本可能调用了`keytool`命令,而`key...
在Java开发中,Keystore是用于存储证书和私钥的安全容器。它对于保护敏感信息,如服务器证书或应用签名密钥,至关重要。本主题将详细解释如何从Java Keystore导出`.pfx`、`.key`和`.crt`文件,这些都是在网络安全中...
在Java安全体系中,keystore是一个存储证书和私钥的安全容器。它可能包含用户自己的私钥及其对应的公开证书,也可能包含其他各方的证书。这些证书通常用于SSL/TLS连接、代码签名或电子邮件加密等用途。keystore_...
正确管理数字证书和密钥,能够有效防止中间人攻击,保护用户的隐私,维护网络服务的安全性。因此,掌握这些工具的使用方法,了解keystore、crt和key的概念及其相互关系,对于提升网络安全性具有重要意义。
总的来说,这个压缩包为开发者提供了一套完整的解决方案,帮助他们从keystore文件中提取必要的私钥和公钥文件,以便使用signapk工具对APK进行签名。通过理解keystore的结构、pk8和x509.pem的用途,以及如何进行转换...
使用Java的KeyStore类和其他加密库,这个JAR文件能够读取`.keystore`,提取私钥并将其转换为PKCS#8格式,同时导出证书为X.509 PEM格式。 `readme.txt`文件很关键,它会提供详细的操作指南和注意事项。例如,如何...
总之,Java 手工读取 EJBCA 证书并进行加解密操作涉及证书的获取、解析、公钥加密和私钥解密,同时要注意证书的安全管理和使用。这些步骤是 PKI 系统中进行安全通信的基础。在实际项目中,应结合具体的业务需求和...
常见的数字证书格式有 X.509,它定义了两种证书:公钥证书和属性证书。 X.509 证书格式由以下部分组成: * 证书元数据(Certificate Metadata):包括证书所有者的信息、证书序列号、有效期限、公钥信息等。 * ...
“证书解密”通常是指解密用私钥加密的证书,这在恢复证书内容或提取私钥时可能发生。Java的KeyStore类可以帮助管理和操作证书,包括解密。 “证书验证”是检查证书的完整性和有效性,包括验证签名、确认证书链、...
- 导出:从密钥存储中提取证书,可能需要提供私钥,导出的格式可选择PEM(Base64编码)、DER(二进制)或PKCS#12(包含了私钥)。 4. **加解密操作**: - 公钥加密:信息发送方使用接收方的公钥加密数据,只有...
这会将keystore转换为PKCS#12格式,然后用`openssl`提取私钥: ```bash openssl pkcs12 -in myprivatekey.pem -nocerts -out myprivatekey.key ``` 最后,导出.pfx文件,也称为PFX或PKCS#12文件,它包含私钥、公钥...
**Java Keystore (JKS)**是一种存储证书和密钥的标准格式,主要由Java应用程序使用。它包含一个或多个证书和私钥,通常用于HTTPS连接的安全设置。 **Nginx所需证书格式**包括两部分:.crt文件(公钥证书文件)和.key...
6. **获取和使用公钥**:生成的证书文件(cer格式)可以存储公钥,通过解析这个cer文件,我们可以提取公钥进行加密操作。在Java中,可以使用`java.security.cert.CertificateFactory`来从文件加载证书,然后通过`...
3. **证书解析**:能够读取和解释X.509证书,提取出关键信息,如公钥、有效期、颁发者等。 4. **证书操作**:可能还包括导入、导出、更新和删除证书的功能。 5. **安全性**:确保在处理敏感的私钥和证书信息时,遵循...
- **从p12/pfx文件提取密钥对**:需要提供保护密码读取文件,通过别名选择要分析的证书链,然后转换为X509证书结构体,从中提取所需信息,如公钥和私钥长度。 3. X.509与PKCS标准 - **X.509**:定义了公钥证书和...
可以使用Java语言来读取PFX文件并提取其中的证书和密钥。下面是一个简单的示例代码: ```java package org.dev2dev.client.keypair; import java.io.File; import java.io.FileInputStream; import java.io....
`keystore-export.rar`可能是一个包含PFX文件的归档,开发人员需要解压并使用其中的证书和私钥进行实验。 总结来说,这个项目涉及了Java中处理数字证书和使用RSA算法加密解密文件的关键技术。通过理解PFX文件的处理...
`.p12`文件是一种通用的证书存储格式,而`.pem`文件则常用于存储X.509证书和RSA/DSA私钥。此转换适用于多种应用场景,如Web服务器配置等。 #### 操作步骤 - 首先,确保安装了OpenSSL,并将其添加到环境变量中。 - ...
完成这些步骤后,keystore文件中应包含了所有必要的证书和私钥。接下来,我们需要将其转换为kdb格式: 4. 运行IBM的I Key Manager: - 打开"IBM HTTP Server V6.1",启动Key Management Utility,运行I Key ...