LINUX.ORG.RU

Проверка подписи сертификата x.509

 


0

1

Здравствуйте, споткнулся при реализации алгоритма проверки подписи сертификата. Ошибка возникает на этапе «криптования» т.е. openssl pkeyutl -encrypt …. Подскажите пожалуйтса как исправить.

openssl x509 -in selfcert_nopass.pem -pubkey -noout > selfcert_nopass.pub

SIGNATURE_HEX=$( openssl x509 -in selfcert_nopass.pem -text -noout -certopt ca_default -certopt no_validity -certopt no_serial -certopt no_subject -certopt no_extensions -certopt no_signame | grep -v "Signature>

# create signature dump
echo ${SIGNATURE_HEX} | xxd -r -p > cert-sig.bin

openssl pkeyutl -encrypt -inkey selfcert_nopass.pub  -in cert-sig.bin -pubin > cert-sig-decrypted.bin

#openssl asn1parse -i -in selfcert_nopass.pem

#openssl asn1parse -in selfcert_nopass.pem -strparse 4 -out selfcert_nopass.bin -noout

#openssl dgst -sha256 selfcert_nopass.bin

Вывод терминала:

Public Key operation error
4007C9CDE97F0000:error:0200006E:rsa routines:ossl_rsa_padding_add_PKCS1_type_2_ex:data too large for key size:../crypto/rsa/rsa_pk1.c:129:

Ответ на: комментарий от Lomaster

Я хочу сделать проверку на основе сравнения вычисленного «вручную» хеша и определенного в сертификате(вычисленного на этапе создания сертификата). Вычисленный хеш получается, а вот получить определенный в сертификате - нет, так как возникает ошибка на этапе дешифровки. Что касается openssl pkeyutl verify, то там проверяется чегото с чемто, а мне пока не чем. Мне нужно пояснение не на уровне: вон там волшебная команда обещает что все проверит.

pyuriykz
() автор топика
Последнее исправление: pyuriykz (всего исправлений: 2)
Ответ на: комментарий от pyuriykz

Берёшь хеш «чистого» сертификата (ты ведь знаешь, что такое «чистый» сертификат в контексте asn1 структуры сертификата), подпись и публичный ключ и скармливашь все это openssl pkeyutl -verify. По-другому никак.

А какой в сертификате определён хеш? Ты с подписью сертификата не путаешь? И какая нафиг дешифровка?

Lomaster
()