Я выполнил следующие команды для создания подписи для файла (ядро Linux):
openssl req -newkey rsa -keyout codesign.key -out codesign.req
openssl ca -config ca.cnf -extensions codesigning -in codesign.req -out codesign.crt
openssl cms -sign -binary -noattr -in vmlinuz -signer codesign.crt -inkey codesign.key -certfile ca.crt -outform DER -out vmlinuz.sig
Файл ca.cnf
предназначен для моей собственной инфраструктуры ЦС и имеет расширение использования ключа digitalSignature и расширение использования расширенного ключа codeSigning.
Формат Ca.cnf:
[ca]
default_ca = ca_default
[ca_default]
сертификат = ca.crt
private_key = ca.key
серийный = ca.srl
база данных = ca.idx
new_certs_dir = /home /apoorv /projects / подписано
default_md = по умолчанию
policy = policy_anything
сохранить = да
default_days = 90
unique_subject = нет
[policy_anything]
countryName = необязательно
stateOrProvinceName = необязательно
localityName = необязательно
organizationName = необязательно
organizUnitName = необязательно
commonName = необязательно
emailAddress = необязательно
[ пересекать ]
basicConstraints = критический, CA: верно
keyUsage = критический, cRLSign, keyCertSign
[кодирование]
keyUsage = digitalSignature
extendedKeyUsage = codeSigning
Команда: openssl cms -verify -binary -content vmlinuz -inform DER -в vmlinuz.sig -CAfile ca.crt
Выход:
Ошибка проверки 140187569694352: ошибка: 2E099064: подпрограммы CMS: CMS_SIGNERINFO_VERIFY_CERT: ошибка проверки сертификата: cms_smime.c: 287: ошибка проверки: неподдерживаемое назначение сертификата
Не могли бы вы предоставить какой-либо вклад ?? Большое спасибо.