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 fork openssl à cet effet (peut toujours utiliser les fonctions de bibliothèque plus tard... quand je sais qu'openssl peut vérifier les signatures); cependant, il ne le fait pas:

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

Le certificat indique:

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
30
demandé sur Will 2010-03-05 11:03:14

1 réponses

openssl dgst -verify foo.pem s'attend à ce que foo.pem contienne la clé publique "brute" au format PEM. Le format raw 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

Ensuite, utilisez la clé pour vérifier la signature:

openssl dgst -verify pubkey.pem -signature sigfile datafile
51
répondu Thomas Pornin 2010-03-05 14:54:57