2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > java提取jks文件提取私钥_如何从JKS文件中取出PEM格式证书

java提取jks文件提取私钥_如何从JKS文件中取出PEM格式证书

时间:2019-07-14 12:14:48

相关推荐

java提取jks文件提取私钥_如何从JKS文件中取出PEM格式证书

如何从JKS文件中取出PEM格式证书

两个概念:

truststore:一般用来存储CA证书,所以它没有私钥。

所有从truststore一般只能提取出CA根证书。

keystore:存储普通证书可以私钥。

所有从keystore里面一般能提取出用户证书和用户私钥。

从JKS中提取PEM证书

$ keytool -export -rfc -alias -file -keystore -storepass

alias是定义在keystore里面的entry,可以使用如下命令,查看当前包含哪几个entry:

$ keytool --list -keystore -storepass

例如:

$ keytool --list -keystore server.keystore.jks -storepass

Keystore type: jks

Keystore provider: SUN

Your keystore contains 2 entries

caroot, Dec 13, , trustedCertEntry,

Certificate fingerprint (SHA1): 6D:43:77:F4:42:91:A1:C7:EC:2E:B8:F4:9C:B5:6A:ED:E0:4D:CA:F6

myserver, Dec 13, , PrivateKeyEntry,

Certificate fingerprint (SHA1): 79:F1:B1:C3:DB:22:1D:8B:26:FC:EB:4A:43:C1:DE:F5:92:5C:5B:83

这个JKS包含两个entry,这样在提取证书的时候可以知道alias值为caroot或者myserver。

从JKS中提取KEY

JKS没有直接的办法提取KEY,所以整个过程分三步走:

把JKS转换成P12

$ keytool -importkeystore -srckeystore -destkeystore -deststoretype PKCS12 \

-srcstorepass -deststorepass

从P12文件中提取KEY

$ openssl pkcs12 -in -nodes -nocerts -out -passin pass:

删除多余的垃圾内容

$ sed -i "1,4d"

因为在第二步提出出来的KEY文件包含垃圾头信息:

Bag Attributes

friendlyName: myserer

localKeyID: 54 69 6D 65 20 31 35 34 34 36 39 37 32 32 33 35 31 35

Key Attributes:

-----BEGIN PRIVATE KEY-----

MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCUUDfdlHnAoAYE

DXluQZv64HNfrJzbUeD29OqQ+XWBKfz+6Sc8Ag4c3qEBezdqY6W06FqT8zkXYmOe

...

aBKlYCPpppexmuwTyRGWJxa3Mc0J4q9+EhDxE3XtmLE/2Wm0mm6vecjECHYXs8KZ

RiC8QuO7nMTFMVcWtgGDeA==

-----END PRIVATE KEY-----

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。