PHP openssl pkcs7 проверить Не работает


Я использую pkcs7 для подписи документа, и все работает нормально, проблема в том, что команда для проверки подписи не работает, всегда возвращает false. Я пытаюсь использовать команду терминала в файле и отлично работаю.

Команда подписи:

openssl_pkcs7_sign(
    $tempdoc,
    $tempsign,
    $this->signature_data['signcert'],
    array($this->signature_data['privkey'],
    $this->signature_data['password']),
    array(),
    PKCS7_BINARY | PKCS7_DETACHED);

Команда проверки:

openssl_pkcs7_verify($tempsign, PKCS7_NOVERIFY)

Команда терминала:

openssl pkcs7 -inform DER -in signature.pkcs7 -print_certs -text


РЕДАКТИРОВАТЬ 1
Я провожу тесты в своем коде и выясняю, создаю ли я свой знак только с помощью PKCS7_DETACHED или PKCS7_BINARY отлично работает с проверкой, но оба вместе я получаю ошибку. Почему это происходит?

Author: Pedro Soares, 2017-07-02

1 answers

Здесь с PHP 7 я могу воспроизвести вашу проблему. С обоими флагами проверка завершается неудачей.

Возможно, ЭТОТ URL-адрес может вам помочь., в этой части говорится об этом.

SMIME -знак "отсоединенный" "прикрепляет" содержимое так же, как и с - двоичный и текстовый - канонизированный без, и подписывает это. SMIME-проверка распознает "отсоединенный", но (в multi_split) всегда канонизирует обе части перед их использованием. Для контента, который был отправлен неканоническим (с - знак - двоичный или эквивалент) это изменяет подписанное содержимое, и проверка завершается неудачно. Содержимое, которое было каноническим при отправке (первоначально каноническим или канонизированным отправителем), проверяется и аналогичным образом выводится без определения, изменил ли его отправитель.

В документах вы можете прочитать, что синтаксический анализатор не настолько умен:

ОШИБКИ

Анализатор MIME не очень умен: похоже, он обрабатывает большинство сообщений что я бросил в него, но он может подавиться другие.

Надеюсь, это поможет!

 3
Author: Saleiro, 2017-07-06 19:33:14