инструмент импорт нескольких сертификатов в одном файле

как импортировать несколько сертификатов в один файл с помощью 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)

затем импортируйте каждый отдельно.