2017-07-02 2 views
8

J'utilise pkcs7 pour signer un document et tout fonctionne bien, le problème est que la commande pour vérifier le signe ne fonctionne pas, retourne toujours faux. J'essaie d'utiliser la commande de terminal dans le fichier et fonctionne bien.PHP openssl_pkcs7_verify ne fonctionne pas

commande Sign:

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

commande VERIFY:

openssl_pkcs7_verify($tempsign, PKCS7_NOVERIFY) 

commande Terminal:

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


EDIT 1
Je fais des tests dans mon code et découvrir si je crée mon signe avec seulement PKCS7_DETACHED ou PKCS7_BINARY fonctionne très bien la vérifier, mais les deux ensemble, je reçois l'erreur. Pourquoi cela se passe-t-il?

+0

Avez-vous oublié le dollar devant 'tempsign'? –

+0

Est-ce que 'openssl_pkcs7_sign' réussit réellement? Voir aussi la page de manuel ['PKCS7_sign'] (https://www.openssl.org/docs/man1.0.2/crypto/PKCS7_sign.html). Si cela échoue, vous devriez appeler 'ERR_get_error' immédiatement pour récupérer l'erreur. Voir aussi la page de manuel ['ERR_get_error'] (https://www.openssl.org/docs/man1.0.2/crypto/ERR_get_error.html). – jww

+0

Ils ne échouent pas parce que le lecteur PDF a réussi à lire la assignation. Et un juste oublier de mettre dans la question le $, mais dans mon code est juste. –

Répondre

5

Ici avec PHP 7 je peux reproduire votre problème. Avec les deux indicateurs, la vérification échoue.

Peut-être THIS URL peut vous aider., Cette partie en parle.

SMIME -sign "detached" "attaches" content similarly as-is with -binary and text-canonicalized without, and signs that. SMIME -verify recognizes "detached", but (in multi_split) always canonicalizes both parts before using them. For content that was sent noncanonical (with -sign -binary or equivalent) this changes the signed content, and verify fails. Content that was canonical as sent (originally canonical or canonicalized by sender) does verify and similarly is output without determining if sender changed it.

Dans le docs vous pouvez lire que l'analyseur est pas intelligent:

BUGS

The MIME parser isn't very clever: it seems to handle most messages that I've thrown at it but it may choke on others.

Hope it helps!