Как извлечь все объекты из cacertfile с помощью командной строки openssl?


8

Существует ли команда openssl для извлечения всех объектов сертификата из cacertfile (файл, содержащий несколько сертификатов, например /etc/ssl/certs/ca-certificates.crt)?

Я пытался, openssl x509 -in /etc/ssl/certs/ca-certificates.crt -noout -subjectно это только дает мне предмет первого сертификата.

Ответы:


5

К сожалению, я не верю, что OpenSSL может это сделать. OpenSSL предполагает один сертификат на файл для действий x509.

Согласно этому сайту вы должны разделить их на отдельные файлы. Он даже предоставляет Perl-скрипт , который разделит его для вас. Затем вы можете перебрать файлы или изменить скрипт perl для непосредственного извлечения темы.


1

Установите fileпеременную так, чтобы она указывала на ваш файл, измените команду openssl, и все готово:

file="your file name"; first=""; for i in $(grep -n CERT "${file}" | cut -f 1 -d:)
do
    if [ -z "$first" ]
    then
        first=$i
        continue
    fi
    sed -n "$first,${i}p" "${file}" | openssl x509 -noout -subject
    first=""
done

Этот ответ можно улучшить, добавив описание работы команд. И кстати, вам не нужны фигурные скобки ${file}.
G-Man говорит: «Восстановите Монику»

этот скрипт работает точно так, как ожидалось, он берет каждый раздел сертификата из (цепочки) файла и показывает строки темы
user906489

0

Чтобы напечатать все объекты в файле CA:

openssl crl2pkcs7 -nocrl -certfile ca-certificates.crt | openssl pkcs7 -print_certs -text -noout | grep 'Subject:'

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.