Мне сложно понять процесс подписи и проверки с помощью openSSL.
У меня есть небольшая иерархия сертификатов: корневой сертификат => вспомогательный сертификат => сертификат конечного объекта. Я хочу получить сертификат подписи кода от ЦС конечного объекта и, таким образом, создал пару ключей и запросил CSR:
openssl genrsa -out key.pem
...
openssl genrsa -pubout -in key.pem -out key.pub.pem
...
openssl req -new -sha256 -key key.pem -out id.csr
...
Я отправляю свой CSR и получаю сертификат подписи кода, хранящийся в cert.pem. Насколько я понимаю, этот сертификат используется только для проверки (проверка подписи), и мой код должен быть подписан закрытым ключом (key.pem):
openssl dgst -sha256 -sign key.pem -out program.sign program
Таким образом, у меня есть program.sign, подписанный key.pem. Затем мне нужно проверить эту подпись, учитывая, что у меня есть 4 сертификата для проверки пути: root.pem, sub.pem, end.pem, cert.pem.
Как я могу попросить openssl проверить подпись с несколькими сертификатами в цепочке для проверки?
Я пробовал это, но, конечно, это не работает, потому что я указываю только сертификат подписи кода, без остальной части цепочки:
openssl dgst -sha256 -verify program -signature program.sign cert.pem
undable to load key file
Я что-то упускаю ?
Большое тебе спасибо.