2

Я хочу извлечь открытый ключ из сертификата, чтобы проверить заданную подпись (чтобы ответить на мой собственный вопрос относительно части регистрации).

Я пробовал openssl x509 -in certificate.pem -pubkey -noout | openssl enc -base64 -d > publickey.pub и читать его с помощью hexdump -C publickey.pub Я получил шестнадцатеричную строку длиной 182 символа. Я ожидал 128, потому что мне нужны две координаты длиной 64 символа.

Я думаю, что у меня есть только открытый ключ, но заголовки или что-то еще. Итак, вы хотели бы помочь мне, как я могу извлечь открытый ключ в шестнадцатеричной строке?

1 ответ1

1

Страница руководства openssl x509 описывает параметр -pubkey следующим образом:

-pubkey
        выводит блок SubjectPublicKeyInfo сертификата в формате PEM.

Формат PEM состоит из файла DER в кодировке Base64 с добавлением строк верхнего и нижнего колонтитула. Как только вы удалите заголовок и нижний колонтитул и Base64-декодируете данные (что на самом деле должна делать ваша команда openssl enc ), вы остаетесь с файлом DER, который содержит данные ASN.1 в двоичной кодировке.

Вы ошибаетесь, пытаясь прочитать вывод DER непосредственно с помощью шестнадцатеричного редактора. Вместо этого вам необходимо декодировать его с помощью синтаксического анализатора ASN.1, такого как openssl asn1parse.

В качестве альтернативы вы можете предпочесть просто использовать:

openssl x509 -in certificate.pem -text -noout

и извлекать координаты открытого ключа (которые, вероятно, будут показаны как последовательности байтов в шестнадцатеричном формате) из (более или менее) -text человеку текстового вывода.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .