weryfikacja podpisu pliku za pomocą OpenSSL dgst
Podpisuję pakiety w jakimś kodzie Javy i chcę zweryfikować sygnatury na serwerze C. Chcę w tym celu rozwidlać openssl (zawsze mogę później użyć funkcji bibliotecznych... kiedy Wiem, że openssl może zweryfikować podpisy); jednak tego nie robi:
openssl dgst -verify cert.pem -signature file.sha1 file.data
- wszystko, co mówi, to "nie można wczytać pliku klucza"
Certyfikat mówi:
openssl verify cert.pem
cert.pem: /C=....
error 20 at 0 depth lookup:unable to get local issuer certificate
Jednak szczególnie nie zależy mi na weryfikacji certyfikatu, chcę tylko zweryfikować podpis dla danego pliku!
Wyjście openssl x509 -in cert.pem -noout -text
to:
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 answers
openssl dgst -verify foo.pem
oczekuje, że foo.pem
zawiera "surowy" klucz publiczny w formacie PEM. Format raw jest kodowaniem struktury SubjectPublicKeyInfo
, którą można znaleźć w certyfikacie; ale {[5] } nie może przetworzyć całego certyfikatu za jednym zamachem.
Najpierw musisz wyodrębnić klucz publiczny z certyfikatu:
openssl x509 -pubkey -noout -in cert.pem > pubkey.pem
Następnie użyj klucza, aby zweryfikować podpis:
openssl dgst -verify pubkey.pem -signature sigfile datafile
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-05 14:54:57