Как извлечь идентификатор ключа субъекта из сертификата x509 через openssl - PullRequest
0 голосов
/ 22 декабря 2018

Я создал сертификат x509, используя ec prime256v1 тщательно openssl.Может кто-нибудь, пожалуйста, дайте мне знать, как извлечь из него идентификатор ключа субъекта, используя любой openssl cli?

Заранее спасибо.

1 Ответ

0 голосов
/ 22 января 2019

Вот пример того, как это работает:

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
...