通常我们得到的SSL证书至少包含三个文件:
ca.pem:CA根证书
cert.pem:ca.pem签发的用户证书
cert.key:用户私钥
视情况可能还有中间CA的证书。
生成JKS文件需要用到Java中的keytool工具,用来生成KeyStore文件。而keytool需要P12格式,因而需要用到openssl将PEM转换为P12。P12同时包含了证书/私钥,通常由密码保护。openssl的pcs12命令参数如下:
我们可以利用该命令把PEM格式的证书和私钥转换成P12格式:
1 |
openssl pkcs12 -export -out cert.p12 -in cert.pem -inkey cert.key -passout pass:yourpassword |
请注意,我们所用的不是-certfile参数:
然后可以使用命令:
1 |
openssl pkcs12 -info -in cert.p12 |
来查看包含了证书和私钥的P12文件:
之后,我们可以使用Java中的keytool工具:
来生成JKS文件:
1 |
keytool.exe -importkeystore -srckeystore cert.p12 -srcstoretype PKCS12 -srcstorepass yourpassword -destkeystore cert.jks -deststorepass yourpassword |
其中的参数为:
请注意,keytool执行时的warning中的JCEKS(实际转换后变成了同时兼容JKS和JCEKS两种的格式)。
我们可以使用keytool的list参数查看JKS中的证书和秘钥:
1 2 |
keytool.exe -list -keystore cert.jks keytool.exe -list -rfc -keystore cert.jks |