`
wangxuliangboy
  • 浏览: 210710 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

keystore提取私钥和证书

阅读更多

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"));

 

 

分享到:
评论

相关推荐

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

    根据压缩包子文件的文件名称"2.KeyStore私钥和证书提取.bat"和"keyExport.jar",我们可以推测这包含了一个批处理脚本和一个Java应用程序,用于执行私钥和证书的导出。批处理脚本可能调用了`keytool`命令,而`key...

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

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

    keystore_export导出密钥工具

    在Java安全体系中,keystore是一个存储证书和私钥的安全容器。它可能包含用户自己的私钥及其对应的公开证书,也可能包含其他各方的证书。这些证书通常用于SSL/TLS连接、代码签名或电子邮件加密等用途。keystore_...

    数字证书查看、拆分和格式转换工具

    正确管理数字证书和密钥,能够有效防止中间人攻击,保护用户的隐私,维护网络服务的安全性。因此,掌握这些工具的使用方法,了解keystore、crt和key的概念及其相互关系,对于提升网络安全性具有重要意义。

    转换工具.7z

    总的来说,这个压缩包为开发者提供了一套完整的解决方案,帮助他们从keystore文件中提取必要的私钥和公钥文件,以便使用signapk工具对APK进行签名。通过理解keystore的结构、pk8和x509.pem的用途,以及如何进行转换...

    keystore2pk8.zip|keystore2pk8.zip

    使用Java的KeyStore类和其他加密库,这个JAR文件能够读取`.keystore`,提取私钥并将其转换为PKCS#8格式,同时导出证书为X.509 PEM格式。 `readme.txt`文件很关键,它会提供详细的操作指南和注意事项。例如,如何...

    java手工读取ejbca证书,并加密与解密操作

    总之,Java 手工读取 EJBCA 证书并进行加解密操作涉及证书的获取、解析、公钥加密和私钥解密,同时要注意证书的安全管理和使用。这些步骤是 PKI 系统中进行安全通信的基础。在实际项目中,应结合具体的业务需求和...

    数字证书格式详细说明

    常见的数字证书格式有 X.509,它定义了两种证书:公钥证书和属性证书。 X.509 证书格式由以下部分组成: * 证书元数据(Certificate Metadata):包括证书所有者的信息、证书序列号、有效期限、公钥信息等。 * ...

    数字签名、数字证书分析与Java实现.rar_java 签名 证书_数字签名 rsa_证书_证书解密_证书验证

    “证书解密”通常是指解密用私钥加密的证书,这在恢复证书内容或提取私钥时可能发生。Java的KeyStore类可以帮助管理和操作证书,包括解密。 “证书验证”是检查证书的完整性和有效性,包括验证签名、确认证书链、...

    X509证书的各种操作

    - 导出:从密钥存储中提取证书,可能需要提供私钥,导出的格式可选择PEM(Base64编码)、DER(二进制)或PKCS#12(包含了私钥)。 4. **加解密操作**: - 公钥加密:信息发送方使用接收方的公钥加密数据,只有...

    kestore-export

    这会将keystore转换为PKCS#12格式,然后用`openssl`提取私钥: ```bash openssl pkcs12 -in myprivatekey.pem -nocerts -out myprivatekey.key ``` 最后,导出.pfx文件,也称为PFX或PKCS#12文件,它包含私钥、公钥...

    nginx证书转换jks

    **Java Keystore (JKS)**是一种存储证书和密钥的标准格式,主要由Java应用程序使用。它包含一个或多个证书和私钥,通常用于HTTPS连接的安全设置。 **Nginx所需证书格式**包括两部分:.crt文件(公钥证书文件)和.key...

    java代码生成数字证书

    6. **获取和使用公钥**:生成的证书文件(cer格式)可以存储公钥,通过解析这个cer文件,我们可以提取公钥进行加密操作。在Java中,可以使用`java.security.cert.CertificateFactory`来从文件加载证书,然后通过`...

    安卓android数字证书及扩展项解释生成类库

    3. **证书解析**:能够读取和解释X.509证书,提取出关键信息,如公钥、有效期、颁发者等。 4. **证书操作**:可能还包括导入、导出、更新和删除证书的功能。 5. **安全性**:确保在处理敏感的私钥和证书信息时,遵循...

    数字证书格式 相关知识 和 方法

    - **从p12/pfx文件提取密钥对**:需要提供保护密码读取文件,通过别名选择要分析的证书链,然后转换为X509证书结构体,从中提取所需信息,如公钥和私钥长度。 3. X.509与PKCS标准 - **X.509**:定义了公钥证书和...

    2022如何在Java处理PFX格式证书.docx

    可以使用Java语言来读取PFX文件并提取其中的证书和密钥。下面是一个简单的示例代码: ```java package org.dev2dev.client.keypair; import java.io.File; import java.io.FileInputStream; import java.io....

    JAVA使用数字证书加密文件

    `keystore-export.rar`可能是一个包含PFX文件的归档,开发人员需要解压并使用其中的证书和私钥进行实验。 总结来说,这个项目涉及了Java中处理数字证书和使用RSA算法加密解密文件的关键技术。通过理解PFX文件的处理...

    SSL中各证书的转换

    `.p12`文件是一种通用的证书存储格式,而`.pem`文件则常用于存储X.509证书和RSA/DSA私钥。此转换适用于多种应用场景,如Web服务器配置等。 #### 操作步骤 - 首先,确保安装了OpenSSL,并将其添加到环境变量中。 - ...

    jks文件到kdb格式

    完成这些步骤后,keystore文件中应包含了所有必要的证书和私钥。接下来,我们需要将其转换为kdb格式: 4. 运行IBM的I Key Manager: - 打开"IBM HTTP Server V6.1",启动Key Management Utility,运行I Key ...

Global site tag (gtag.js) - Google Analytics