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