如何仅使用keytool导出包括根证书在内的所有中间证书

时间:2015-05-07 04:28:44

标签: java ssl ssl-certificate

我正在尝试配置SSL并从服务器团队获取.pfx文件。 证书链长:2

当我尝试使用keytool导出证书链时,只导出第一个证书。

尝试确定在发出keytool命令时是否还有其他参数丢失。

我使用的命令是:

1)pfx

不支持转换为JKS作为别名
keytool -importkeystore -srckeystore "serverauth.pfx" -srcstoretype pkcs12 -destkeystore "serverauth.jks" 

2)尝试使用以下方法导出证书。

keytool -export -alias 1 -keystore "serverauth.jks" -rfc -file "authclient.cert" 

但是上面的命令只生成第一个证书。

如果我删除整个别名选项,则会收到错误

keytool error: java.lang.Exception: Alias <1> does not exist

还有其他流程吗?

3 个答案:

答案 0 :(得分:9)

这适用于Java 8,以将整个证书链导出到文件:

keytool -list -alias yourcert -keystore /path/to/keystore -rfc

与export相同的格式,但它会转储整个链。您丢失了-file选项,但您只需使用>

重定向到文件

答案 1 :(得分:9)

你可以这样做(以java cacert为例):

for cert in `keytool -list -keystore cacerts -storepass changeit | grep trustedCertEntry | grep -Eo "^[^,]*"`;do
    `keytool -exportcert -keystore cacerts -alias $cert -file ${cert}.crt <<< $'changeit'`
done

这将导出分离的.crt文件中的所有证书

答案 2 :(得分:5)

keytool -list -rfc -keystore serverauth.jks

这将在单个流中输出所有证书。如果您想将它们拆分为单独的文件,那么您还有更多工作要做。