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
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