2010-03-05 12 views
29

के साथ फ़ाइल हस्ताक्षर सत्यापित करने के लिए मैं कुछ जावा कोड में पैकेट पर हस्ताक्षर कर रहा हूं और मैं सी सर्वर पर हस्ताक्षर सत्यापित करना चाहता हूं। मैं इस उद्देश्य के लिए openkl को खोलना चाहता हूं (बाद में लाइब्रेरी फ़ंक्शंस का उपयोग कर सकता हूं ... जब मुझे पता चलता है कि openssl हस्ताक्षर सत्यापित कर सकता है); तथापि, यह ऐसा करने में नाकाम रहने के है:openssl dgst

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 
    सब यह कहते हैं
  • "असमर्थ कुंजी फ़ाइल को लोड करने"

प्रमाण पत्र का कहना है है , मुझे विशेष रूप से प्रमाण पत्र की पुष्टि करने की परवाह नहीं है, मैं केवल किसी दिए गए हस्ताक्षर को सत्यापित करना चाहता हूं फाइल!

openssl x509 -in cert.pem -noout -text के उत्पादन में है:

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

मुझे लगता है कि cert.pem के साथ कुछ समस्या है। "Openssl x509 -in cert.pem -noout -text" आउटपुट क्या करता है? –

+0

@ एंडर्स लिंडाहल मैंने इसे प्रश्न में जोड़ा है – Will

उत्तर

46

openssl dgst -verify foo.pem को उम्मीद है कि foo.pem PEM प्रारूप में "कच्चे" सार्वजनिक कुंजी है। कच्चा प्रारूप SubjectPublicKeyInfo संरचना का एक एन्कोडिंग है, जो प्रमाण पत्र के भीतर पाया जा सकता है; लेकिन openssl dgst एक बार में एक पूर्ण प्रमाणपत्र संसाधित नहीं कर सकता है।

आप पहली बार प्रमाण पत्र से सार्वजनिक कुंजी निकालने चाहिए:

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

तो हस्ताक्षर सत्यापित करने के कुंजी का उपयोग करें:

openssl dgst -verify pubkey.pem -signature sigfile datafile 
संबंधित मुद्दे