PKCS7 हस्ताक्षर में ओपनएसएसएल के साथ हस्ताक्षरित विशेषताओं को निर्दिष्ट करें


2

मैं पीडीएफ हस्ताक्षर उत्पन्न करने के लिए ओपनसेल की क्षमता का मूल्यांकन कर रहा हूं । मुझे पीएससीएस 7 हस्ताक्षर क्षेत्रों के बीच कुछ अंतर दिखाई देता है जो ओपनसेल और अन्य कार्यक्रमों द्वारा उत्पन्न होता है ।

मैं वास्तव में कैसे निर्दिष्ट करूं कि signedAttr क्षेत्रों हस्ताक्षर में शामिल किया जाएगा?

उदाहरण के लिए, यहाँ के माध्यम से तीन तरह से तुलना है मिलकर एक हो जाना :

$ meld <(openssl cms -inform DER -cmsout -print -in minimal_signed_pdfbox.pkcs7) \
       <(openssl cms -inform DER -cmsout -print -in minimal_signed_adobe.pkcs7)  \
       <(openssl cms -inform DER -cmsout -print -in minimal.pkcs7)

यहां छवि विवरण दर्ज करें

बाईं ओर : pdf_box द्वारा जेनरेट किया गया minimal_signed_pdfbox.pkcs7 (यह बाउंसी कैसल का उपयोग करता है ) इस तरह से:

java -jar pdfbox-sign.jar JohnSmith.pem <PASSWORD> minimal.pdf
  • PKCS7 निकालने के लिए minimal_signed_pdfbox.pkcs7

केंद्र : Adobe Reader DC द्वारा निर्मित PKCS7 (यह Adobe PubSec का उपयोग करता है ) इस तरह से:

  • JohnSmith.pfx फ़ाइल से एक डिजिटल आईडी बनाएं

  • उस डिजिटल आईडी के साथ दस्तावेज़ पर हस्ताक्षर करें

  • परिणाम को minimal_signed_adobe.pdf के रूप में सहेजें

  • PKCS7 निकालने के लिए minimal_signed_adobe.pkcs7

अधिकार : PKCS7 कमांड लाइन के माध्यम से OpenSSL द्वारा उत्पन्न :

openssl cms -sign -signer JohnSmith.pem -binary -in minimal.pdf -outform der -out minimal.pkcs7

पहले दो मामलों में pkcs7 को peepdf टूल का उपयोग करके पीडीएफ से निकाला गया था ।

Minimal.pdf फ़ाइल पर हस्ताक्षर किए जा में मानक आईएसओ 32000 में वर्णित एक है कम से कम PDF फ़ाइल: अनुलग्नक H.2

उपयोग की गई शेष फाइलें और प्रमाणपत्र यहां ज़िपित हैं: so.zip

हस्ताक्षर और messageDigest क्षेत्रों क्योंकि अलग हैं:

  1. Adobe फ़ाइल को शुरू करने से पहले रैखिक करता है (पीडीएफ संस्करण भी बदल रहा है)

  2. पर हस्ताक्षर किए PKCS7 विशेषताओं ( signedAttrs ) शामिल में हर मामला अलग होता है (और वे गणना में शामिल किए गए हैं)

  3. वास्तविक परिदृश्य में, पीडीएफ में हस्ताक्षर शामिल करने के लिए अतिरिक्त वस्तुओं की आवश्यकता होती है, जो सरलीकरण के लिए इस मामले में मौजूद नहीं हैं।

एक पीडीएफ पर हस्ताक्षर करना न केवल हस्ताक्षर उत्पन्न करना है, बल्कि इसे फ़ाइल में एम्बेड करना भी है। लेकिन अब मैं हस्ताक्षर प्रारूप (2) पर केंद्रित हूं

एक बार जब स्माइली क्षमताओं को बाहर रखा गया है:

openssl cms -nosmimecap -sign -signer JohnSmith.pem -binary -in minimal.pdf -outform der -out minimal_nosmimecap.pkcs7

अंतर अधिक स्पष्ट हैं:

यहां छवि विवरण दर्ज करें

शेष अंतर हैं:

  1. Adobe में साइनिंग टाइम (1.2.840.113549.1.9.5) शामिल नहीं है

  2. pdfbox अतिरिक्त हस्ताक्षर किए विशेषता निर्दिष्ट 1.2.840.113549.1.9.52 (द्वारा मान्यता प्राप्त नहीं openssl asn1parse क्रम निर्दिष्ट करने के लिए) SHA256 एन्क्रिप्शन के बजाय निर्दिष्ट करने के signatureAlgorithm / एल्गोरिथ्म sha256WithRSAEncryption के रूप में ( 1.2.840.113549.1.1.11 )

मैं उन हस्ताक्षरित विशेषताओं को कैसे प्रबंधित कर सकता हूं? वाया कमांड लाइन मेरे पास केवल यह संबंधित पैरामीटर है:

-noattr        don't include any signed attributes

पैरामीटर -nosmimecap के माध्यम से प्रकट नहीं होता है:

openssl cms --help

लेकिन यह काम करता है , क्या इसे नियंत्रित करने के लिए अन्य छिपे हुए पैरामीटर हैं?

मैं उपयोग कर रहा हूँ:

$ openssl version
OpenSSL 1.0.2g  1 Mar 2016
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.