साइनटूल त्रुटि: कोई प्रमाण पत्र नहीं मिला जो सभी दिए गए मानदंडों को विंडोज स्टोर ऐप के साथ मिला हो?


293

मैं एक pfx फ़ाइल के साथ एक Windows 8 appx पैकेज पर हस्ताक्षर करने की कोशिश कर रहा हूँ। मैं एक कमांड का उपयोग कर रहा हूँ जैसे:

signtool.exe sign /fd sha256 /f "key.pfx" "app.appx"

और इस से, मुझे मिलता है:

साइनटूल एरर: कोई प्रमाण पत्र नहीं मिला जो सभी दिए गए मानदंडों को पूरा करता हो।

क्या "मानदंड" मैं नहीं मिल रहा हूँ? यह केवल परीक्षण के लिए है इसलिए ये स्व-हस्ताक्षरित प्रमाण पत्र हैं। मैंने कुंजी को आयात करने और फिर उस पर हस्ताक्षर करने की कोशिश की है, लेकिन यह हमेशा एक ही त्रुटि के परिणामस्वरूप होता है। मैं यह कैसे तय करुं?


मुझे लगता है कि Signtoolविश्वसनीय रूट सर्टिफिकेट स्टोर में प्रमाण पत्र खोजने की कोशिश की जा रही है और आपके पास वहां कोई कोड हस्ताक्षर प्रमाण पत्र नहीं है।
crea7or

15
मुझे यह त्रुटि इसलिए हुई क्योंकि हस्ताक्षर के लिए उपयोग किए जाने वाले प्रमाणपत्र की समय सीमा समाप्त हो गई थी
मार्क होमर

1
मेरे पास एक समान मुद्दा था और यहां एक उत्तर पोस्ट किया गया था । उम्मीद है की यह मदद करेगा।
सूरनसालुका

जवाबों:


589

जब विजुअल स्टूडियो के माध्यम से यह त्रुटि हो रही थी, क्योंकि यह मूल रूप से विकसित कंप्यूटर से मिलान करने के लिए एक हस्ताक्षर प्रमाण पत्र सेटअप था।

आप इसे प्रोजेक्ट प्रॉपर्टीज> साइनिंग टैब पर जाकर और प्रमाणपत्र विवरण की जांच करके देख सकते हैं।

आप हस्ताक्षर को अक्षम करने के लिए "ClickOnce मैनिफ़ेस्ट साइन इन करें" को अनचेक कर सकते हैं।

गुण पर हस्ताक्षर करना

यदि आप इस विकल्प को बंद नहीं करना चाहते हैं तो आपको प्रमाणपत्र स्थापित करना होगा।


12
@JDandChips ने जो सुझाव दिया है उसे जोड़ने के लिए: डिबगिंग और परीक्षण उद्देश्यों के लिए आप ऊपर दिए गए स्क्रीनशॉट में दिखाए गए 'टेस्ट टेस्ट सर्टिफिकेट' बटन पर क्लिक करके एक अस्थायी परीक्षण प्रमाणपत्र का उपयोग कर सकते हैं।
नमस्ते

आपका क्या मतलब है "प्रमाण पत्र स्थापित करें"?
सीन केंडल

मेरी स्थिति में मूल रूप से विकसित की गई मशीन से प्रमाण पत्र उपलब्ध था, इसलिए मैं लापता प्रमाणपत्र को स्थापित करने के लिए "फ़ाइल से चयन करें ..." चुन सकता था। वैकल्पिक रूप से आप हमेशा एक नया बना सकते हैं और इसका उपयोग कर सकते हैं!
JDandChips 10:16

@JDandChips आप एक नया प्रमाणपत्र कैसे बनाते हैं?
इरोटोवलास 17

3
वीएस न्यूबरी के लिए। सुनिश्चित करें कि आप प्रोजेक्ट पर राइट-क्लिक करें, समाधान नहीं, क्योंकि यह पूरी तरह से अलग मेनू पॉपअप करेगा!
B5A7

109

/ डिबग के साथ प्रयास करें। 1,2 इस रूप में:

signtool sign /debug /f mypfxfile.pfx /p <password> (mydllexectuable).exe

यह पता लगाने में आपकी मदद करेगा कि क्या चल रहा है। आपको इस तरह आउटपुट मिलना चाहिए:

The following certificates were considered:
    Issued to: <issuer>
    Issued by: <certificate authority> Class 2 Primary Intermediate Server CA
    Expires:   Sun Mar 01 14:18:23 2015
    SHA1 hash: DD0000000000000000000000000000000000D93E

    Issued to: <certificate authority> Certification Authority
    Issued by: <certificate authority> Certification Authority
    Expires:   Wed Sep 17 12:46:36 2036
    SHA1 hash: 3E0000000000000000000000000000000000000F

After EKU filter, 2 certs were left.
After expiry filter, 2 certs were left.
After Private Key filter, 0 certs were left.
SignTool Error: No certificates were found that met all the given criteria.

आप देख सकते हैं कि किस फ़िल्टर के कारण आपका प्रमाणपत्र काम नहीं कर रहा है, या यदि कोई प्रमाण पत्र नहीं माना जाता है।

मैंने हैश और अन्य जानकारी बदल दी है, लेकिन आपको यह विचार करना चाहिए। उम्मीद है की यह मदद करेगा।


1 कृपया ध्यान दें: signtoolजहां /debugविकल्प रखा गया है, उसके बारे में विशेष है। signबयान के बाद इसे जाने की जरूरत है ।
2 इसके अलावा ध्यान दें: /debugविकल्प केवल कुछ संस्करणों के साथ काम करता है signtool। डब्ल्यूडीके संस्करण में विकल्प है, जबकि विंडोज एसडीके संस्करण नहीं है।


3
मेरे लिये कार्य करता है। ऐसा नहीं है कि मैं साइनटूल से प्रतिक्रिया को समझता हूं, लेकिन / डिबग ने वही किया जो उसे करना चाहिए। वोट दें!
21

1
यह कमांड विशेष रूप से है जहां आप / डीबग लगाते हैं। यदि आप इसे क्रम से बाहर करते हैं, तो यह एक त्रुटि की सूचना देगा।
डैनियल

12
/ debug केवल signtool.exe के विशिष्ट संस्करणों के लिए काम करता है। डब्ल्यूडीके के साथ आने वाला यह विकल्प प्रदान करता है, जो कि विंडोज एसडीके से नहीं है।
पॉल केर्चर

3
इसके अलावा, / डिबग को साइनटूल साइन के बाद जाना चाहिए, बीच में नहीं।
डेनिस V

दिखाता है कि मेरा प्रमाणपत्र समाप्त हो गया है। बहुत बढ़िया।
14

36

कृपया हमेशा पहले अपने प्रमाणपत्र की समाप्ति तिथि की जांच करें क्योंकि अधिकांश प्रमाणपत्रों की समाप्ति तिथि होती है। मेरे मामले में प्रमाणपत्र की समय सीमा समाप्त हो गई है और मैं प्रोजेक्ट बनाने की कोशिश कर रहा था।


2
प्रमाण पत्र की समाप्ति की जांच करने के लिए, कमांड लाइन पर जाएं, जहां आपका प्रमाणपत्र है वहां नेविगेट करें, फिर दर्ज करें certutil -dump mycertificate.pfx। अंतिम प्रविष्टि को देखें क्योंकि पहले वाले सीए हैं, न कि आपका कोड हस्ताक्षर प्रमाणपत्र।
हॉकीज

23

अगर आपको ऐप साइन करने की ज़रूरत नहीं है, तो अपने प्रोजेक्ट पर राइट क्लिक करें

Project Properties -> Signing -> uncheck "Sign the ClickOnce Manifest"

यह भी जैसा कि इस एमएस लेख से पता चलता है,

यदि आप Visual Studio 2008 का उपयोग कर रहे हैं और .NET 3.5 को लक्षित कर रहे हैं और स्वचालित अपडेट का उपयोग कर रहे हैं, तो आप बस प्रमाणपत्र बदल सकते हैं और एक नया संस्करण तैनात कर सकते हैं,


1
ले जाने के लिए आप create test सर्टिफिकेट पर भी क्लिक कर सकते हैं। धन्यवाद
माइंडऑस्टरमास्टर

16

प्रॉजेक्ट प्रॉपर्टीज में साइनिंग टैब से सिर्फ 'साइन इन द क्लिक मैनिफेस्ट्स' को अनचेक करें, यह एरर निकाल देगा और आप वहीं से एक नया बना सकते हैं।


15

एक ही मुद्दा मिला, पता चला कि प्रमाणपत्र के लिए निजी कुंजी की कोई अनुमति नहीं थी।
ठीक करने के लिए - प्रमाण पत्र प्रबंधन खोलें, अपना प्रमाणपत्र ढूंढें, राइट क्लिक करें -> निजी कुंजी प्रबंधित करें और फिर शीर्ष पर सुरक्षा में सुनिश्चित करें कि आपका उपयोगकर्ता जोड़ा गया है और अनुमतियाँ दी गई हैं, जिसने इसे मेरे लिए निर्धारित किया है।


15

मेरे मामले में मेरे पास गलत प्रकार का प्रमाण पत्र है जिसे मैं संबद्ध करने का प्रयास कर रहा हूं।
मेरे पास " कोड साइनिंग" के बजाय "सर्वर प्रमाणीकरण" था ।
आपको यह इरादा उद्देश्य अनुभाग में प्रमाणपत्र स्नैप में देखने में सक्षम होना चाहिए।
इसके बाद, यह ठीक काम करता है।


1
हां, यानी मैं इस जवाब की तलाश में 2 दिनों से संघर्ष कर रहा था।
हकन फिस्टक

14

यदि कोई अन्य व्यक्ति इसमें भाग लेता है: मेरी समस्या समाप्त हो रही है, तो मुझे signtool.exe ऐप का उपयोग करने से पहले कमांड प्रॉम्प्ट को व्यवस्थापक के रूप में चलाने की आवश्यकता है। फिर सब कुछ अद्भुत ढंग से काम करता है।


11
मेरे मामले में मदद नहीं की।
bgplaya

1
मैं एक स्क्रिप्ट के रूप में VS2015 से साइनटूल चला रहा हूं, और मैं उसी मुद्दे का सामना कर रहा था। मैंने VS2015 को व्यवस्थापक के रूप में चलाया और साइनटूल मेरी फ़ाइल पर हस्ताक्षर करने में सक्षम था>
हैमेन

10

मुझे अपने कंसोल एप्लिकेशन डेवलपमेंट में और त्वरित वर्कअराउंड के रूप में समान समस्या मिली ,

project propertiesतब जाओ ,

signingटैब पर क्लिक करें और "साइन इन करें क्लिक करें मैनिफेस्ट" को अनचेक करें।

चित्र का वर्णन:

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

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

FYI करें आप इस एक मिनट के वीडियो समाधान को भी देख सकते हैं । उपरोक्त तस्वीर वीडियो के रूप में ली गई है।


1
ले जाने के लिए आप create test सर्टिफिकेट पर भी क्लिक कर सकते हैं। धन्यवाद
माइंडऑस्टरमास्टर

9

मैंने /smडिफ़ॉल्ट के बजाय मशीन स्टोर में देखने के लिए निर्दिष्ट करने के लिए ध्वज का उपयोग करके इसे हल किया , जो कि मेरा (स्थानीय उपयोगकर्ता) स्टोर है। इसके अलावा, यह उपयोग करके साइनटूल के लिए डिबग को चालू करने में मदद कर सकता है /debug


8

मुझे यह समस्या थी और मुझे पूरी तरह से यकीन नहीं है कि नीचे दिए गए कदम ने इसे कैसे काम किया, लेकिन आशा है कि यह किसी और की मदद करता है ... यही मैंने किया है:

  • डाउनलोड किए गए प्रमाण पत्र (.crt) को प्रमाणपत्रों में स्थापित करें (मैंने इसे "व्यक्तिगत" स्टोर में रखा) - .crt फ़ाइल पर राइट क्लिक करें और प्रमाणपत्र स्थापित करें पर क्लिक करें
  • निजी कुंजी सहित pfx फ़ाइल के रूप में प्रमाण पत्र को चलाएं certmgr.mscऔर निर्यात करें (जो भी आप 1 चरण में इस्तेमाल किया था), और विस्तारित गुण (शायद अनावश्यक)
  • अपनी परियोजना पर हस्ताक्षर करते समय निर्यातित .pfx फ़ाइल का उपयोग करें
  • उदाहरण साइनटूल: signtool sign /f "c:\mycert.pfx" /p mypassword /d "description" /t http://timestamp.verisign.com/scripts/timstamp.dll $(TargetPath)
    जहाँ निर्यात के दौरान पासवर्ड समान है

1
धन्यवाद, यह चाल चली। मैं उस .crtफ़ाइल का उपयोग कर रहा था जो कोमोडो ने प्रमाण पत्र को स्थापित करने के बजाय प्रदान किया था और फिर .pfxफ़ाइल को निर्यात किया ।
यहोशू पिंटर

1
आपको बहुत - बहुत धन्यवाद!
ब्रूनो सोरेस

6

मुझे वही समस्या हो रही है, कुछ उत्तर पढ़ रहा हूं (यहां पोस्ट किया गया), मैंने अपना प्रमाण पत्र समाप्त देखा।

बस एक नई शुरुआत मेरी परियोजना से करें। तब प्रमाणपत्र प्रबंधक ने समय सीमा समाप्त प्रमाणपत्र को हटा दिया।

अब सब कुछ ठीक है।


5

मानदंड में खाता नाम (जिसकी निजी कुंजी इसके साथ संबद्ध है), डोमेन, कंपनी, समाप्ति तिथि, इच्छित उद्देश्य, अन्य चीजों में शामिल हैं।

इस त्रुटि के होने के कई अलग-अलग संभावित कारण हैं, कुछ को पहले ही सूचीबद्ध किया जा चुका है। यहां एक और टिप दी गई है: प्रमाण पत्र आयात करते समय, सुनिश्चित करें कि आप प्रमाण पत्र प्राधिकरण (सीए) से प्राप्त मूल फ़ाइल के साथ काम करते हैं , या फिर कुछ गुण खो सकते हैं।

उदाहरण: हाल ही में मैंने एक ही मशीन पर एक अलग खाते से निर्यात किए गए प्रमाण पत्र को आयात करने की कोशिश की। प्रमाणपत्र मेरे खाते के लिए दृश्यमान हो गया, लेकिन मेरे खाते से संबद्ध नहीं था, और परिणामस्वरूप signtoolफ़ाइल नाम और पासवर्ड प्रदान किए बिना इसे स्पष्ट रूप से पहचानने से इनकार कर दिया। जो, जब निर्माण प्रक्रिया के हिस्से के रूप में किया जाता है और स्पष्ट रूप से एक बैच फ़ाइल या स्रोत फ़ाइल में लिखा जाता है, तो पर्याप्त रूप से सुरक्षित नहीं हो सकता है। (मूल CA- जारी किए गए प्रमाण पत्र को आयात करने से इसे हल किया गया।)


4

मेरे पास वही था " निजी कुंजी फ़िल्टर के बाद, 0 सेर्ट्स छोड़ दिया गया था " संदेश और मेरे जीवन का बहुत अधिक खर्च करने की कोशिश कर रहा था कि संदेश का क्या मतलब है।

समस्या यह थी कि मैंने प्रमाण पत्र को विंडोज सर्टिफिकेट स्टोर में गलत तरीके से स्थापित किया था, इसलिए कोड हस्ताक्षर प्रमाण पत्र के साथ कोई निजी कुंजी जुड़ी नहीं थी।

मुझे क्या करना चाहिए था:

  1. फ़ायरफ़ॉक्स या इंटरनेट एक्सप्लोरर का उपयोग करके, जारीकर्ता को अनुरोध सबमिट करें। यह एक निजी कुंजी उत्पन्न करता है जिसे ब्राउज़र द्वारा चुपचाप संग्रहीत किया जाता है (फ़ायरफ़ॉक्स में एक सेकंड के एक अंश के लिए एक संवाद प्रकट होता है)। ध्यान दें कि अन्य ब्राउज़र काम नहीं कर सकते हैं: यदि वे करते हैं तो यह पता लगाने के लिए आपका जीवन बहुत छोटा है।

  2. अनुरोध सबमिट करें, जारीकर्ता के सत्यापन हुप्स और लूप के माध्यम से कूदें, एक बकरी का बलिदान करें, देवताओं से प्रार्थना करें, अपने महान दादा दादी से हस्ताक्षरित बयान जमा करें, आदि।

  3. प्रमाणपत्र (.crt) डाउनलोड करें और इसे उसी ब्राउज़र में आयात करें । ब्राउज़र में अब निजी कुंजी और प्रमाणपत्र दोनों हैं

  4. ब्राउज़र से प्रमाणपत्र को एक व्यक्तिगत सूचना विनिमय (.p12) फ़ाइल के रूप में निर्यात करें। आपको इस फ़ाइल की सुरक्षा के लिए पासवर्ड की आपूर्ति करने के लिए कहा जाएगा।

  5. .P12 फ़ाइल की बैकअप प्रतिलिपि रखें।

  6. प्रमाणपत्र प्रबंधक (certmgr.msc) चलाएँ, व्यक्तिगत प्रमाणपत्र स्टोर पर राइट क्लिक करें , सभी कार्य चुनें / आयात करें और .p12 फ़ाइल को Windows में आयात करें। आपसे उस पासवर्ड के लिए पूछा जाएगा जिसका उपयोग आपने फ़ाइल की सुरक्षा के लिए किया था। इस बिंदु पर, आपकी सुरक्षा आवश्यकताओं के आधार पर, आप कुंजी को निर्यात योग्य के रूप में चिह्नित कर सकते हैं ताकि आप विंडोज स्टोर से कॉपी को पुनर्स्थापित कर सकें। यदि आप बैच स्क्रिप्ट को तोड़ना चाहते हैं तो उपयोग करने से पहले यह भी चिन्हित कर सकते हैं कि पासवर्ड की आवश्यकता है।

  7. साइनटूल को सफलतापूर्वक चलाएं, राहत की सांस लें, और खराब त्रुटि संदेशों और खराब या लापता प्रलेखन के कारण आपके जीवन का कितना हिस्सा बर्बाद हो गया है।


2

मेरे पास यह मुद्दा भी था, मैंने बहुत कोशिश की। एसडीके के साथ-साथ विज़ुअल स्टूडियो साइनिंग का इस्तेमाल किया, लेकिन हर जगह मुझे "कोई प्रमाण पत्र नहीं मिला जो सभी दिए गए मानदंडों को पूरा करता था"।

समाधान: इस बात से अवगत रहें कि, यदि "निजी कुंजी फ़िल्टर के बाद": '0 बायाँ' विकल्प सिगनल साइन / डीबग के साथ दिखाता है ..., इसका कारण यह है कि आपके पीसी के पास स्टोर में स्वयं CA नहीं है। इसे हल करने के लिए, CA को पहले स्थापित करें (मेरे मामले में .crt फ़ाइल), फिर साइन को फिर से चलाएँ। यह अभी काम करना चाहिए!

सिग्नटूल का उपयोग केवल एक सीए के साथ किया जा सकता है जिसे उसी पीसी के स्वामित्व में अनुरोध किया जाता है।


मुझे CA के साथ साइनटूल का उपयोग करने में कोई समस्या नहीं थी जो दूसरे पीसी से आई थी।
bparker

2

मेरी समस्या समाप्त हो रही है कि मैं साइनटूल विकल्पों को नहीं समझता था। मैंने कुछ प्रमाण के साथ / n विकल्प प्रदान किया था जो मेरे प्रमाण पत्र से मेल नहीं खाता था। जब मैंने हटाया कि यह शिकायत करना बंद कर देता है।


2

मुझे एक समान समस्या थी मेरे कंप्यूटर का नाम बदल गया था और प्रमाणपत्र समाप्त हो गया था। मैं एक नया परीक्षण प्रमाणपत्र बनाकर इस मुद्दे को हल करने में सक्षम था।

विजुअल स्टूडियो में, समाधान एक्सप्लोरर में प्रोजेक्ट पर राइट क्लिक करें। गुणों का चयन करें। गुण विंडो में हस्ताक्षर का चयन करें। "टेस्ट सर्टिफिकेट बनाएं ...." पर क्लिक करें। परीक्षण प्रमाणपत्र के लिए पासवर्ड जानकारी दर्ज करें और ठीक पर क्लिक करें।


2

/ डिबग के साथ, जब आपको यह संदेश मिलता है "निजी कुंजी फ़िल्टर के बाद, 0 सिरे बचे थे।", एक कारण यह हो सकता है कि pfx फ़ाइल में निजी कुंजी नहीं है। जब आप स्थापित प्रमाणपत्र को pfx फ़ाइल में निर्यात करते हैं, तो निजी कुंजी को शामिल करने के लिए चेक बॉक्स को सक्षम करना सुनिश्चित करें।


1

पर जाएं project propertiesऔर से सभी क्षेत्रों को अनचेक Firmसंकलन init से पहले

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