Вот пример того, как это работает:
openssl x509 -in cer.der -inform DER -text | sed ':a;N;$!ba;s/\n/+/g' | sed 's/ //g' | sed -n 's/.*SubjectKeyIdentifier:+\([A-F0-9:]*\)+.*/\1/p' | sed 's/\://g'
Используется sed
для получения уровня детализации объекта.
Объяснение отдельных частей:
openssl x509 -in cer.der -inform DER -text
Следующая часть - sed
магия.Он удаляет все новые строки и заменяет его на +
:
sed ':a;N;$!ba;s/\n/+/g'
Следующая часть представляет собой простую магию sed
.Это все пробелы:
sed 's/ //g'
Следующая часть является интересной и извлекает Идентификатор ключа субъекта.
sed -n 's/.*SubjectKeyIdentifier:+\([A-F0-9:]*\)+.*/\1/p'
Последняя часть просто удаляет двоеточия с помощью sed
.Может быть, не нужно в вашем случае.возможно, вам также нужно это как двоичный файл.
sed 's/\://g'
Если нужен двоичный вывод, добавьте еще один канал ко всей команде:
openssl x509 -in CERT_S_SM_DPauth_ECDSA_BRP.der -inform DER -text | sed ':a;N;$!ba;s/\n/+/g' | sed 's/ //g' | sed -n 's/.*SubjectKeyIdentifier:+\([A-F0-9:]*\)+.*/\1/p' | sed 's/\://g' | xxd -r -p - subjkid.bin