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 отлично работает с проверкой, но оба вместе я получаю ошибку. Почему это происходит?
1 answers
Здесь с PHP 7 я могу воспроизвести вашу проблему. С обоими флагами проверка завершается неудачей.
Возможно, ЭТОТ URL-адрес может вам помочь., в этой части говорится об этом.
SMIME -знак "отсоединенный" "прикрепляет" содержимое так же, как и с - двоичный и текстовый - канонизированный без, и подписывает это. SMIME-проверка распознает "отсоединенный", но (в multi_split) всегда канонизирует обе части перед их использованием. Для контента, который был отправлен неканоническим (с - знак - двоичный или эквивалент) это изменяет подписанное содержимое, и проверка завершается неудачно. Содержимое, которое было каноническим при отправке (первоначально каноническим или канонизированным отправителем), проверяется и аналогичным образом выводится без определения, изменил ли его отправитель.
В документах вы можете прочитать, что синтаксический анализатор не настолько умен:
ОШИБКИ
Анализатор MIME не очень умен: похоже, он обрабатывает большинство сообщений что я бросил в него, но он может подавиться другие.
Надеюсь, это поможет!