инструмент импорт нескольких сертификатов в одном файле
как импортировать несколько сертификатов в один файл с помощью keytool [в хранилище сертификатов]?
keytool-importcert импортирует только первый.
3 ответов
Если вы хотите включить сертификаты CA, вы должны добавить .
Если у вас есть несколько цепочек сертификатов в одном файле PEM, вам придется разбить файл.
скрипт bash, который импортирует все сертификаты из файла PEM:
#!/bin/bash
PEM_FILE=
PASSWORD=
KEYSTORE=
# 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)
затем импортируйте каждый отдельно.