2010-03-05 17 views
29

Bazı Java kodlarında paketler imzalıyorum ve C sunucusundaki imzaları doğrulamak istiyorum. Bu amaçla openssl çağıracağım (daha sonra kütüphane fonksiyonlarını kullanabilirim ... açtığım zaman, imzaları doğrulayabilirsin); Ancak, bunu yapmak için başarısız oluyor: Ancakopenssl dgst ile dosya imzasının doğrulanması

openssl verify cert.pem 

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

:

openssl dgst -verify cert.pem -signature file.sha1 file.data 
  • diyor hepsi

sertifika diyor "yapamaz anahtar dosyasını yüklemek için" dir Özellikle sertifikayı doğrulamayı umursamıyorum, sadece verilmiş bir imzayı doğrulamak istiyorum dosya!

openssl x509 -in cert.pem -noout -text çıktısı:

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

bazı konu cert.pem ile olduğunu düşünüyorum. "Openssl x509 -in cert.pem -noout -text" çıkışı nedir? –

+0

@Anders Lindahl Bunu soruyu ekledim – Will

cevap

46

openssl dgst -verify foo.pemfoo.pem PEM biçiminde "ham" kamu anahtarı içeren bekler. Ham format, bir sertifika içinde bulunabilen bir SubjectPublicKeyInfo yapısının bir kodlamasıdır; Ancak openssl dgst, bir seferde eksiksiz bir sertifikayı işleyemiyor.

Önce sertifikadan ortak anahtarı ayıklamak gerekir:

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

sonra imzayı doğrulamak için tuşunu kullanın:

openssl dgst -verify pubkey.pem -signature sigfile datafile