web-dev-qa-db-fra.com

vérification d'une signature de fichier avec openssl dgst

Je signe des paquets dans du code Java et je veux vérifier les signatures sur un serveur C. Je veux ouvrir openssl à cet effet (peut toujours utiliser les fonctions de bibliothèque plus tard ... quand je sais openssl peut vérifier les signatures), mais il ne le fait pas:

openssl dgst -verify cert.pem -signature file.sha1 file.data
  • tout ce qu'il dit est " impossible de charger le fichier clé "

Le certificat dit:

openssl verify cert.pem 

cert.pem: /C=....
error 20 at 0 depth lookup:unable to get local issuer certificate

Cependant, je ne me soucie pas spécifiquement de vérifier le certificat, je veux seulement vérifier la signature d'un fichier donné!

La sortie de openssl x509 -in cert.pem -noout -text est:

Certificate:
    Data:
        Version: 1 (0x0)
        Serial Number:
            ...
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: C=...
        Validity
            Not Before: Feb  1 15:22:44 2010 GMT
            Not After : Jun 19 15:22:44 2037 GMT
        Subject: C=...
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (2048 bit)
                Modulus (2048 bit):
                    00:cc:cc:f9:c7:3a:00:0f:07:90:55:d9:fb:a9:fe:
                    ...
                    32:cc:ee:7f:f2:01:c7:35:d2:b5:9b:35:dd:69:76:
                    00:a9
                Exponent: 65537 (0x10001)
    Signature Algorithm: sha1WithRSAEncryption
        39:d6:2c:6b:6a:00:74:b5:81:c2:b8:60:d6:6b:54:11:41:8d:
        ...
        8f:3e:3f:5d:b3:f8:dd:5e
37
Will

openssl dgst -verify foo.pem attend que foo.pem contient la clé publique "brute" au format PEM. Le format brut est un encodage d'une structure SubjectPublicKeyInfo, qui peut être trouvée dans un certificat; mais openssl dgst ne peut pas traiter un certificat complet en une seule fois.

Vous devez d'abord extraire la clé publique du certificat:

openssl x509 -pubkey -noout -in cert.pem > pubkey.pem

puis utilisez la clé pour vérifier la signature:

openssl dgst -verify pubkey.pem -signature sigfile datafile
62
Thomas Pornin