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

San*_*chi 8 java ssl ssl-certificate

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

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

在发出keytool命令时,试图弄清楚我是否还有其他任何参数.

我使用的命令是:

1)pfx不支持转换为JKS作为别名

keytool -importkeystore -srckeystore "serverauth.pfx" -srcstoretype pkcs12 -destkeystore "serverauth.jks" 
Run Code Online (Sandbox Code Playgroud)

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

keytool -export -alias 1 -keystore "serverauth.jks" -rfc -file "authclient.cert" 
Run Code Online (Sandbox Code Playgroud)

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

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

keytool error: java.lang.Exception: Alias <1> does not exist
Run Code Online (Sandbox Code Playgroud)

还有其他流程吗?

zed*_*dix 9

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

keytool -list -alias yourcert -keystore /path/to/keystore -rfc
Run Code Online (Sandbox Code Playgroud)

与export相同的格式,但它会转储整个链.您丢失了-file选项,但您可以使用简单地重定向到文件>


小智 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
Run Code Online (Sandbox Code Playgroud)

这将导出一个单独的.crt文件中的所有证书


Zac*_*son 5

keytool -list -rfc -keystore serverauth.jks
Run Code Online (Sandbox Code Playgroud)

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