Компания, в которой я работаю, хочет, чтобы я реализовал некоторые функции C для автоматической подписи их программного обеспечения. Проведя некоторое исследование, я обнаружил, что openSSL отлично подходит для этого.
Прежде чем приступить к реализации на C, я хотел получить представление о рабочем процессе, сначала выполнив его в CLI. Но это меня немного смутило, потому что я не уверен, где здесь следует использовать сертификаты.
Вот шаги, которые я предпринял:
- Сгенерировать закрытый ключ
$ openssl genrsa -out privat.pem 2048
- Извлечь открытый ключ из закрытого ключа
$ openssl rsa -in privat.pem -outform PEM -pubout -out public.pem
- Подпишите файл примера закрытым ключом
$ openssl dgst -sha256 -sign privat.pem -out sign.sha256 файл.txt
- Подтвердить подпись открытым ключом
$ openssl dgst -sha256 -verify public.pem -signature sign.sha256 file.txt
Подтверждено ОК
Где мне теперь использовать сертификат, чтобы доказать, что программное обеспечение принадлежит компании?
Кроме того, программное обеспечение поставляется в виде контейнера приложений для Debian, где мы создаем собственный заголовок приложения с метаданными, такими как, например, контрольная сумма. Мне также пришлось бы включить подпись в этот заголовок, было бы неплохо сохранить там вывод sign.sha256? Может в Base64?