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:

Или предложите пожалуйста свой способ проверки.

pyuriykz
() автор топика

openssl verify - проверка подписи сертификата средствами openssl

Lomaster
()

Что касается pkeyutl, то там можно опцией -verify проверить подпись с помощью публичного ключа. Ты же пытаешься делать какую-то нездоровую лажу

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

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

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

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

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

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

Я про подпись и веду речь. Подпись это что как ни защифрованный хеш ? Мне ее надо дешифровать открытым ключом и тогда я получу хеш.

pyuriykz
() автор топика
Ответ на: комментарий от Lomaster

Расскажите в виде команд openssl Вашу матчасть. Не факт что Ваш способ меня заинтересует, но пусть будет.

pyuriykz
() автор топика
Ответ на: комментарий от Lomaster

Уже рассказал это когда были приведены команды openssl c аргументами чтоб я мог взять и проверить Ваш способ не гадая.

pyuriykz
() автор топика
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.