如何提取JKS文件的证书和私钥?

文章来源

https://jingyan.baidu.com/article/066074d61de50cc3c21cb0ba.html

验证命令如下:

    > 生成证书文件:
	keytool -genkey -alias server_cert -keypass 12345678 -keyalg RSA -keysize 1024 -validity 365
	-keystore C:\Users\xxxx\Desktop\jarsigner\self-signed-certificate\server.keystore -storepass 87654321
	
	> 查看证书详情:
	keytool -list -v -keystore C:\Users\xxxx\Desktop\jarsigner\self-signed-certificate\server.keystore 
	-storepass 87654321
	
	> keystore文件生成cer文件:
	keytool -export -alias server_cert 
	-keystore C:\Users\xxxx\Desktop\jarsigner\self-signed-certificate\server.keystore
	-file C:\Users\xxxx\Desktop\jarsigner\self-signed-certificate\tomcat_server.cer
	
	> 打印证书信息:
	keytool -list -rfc -keystore C:\Users\xxxx\Desktop\jarsigner\self-signed-certificate\server.keystore 
	-storepass 87654321
	
	> 提取公钥(证书):
	将上一步(打印证书信息)中公钥信息复制到server.txt中保存后,将server.txt文件重新命名为:server.cer文件即可。
	
	> 提取私钥
	keytool -v -importkeystore 
	-srckeystore C:\Users\xxxx\Desktop\jarsigner\self-signed-certificate\server.keystore 
	-srcstoretype jks -srcstorepass 87654321 
	-destkeystore C:\Users\xxxx\Desktop\jarsigner\self-signed-certificate\server.pfx 
	-deststoretype pkcs12 -deststorepass 876543210 -destkeypass 12345678
		其中原密钥口令为:12345678
		
	openssl pkcs12 -in C:\Users\xxxx\Desktop\jarsigner\self-signed-certificate\server.pfx -nocerts -nodes 
	-out C:\Users\xxxx\Desktop\jarsigner\self-signed-certificate\server.key
		其中Enter Import Password:876543210

证书生成如下:

如何提取JKS文件的证书和私钥?_第1张图片


所谓JKS(Java Key Store)就是利用Java Keytool 工具生成的Keystore文件,JKS文件由公钥和密钥构成,其中的公钥就是我们所说的证书,即cer为后缀的文件,而私钥就是密钥,即以key为后缀的文件。本文主要介绍如何通过Keytool结合Openssl提取jks文件的公钥和私钥。

如何提取JKS文件的证书和私钥?_第2张图片


前提:

  • OpenSSL

一、准备工作

下图中的server.jks文件为小编用java keytools生成的密钥库文件。其中server.keystore和server.jks效果等同。

如果想了解如何用Keytool生成jks文件请参阅如下链接。

https://blog.csdn.net/u013412772/article/details/103726154 (keytool如何生成自签名证书?)

二、提取公钥(证书)

切换到证书的存储路径,执行如下命令:

keytool -list -rfc -keystore server.jks -storepass 87654321

则可以将证书信息打印到屏幕上。

如何提取JKS文件的证书和私钥?_第3张图片
将上图中的字符串复制保存到新建的server.txt文件中

如何提取JKS文件的证书和私钥?_第4张图片
将文件server.txt后缀名改为cer,双击打开cer文件即可以看见证书信息。

如何提取JKS文件的证书和私钥?_第5张图片

三、提取私钥

jks文件中的私钥不能直接得到,需要通过openssl将jks文件转换成pfx格式后再进行提取。

执行如下命令将server.jks文件转换成server.pfx文件:

keytool -v -importkeystore -srckeystore server.jks -srcstoretype jks 
-srcstorepass 87654321 -destkeystore server.pfx -deststoretype pkcs12 
-deststorepass 876543210 -destkeypass 12345678

如何提取JKS文件的证书和私钥?_第6张图片
执行如下命令便可以将servers.pfx的私钥导出:

openssl pkcs12 -in server.pfx -nocerts -nodes -out server.key

如何提取JKS文件的证书和私钥?_第7张图片
执行vim server.key命令,便可以看到pfx文件的私钥信息
如何提取JKS文件的证书和私钥?_第8张图片
有些网站提供了将jks文件转换成pfx文件的功能,但是都需要输入文件的密码(keystorepass),存在安全隐患!不建议使用。

你可能感兴趣的:(如何提取JKS文件的证书和私钥?)