2013-08-17 3 views
16

पर विंडोज एप्लिकेशन पर हस्ताक्षर करना मैंने एक एप्लिकेशन और वेबसाइट तैयार की है जहां ग्राहक इसे डाउनलोड करने से पहले इस एप्लिकेशन के लिए कई विकल्प सेट कर सकता है। सेटिंग्स फ़ाइल के अंत में बाइनरी प्रारूप में संग्रहीत हैं (संलग्न), फिर संपादित फ़ाइल अंतिम उपयोगकर्ता को भेजी जाती है। समस्या यह है कि फ़ाइल की "सामग्री" में परिवर्तन फ़ाइल हस्ताक्षर तोड़ देगा - क्या इस बदली गई फ़ाइल को किसी कमांड लाइन टूल्स के साथ पुनः हस्ताक्षर करने का कोई मौका है? मैंने माइक्रोसॉफ्ट के साइनटूल का उपयोग करने की कोशिश की है, लेकिन यह लिनक्स पर ठीक से काम नहीं करता है।लिनक्स-आधारित डिस्ट्रोज़

उत्तर

15

यह Mono के signtool का उपयोग कर ऐसा करने के लिए वास्तव में quite straight forward है; मुश्किल हिस्सा (लिंक किए गए मोज़िला आलेख में अधिक विस्तार से वर्णित) प्रमाण पत्र को विंडोज़ से लिनक्स के सही प्रारूप में कॉपी कर रहा है।

परिवर्तित PVK और छठे वेतन आयोग फ़ाइलें करने के लिए Windows PFX प्रमाण पत्र फ़ाइल, केवल जब लिनक्स के लिए Windows से प्रमाण पत्र की प्रतिलिपि बनाने एक बार किया जाना चाहिए;

openssl pkcs12 -in authenticode.pfx -nocerts -nodes -out key.pem 
openssl rsa -in key.pem -outform PVK -pvk-strong -out authenticode.pvk 
openssl pkcs12 -in authenticode.pfx -nokeys -nodes -out cert.pem 
openssl crl2pkcs7 -nocrl -certfile cert.pem -outform DER -out authenticode.spc 

वास्तव में एक्सई पर हस्ताक्षर करना सीधे आगे है;

osslsigncode sign -certs <cert-file> -key <der-key-file> \ 
     -n "Your Application" -i http://www.yourwebsite.com/ \ 
     -in yourapp.exe -out yourapp-signed.exe 

या यदि आप एक साथ एक पीईएम या PVK कुंजी फ़ाइल का उपयोग कर रहे हैं:

signcode \ 
-spc authenticode.spc \ 
-v authenticode.pvk \ 
-a sha1 -$ commercial \ 
-n My\ Application \ 
-i http://www.example.com/ \ 
-t http://timestamp.verisign.com/scripts/timstamp.dll \ 
-tr 10 \ 
MyApp.exe 
+0

क्या आपके पास इस उपकरण का उपयोग करने के साथ व्यक्तिगत अनुभव है? वह लेख जिसका आप उल्लेख कर रहे हैं [2 साल से अधिक पुराना] (https://developer.mozilla.org/en-US/docs/Signing_an_executable_with_Authenticode$history), इसलिए कुछ आश्वासन है कि यह अभी भी अद्यतित है । –

+0

@RobW मैंने मोनो 3.2.5 का उपयोग करके उस कमांड का उपयोग करके निष्पादन योग्य पर हस्ताक्षर किए हैं और यह अच्छी तरह से काम करता है (वास्तव में मैंने अभी परीक्षण किया है)। मैं अभी मैक पर सर्टिफिकेट निर्यात करने के लिए सही कदमों का परीक्षण नहीं कर सकता क्योंकि मैं मैक पर नहीं हूं, लेकिन मुझे पता है कि मैंने जो हाल ही में उपयोग किया है उसके समान प्रवाह दिया गया है। –

+0

पुष्टि के लिए धन्यवाद! प्रमाण पत्रों के बारे में चिंता न करें, ओपनएसएसएल कुछ भी बदलने के लिए सक्षम है। –

15

आप osslsigncode

एक EXE प्रवेश करने के लिए या MSI फ़ाइल तुम अब क्या कर सकते हैं की कोशिश कर सकते एक पीईएम प्रमाण पत्र के साथ पासवर्ड:

osslsigncode sign -certs <cert-file> \ 
     -key <key-file> -pass <key-password> \ 
     -n "Your Application" -i http://www.yourwebsite.com/ \ 
     -in yourapp.exe -out yourapp-signed.exe 

या आप के रूप में अच्छी तरह से एक टाइमस्टैम्प जोड़ना चाहते हैं:

osslsigncode sign -certs <cert-file> -key <key-file> \ 
     -n "Your Application" -i http://www.yourwebsite.com/ \ 
     -t http://timestamp.verisign.com/scripts/timstamp.dll \ 
     -in yourapp.exe -out yourapp-signed.exe 

आप एक प्रमाण पत्र और कुंजी PKCS # में संग्रहीत 12 कंटेनर का उपयोग कर सकते हैं:

osslsigncode sign -pkcs12 <pkcs12-file> -pass <pkcs12-password> \ 
     -n "Your Application" -i http://www.yourwebsite.com/ \ 
     -in yourapp.exe -out yourapp-signed.exe 

प्रवेश करने के लिए एक टैक्सी फ़ाइल वाले जावा वर्ग फाइलें:

osslsigncode sign -certs <cert-file> -key <key-file> \ 
     -n "Your Application" -i http://www.yourwebsite.com/ \ 
     -jp low \ 
     -in yourapp.cab -out yourapp-signed.cab 
+0

यह वह समाधान है जिसने मेरे लिए काम किया है। साइनकोड टूल ने फ़ाइल पर हस्ताक्षर नहीं किया है (हालांकि यह सफल होने पर हस्ताक्षर करने की सूचना देता है) – treaz

+0

यह एनएसआईएस और चींटी के साथ मैगेरिया लिनक्स के तहत बनाए गए मेरे विंडोज इंस्टालरों (जावा सॉफ़्टवेयर लपेटने) पर हस्ताक्षर करने के लिए उपयोगी होगा। बहुत बहुत धन्यवाद :) – gouessej

+0

मुझे खुशी है कि मुझे यह अच्छा समाधान मिला! मैं वास्तव में कुछ अन्य चीज़ों का उपयोग करना चाहता था जो माइक्रोसॉफ्ट के signtool.exe को मेरे कोड पर हस्ताक्षर करने के लिए विंडोज के भीतर उपयोग करें ताकि मैंने आपके उत्तर पढ़ने के बाद विंडोज पर उबंटू पर बैश का उपयोग किया हो। यदि कोई और एक ही नाव में है, तो यहां रैंडडाउन है https://blog.synapp.nz/2017/06/16/code-igning-a- विन्डोज़- अनुप्रयोग-on-linux-on-windows/ –

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