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, 2018, 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, 2018, 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-----

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值