11

मेरे पास दो कोड हस्ताक्षर प्रमाणपत्र हैं (एक SHA-1, एक SHA-256) जिसे मैं एक ही फ़ाइल पर लागू करना चाहता हूं। मैं SHA-256 प्रमाण पत्र संलग्न करने के लिए कोशिश की, लेकिन यह विफल रहता है:टाइमस्टैम्प के साथ एक सही ढंग से दोहरी-साइन कोड कैसे करता है?

:: Signs with the SHA-1 certificate 
signtool sign /sha1 8f52fa9db30525dfabb35b08bd1966693a30eccf /t http://timestamp.verisign.com/scripts/timestamp.dll my_app_here.exe 
:: Signs with the SHA-2 certificate 
signtool sign /sha1 8b0026ecbe5bf245993b26e164f02e1313579e47 /as /t http://timestamp.verisign.com/scripts/timestamp.dll my_app_here.exe 

इस त्रुटि के साथ विफल:

Done Adding Additional Store 
SignTool Error: SignedCode::Sign returned error: 0x80070057 
     The parameter is incorrect. 
SignTool Error: An error occurred while attempting to sign: my_app_here.exe 

अगर मैं दूसरे आदेश से टाइमस्टैम्प URL को निकालने, पर हस्ताक्षर करने को सफलतापूर्वक पूरा, लेकिन SHA-2 हस्ताक्षर में कोई टाइमस्टैम्प नहीं है। (चाहे मैंने पहले हस्ताक्षर पर टाइमस्टैम्प डाला हो या नहीं)

यहां इरादा है कि किसी को ऑपरेटिंग सिस्टम पर होने पर मजबूत प्रमाणपत्र के साथ ऐप को सत्यापित करने की अनुमति दी जाए, लेकिन असफल होने से बचने के लिए ऑपरेटिंग सिस्टम पर सत्यापन जो मजबूत प्रमाणपत्र (Vista, XP) का समर्थन नहीं करता है।

क्या इस तरह की चीज भी संभव है?

+0

ठीक है, खुशी है कि पता करने के लिए मैं अकेला इस के लिए मेरे जरूरत नहीं कर रहा हूँ ... – vcsjones

+0

आप का प्रयास किया था '/ टीडी SHA256/tr ...' '/ टी के बजाय ... दूसरे हस्ताक्षर के लिए? –

उत्तर

12

SHA-2 प्रमाणीकरण हस्ताक्षर के लिए एक आरएफसी 3161 टाइमस्टैम्प सर्वर की आवश्यकता होती है। Timestamp.verisign.com यूआरएल इसके लिए काम नहीं करता है।

सिमेंटेक/Verisign के लिए आरएफसी 3161 URL है:

http://sha256timestamp.ws.symantec.com/sha256/timestamp 

आप अभी भी पुराने http://timestamp.geotrust.com/tsa URL का उपयोग कर रहे हैं, और यह (2017 अप्रैल) विफल हो रहा है, तो आप इसे ऊपर एक को अपडेट करना चाहिए। Verisign की तरह GeoTrust, अब Symantec का हिस्सा है।

स्रोत:

https://knowledge.verisign.com/support/code-signing-support/index?page=content&id=SO5820

+0

"यह क्यों काम नहीं करता है" को समझाने के लिए धन्यवाद, मैंने जो अन्य उत्तरों पढ़े हैं, वे उस हिस्से को याद करते हैं। इसे काम करने के लिए, बस '/ t http: // timestamp.verisign.com/स्क्रिप्ट/timestamp.dll' को'/tr http: // timestamp.geotrust.com/tsa' के साथ प्रतिस्थापित करें। –

+1

GeoTrust सर्वर अभी भी टाइमस्टैम्प के लिए SHA1 पाचन का उपयोग करता है और इससे भी बदतर क्या है, उनकी प्रमाणपत्र श्रृंखला एक MD5 पाचन के साथ रूट प्रमाणपत्र में समाप्त हो जाती है। यदि आप टाइमस्टैम्प उपयोग के लिए SHA256 पाचन चाहते हैं तो http://timestamp.globalsign.com/?signature=sha2 URL के रूप में निर्दिष्ट करें (निर्दिष्ट/td SHA256 या तो चोट नहीं पहुंचाता है)। –

+4

आरएफसी 3161 टाइमस्टैम्पिंग यूआरएल के साथ एसएचए -256 http://sha256timestamp.ws.symantec.com/sha256/timestamp है –

संबंधित मुद्दे