keytool在单个文件中导入多个证书
如何使用keytool [到cert store]在单个文件中导入多个证书?
keytool -importcert只导入第一个。
如果要包含CA证书,则应添加-trustcacerts
选项。
如果一个PEM文件中有多个证书链,则必须拆分该文件 。
一个bash脚本,它将从PEM文件导入所有证书:
#!/bin/bash PEM_FILE=$1 PASSWORD=$2 KEYSTORE=$3 # number of certs in the PEM file CERTS=$(grep 'END CERTIFICATE' $PEM_FILE| wc -l) # For every cert in the PEM file, extract it and import into the JKS keystore # awk command: step 1, if line is in the desired cert, print the line # step 2, increment counter when last line of cert is found for N in $(seq 0 $(($CERTS - 1))); do ALIAS="${PEM_FILE%.*}-$N" cat $PEM_FILE | awk "n==$N { print }; /END CERTIFICATE/ { n++ }" | keytool -noprompt -import -trustcacerts \ -alias $ALIAS -keystore $KEYSTORE -storepass $PASSWORD done
例如:
./jks_import_pem TrustedCAs.PEM changeit truststore.jks
我想做同样的事情,但显然只有你导入密钥才有可能:
有两种类型的条目 – 密钥条目和受信任的证书条目,只有密钥条目可以包含附加到其上的证书“链”。 受信任的证书条目都是单个证书条目。
( https://www.java.net/node/674524#comment-709695 )
我甚至尝试首先转换为PKCS#7格式 ,但由于上述原因或因为我的keytool版本太旧而无法正常工作。
因此,必须先将文件拆分为单独的证书:
cat certchain.pem | awk 'split_after==1{n++;split_after=0} /-----END CERTIFICATE-----/ {split_after=1} {print > ("cert" n ".pem")}'
( https://serverfault.com/q/391396/58568 )
然后单独导入每个。