Автор: Реми ван Элст (Remy van Elst)
Содержание
- Создание пары ключей
- Подписание файла
- Проверка подписи
- Подпись
Создание пары ключей
Сначала создадим новую пару ключей. Можно использовать существующую пару. Измените тему в следующей команде и выполните её, чтобы создать самозаверенную пару ключей:
openssl req -nodes -x509 -sha256 -newkey rsa:4096 -keyout "$(whoami)s Sign Key.key" -out "$(whoami)s Sign Key.crt" \ -days 365 -subj "/C=NL/ST=Zuid Holland/L=Rotterdam/O=Sparkling Network/OU=IT Dept/CN=$(whoami)s Sign Key"Также создадим небольшой текстовый файл для тестирования процесса подписания:
echo "Здравствуй, мир!" > sign.txtПодписание файла
Воспользуемся следующей командой, чтобы подписать файл. На самом деле мы одной командой openssl посчитаем хэш файла по алгоритму sha256 и подпишем его:
openssl dgst -sha256 -sign "$(whoami)s Sign Key.key" -out sign.txt.sha256 sign.txtВ результате получим файл sign.txt с его содержимым и файл sign.txt.sha256 с подписанным хэшем этого файла.
Можно разместить этот файл и публичный ключ ($(whoami)s Sign Key.crt) в интернете или в другом месте. Храните приватный ключ ($(whoami)s Sign Key.key) в безопасности и секретности.
Проверка подписи
Для проверки подписи нужен публичный ключ, относящийся к сертификату. Его можно получить из сертификата с помощью следующей команды:
openssl x509 -in "$(whoami)s Sign Key.crt"Можно избежать этого этапа, объединив два этапа в одной команде. Следующая команда проверяет файл с помощью подписи хэша:
openssl dgst -sha256 -verify <(openssl x509 -in "$(whoami)s Sign Key.crt" -pubkey -noout) -signature sign.txt.sha256 sign.txtЕсли содержимое не было изменено с момента подписания, вывод команды будет таким:
Verified OKЕсли проверка завершилась неудачно, это означает, что хэш файла не соответствует подписанному хэшу. Весьма вероятно, что файл был изменён или подделан. Результат неудачной проверки выглядит следующим образом:
Verification FailureПодпись
Чтобы получить текстовую версию подписи (файл содержит двоичные данные), можно воспользоваться командой base64. Текстовую версию вместе с файлом проще разместить в интернете:
base64 sign.txt.sha256 > sign.txt.sha256.txtДля обратного преобразования в формат, пригодный для использования в openssl, воспользуйтесь командой base64 -d:
base64 -d sign.txt.sha256.txt > sign.txt.sha256
Комментариев нет:
Отправить комментарий