त्वरित पृष्ठभूमि: हम एक वेबस्टार्ट एप्लिकेशन जारी करते हैं, जिसमें हमारे अपने एप्लिकेशन जार और कई तृतीय-पक्ष जार शामिल हैं। वेबस्टार्ट की आवश्यकता है कि jnlp फ़ाइल द्वारा निर्दिष्ट सभी वितरित जार को एक प्रमाणपत्र द्वारा हस्ताक्षरित किया जाए। इसलिए हम एक स्व-हस्ताक्षरित प्रमाणपत्र का उपयोग कर सभी जार (हमारे जार और तीसरे पक्ष के जार) पर हस्ताक्षर करते हैं। कुछ तीसरे पक्ष के जार पहले से ही पार्टी द्वारा हस्ताक्षरित हैं जो उन्हें उत्पादित करते हैं, लेकिन हम उन्हें फिर से हस्ताक्षर करते हैं, और यह ठीक काम करता है। अब तक।जावा हस्ताक्षर किए गए जार को एकाधिक हस्ताक्षर एल्गोरिदम
समस्या: हमने हाल ही में जावा 6 से जावा 7 में ले जाया गया है, और अचानक webstart कुछ जार लोड करने के लिए इंकार कर रहा है, शिकायत: "अवैध SHA1 हस्ताक्षर फ़ाइल डाइजेस्ट"। यह केवल कुछ जारों के लिए होता है, न कि दूसरों के लिए, और आम धागा उन जारों में दिखाई देता है जो असफल होने पर कई हस्ताक्षर होते हैं।
एसओ पर चारों ओर खोज करने के बाद। और इंटरनेट, ऐसा लगता है कि जावा के jarsigner के लिए डिफ़ॉल्ट हस्ताक्षर एल्गोरिदम जावा 6 और जावा 7 के बीच बदल गया है, SHA1 से SHA256 तक, और विभिन्न लोग सत्यापन समस्याओं के आसपास काम करने के लिए "jarsigner -digestalg SHA1" का उपयोग करने की सिफारिश कर रहे हैं। मैंने कोशिश की, और सुनिश्चित करें कि हमारे गुणा-हस्ताक्षरित जार अब सत्यापित हैं। तो यह हमारे मुद्दे के लिए एक कामकाज प्रतीत होता है।
जो मैं एकत्र कर सकता हूं, ऐसा लगता है कि तीसरे पक्ष के हस्ताक्षर एक SHA1 हस्ताक्षर है, और हम डिफ़ॉल्ट - SHA256 पर हस्ताक्षर कर रहे थे - जिसके परिणामस्वरूप हस्ताक्षर का मिश्रण हुआ। जब मैं '-डिगेस्टल' स्विच का उपयोग करके SHA1 को मजबूर करता हूं, तो हमारे पास एक ही प्रकार के दो हस्ताक्षर होते हैं, और सत्यापन अब काम करता है। तो ऐसा लगता है कि समस्या विभिन्न एल्गोरिदम के साथ एकाधिक हस्ताक्षर होने के कारण होती है? या क्या मैं कुछ अन्य कारक लापता हूं।
सवाल:
- यह SHA1 + SHA256 साथ सत्यापित करने के लिए क्यों असफल, लेकिन SHA1 + SHA1 साथ की पुष्टि करता है? क्या कोई तकनीकी कारण है? एक सुरक्षा नीति कारण? यह सत्यापित क्यों नहीं कर सकता कि दोनों हस्ताक्षर सही हैं?
- क्या अब डिफ़ॉल्ट-डिफ़ॉल्ट SHA256 के बजाय SHA1 का उपयोग कर (जारी रखने के लिए) कोई दोष है?
मैंने देखा कि यहां तक कि-हालांकि SHA1 + SHA256 में विफल रहता है जब विभिन्न कुंजियों का उपयोग ... यदि आप जार एक ही कुंजी के साथ SHA1 + SHA256 का उपयोग करके हस्ताक्षरित, सत्यापन कभी असफल नहीं होता:
यहाँ मेरी चींटी कार्य है। –