Самоподписанная цепочка сертификатов не проверяет Pkcs7 - PullRequest
0 голосов
/ 28 мая 2020

Я создал root ключ, сертификат и промежуточный ключ, сертификат и ключ пользователя, сертификат. Точно выполнил шаги из https://github.com/tianocore/edk2/blob/master/BaseTools/Source/Python/Pkcs7Sign/Readme.md

Создайте ключ root:

openssl genrsa -aes256 -out TestRoot.key 2048

Создать самоподписанный root сертификат:

openssl req -extensions v3_ca -new -x509 -days 3650 -key TestRoot.key -out TestRoot.crt
openssl x509 -in TestRoot.crt -out TestRoot.cer -outform DER
openssl x509 -inform DER -in TestRoot.cer -outform PEM -out TestRoot.pub.pem

Создать промежуточный ключ:

openssl genrsa -aes256 -out TestSub.key 2048

Создать промежуточный сертификат:

openssl req -new -days 3650 -key TestSub.key -out TestSub.csr
openssl ca -extensions v3_intermediate_ca -in TestSub.csr -days 3650 -out TestSub.crt -cert TestRoot.crt -keyfile TestRoot.key
openssl x509 -in TestSub.crt -out TestSub.cer -outform DER
openssl x509 -inform DER -in TestSub.cer -outform PEM -out TestSub.pub.pem

Создать ключ пользователя:

openssl genrsa -aes256 -out TestCert.key 2048

Создать сертификат пользователя:

openssl req -new -days 3650 -key TestCert.key -out TestCert.csr
openssl ca -extensions usr_cert -in TestCert.csr -days 3650 -out TestCert.crt -cert TestSub.crt -keyfile TestSub.key
openssl x509 -in TestCert.crt -out TestCert.cer -outform DER
openssl x509 -inform DER -in TestCert.cer -outform PEM -out TestCert.pub.pem

Конвертировать ключ и сертификат для подписи. Для удобства в этом примере пароль удален с помощью флага -nodes.

openssl pkcs12 -export -out TestCert.pfx -inkey TestCert.key -in TestCert.crt
openssl pkcs12 -in TestCert.pfx -nodes -out TestCert.pem

Подпись двоичного файла для создания отдельной подписи PKCS7:

openssl smime -sign -binary -signer TestCert.pem -outform DER -md sha256 -certfile TestSub.pub.pem -out test.bin.p7 -in test.bin

Проверить подпись PKCS7 двоичного файла:

openssl smime -verify -inform DER -in test.bin.p7 -content test.bin -CAfile TestRoot.pub.pem -out test.org.bin

Выдает ошибку 19268: ошибка: 21075075: Подпрограммы PKCS7: PKCS7_verify: ошибка проверки сертификата: crypto \ pkcs7 \ pk7_smime. c: 285: ошибка проверки: недопустимый сертификат CA

Root сертификат отображается как X509v3 Basi c Ограничения: CA : TRUE

Есть ли способ проверить, почему происходит сбой?

...