Получить SHA256 хэш открытого ключа

У меня есть сертификат mycert.pem, Я получил открытый ключ сертификата по команде:

openssl x509 -pubkey -noout -in mycert.pem  > pubkey.pem

Как я могу получить хэш SHA256 открытого ключа?

4 ответа

Вы можете использовать ssh-keygen. Сначала конвертируйте формат файла

ssh-keygen -i -m PKCS8 -f pubkey.pem > NEWpubkey.pem

Затем получите отпечаток пальца

ssh-keygen -lf NEWpubkey.pem

Получить вывод типа

2048 SHA256:hYAU9plz1WZ+H+eZCushetKpeT5RXEnR8e5xsbFWRiU без комментариев (RSA)

OpenSSL -pubkey выводит ключ в формате PEM (даже если вы используете -outform DER).

Предполагая, что у вас есть открытый ключ RSA, вы должны преобразовать ключ в формат DER (двоичный) и затем получить его хеш-значение:

 openssl rsa -in pubkey.pem -pubin -outform der | openssl dgst -sha256

Вы можете попробовать напрямую декодировать открытый ключ с помощью base64, а затем передать его по каналуshasum -a256или чтобы получить нужный хэш:

      sed '1d;$d' ./pubkey.pem | base64 -D | openssl sha256 # or shasum -a256

Если вы используете упомянутый командный вопрос для вывода pubkey.pem, например:

      -----BEGIN PUBLIC KEY-----
...
-----END PUBLIC KEY-----

Вам нужно заранее удалить первую и последнюю строку, напримерsed '1d;$d'.

Затем мы используем base64-dили-Dдля декодирования (по умолчанию на стандартный вывод) и передачи по каналуopenssl sha256.

Все в одной команде:

      sed '1d;$d' <(openssl x509 -pubkey -noout -in mycert.pem) | base64 -D | openssl sha256

Вы можете либо:

генерировать sha256sum непосредственно из файла сертификата, используя эту команду:

openssl x509 -pubkey -noout -in <your-certificate-filename>.pem | openssl dgst -sha256

или

сгенерируйте открытый ключ вашего сертификата с помощью этой простой команды:

openssl x509 -pubkey -noout -in <your-certificate-filename>.pem > <public-key-filename>.pem

И проверьте это с помощью этой команды:

cat <public-key-filename>.pem | sha256sum

Другие вопросы по тегам