Получить 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