"प्रमाण पत्र की दुकान में प्रकट हस्ताक्षर प्रमाण पत्र खोजने में असमर्थ" - नई कुंजी जोड़ने पर भी


153

मैं एक मजबूत नाम कुंजी हस्ताक्षर के साथ परियोजनाओं का निर्माण नहीं कर सकता - शीर्षक में संदेश हमेशा आता है।

हाँ परियोजना को शुरू में एक अन्य मशीन से कॉपी किया गया था। हालाँकि, भले ही मैं प्रोजेक्ट गुण में हस्ताक्षर टैब के माध्यम से एक नई कुंजी जोड़ूँ, यह त्रुटि अभी भी दिखाई गई है।

मैंने विजुअल स्टूडियो को एक प्रशासक के रूप में चलाने की कोशिश की है और मैन्युअल रूप से विंडोज सर्टिफिकेट स्टोर की चाबियाँ जोड़ने की कोशिश की है।

मदद!

संपादित करें: मुझे यह त्रुटि एक नई परियोजना के साथ नहीं मिली है, लेकिन मैं इस मौजूदा परियोजना को काम करना चाहूंगा। यह तब भी काम नहीं करेगा जब मैं एक नया प्रमाणपत्र बनाऊँगा!


3
किस प्रकार का वीएस प्रोजेक्ट? क्या आपने प्रोजेक्ट गुण साइनिंग टैब पर "साइन इन द क्लिकऑनसेक्ट मैनिफेस्ट" अनचेक किया है?
शमौन मूर

@ साइमन मूरियर, अगर मैं उस विकल्प को अनचेक करता हूं तो फाइल पर हस्ताक्षर नहीं किए जाएंगे। मैं चाहता हूं कि यह हस्ताक्षरित हो! यह एक C # प्रोजेक्ट है। मेरे मुख्य विकास मशीन पर ठीक काम करता है, न कि केवल लैपटॉप पर।
मार्कस

क्या त्रुटि संदेश आपके बिल्ड लॉग, या किसी अन्य तरीके से प्रदर्शित होता है? यदि आप लॉग को कॉपी और पेस्ट करते हैं तो यह मदद कर सकता है।
ओवेन वेंगरड

बिल्ड लॉग में एक त्रुटि: "प्रमाण पत्र की दुकान में प्रकट हस्ताक्षर प्रमाण पत्र खोजने में असमर्थ"
मार्कस

मुझे स्वीकृत उत्तर में कोड की लाइनें दिखाई नहीं दीं। लेकिन इसने मेरे लिए काम किया: मैंने VS2015 में एक नई कुंजी बनाई। मैंने असेंबली पर हस्ताक्षर किए और बचा लिया। फिर मैंने फ़ाइल बटन से चयन पर क्लिक किया, जो फ़ाइल मैंने बनाई थी, उसे चुना, फिर से साइन असेंबली पर क्लिक किया, और बचाया। पुनर्निर्माण किया।
टिम

जवाबों:


234

मैं अंत में समाधान मिल गया है और वास्तव में उम्मीद है कि यह किसी और को भी मदद करता है।

  1. .csprojप्रश्न में परियोजना के लिए फ़ाइल को संपादित करें ।
  2. कोड की निम्नलिखित पंक्तियों को हटाएं:

    <PropertyGroup>
       <ManifestCertificateThumbprint>...........</ManifestCertificateThumbprint>
    </PropertyGroup>
    <PropertyGroup>
       <ManifestKeyFile>xxxxxxxx.pfx</ManifestKeyFile>
    </PropertyGroup>
    <PropertyGroup>
       <GenerateManifests>true</GenerateManifests>
    </PropertyGroup>
    <PropertyGroup>
       <SignManifests>false</SignManifests>
    </PropertyGroup>
    

1
मेरे लिए भी काम किया। इस तरह की कार्रवाई के किसी भी चेतावनी?
डॉक्टर कोडर

1
हाँ, "मेनिफेस्ट" के साथ कुछ भी हटा दिया गया और इसने काम किया :-)
s1cart3r

2
मैं नतीजों को जाने बिना ऐसा नहीं करूंगा ... वैसे भी करता है
बर्नक्लाम।

मेरे मामले में, समस्या को हटाना ManifestCertificateThumbprintऔर ManifestKeyFileहल करना।
अहमद शाल

मेरे लिए काम किया। इसका कोई नतीजा नहीं है, लेकिन कम से कम उनमें से एक काम करने वाला प्रोजेक्ट है, इसलिए यह मेरे लिए काफी अच्छा है।
तोतामास्टर

148

दृश्य स्टूडियो के भीतर अपनी परियोजना के "गुण" पर जाएं। फिर साइनिंग टैब पर जाएं।

फिर सुनिश्चित करें कि एक बार प्रकट होने पर क्लिक करें साइन इन करें बंद कर दिया गया है।


अद्यतन किए गए निर्देश:

आपके समाधान एक्सप्लोरर के भीतर:

  1. अपने प्रोजेक्ट पर राइट क्लिक करें
  2. गुणों पर क्लिक करें
  3. आमतौर पर बाईं ओर स्थित "साइनिंग" टैब का चयन करें
  4. ClickOnce मैनिफ़ेस्ट साइन साइन ऑफ करें
  5. सुनिश्चित करें कि आप बचाओ!

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


2
आपने जो कहा वह ठीक है और काम करना चाहिए लेकिन नहीं किया। अंत में मुझे नीचे दिए गए उत्तर की तरह कोड की पंक्तियों को हटाना पड़ा
हामिद शाहिद

1
यह क्या करता है / इस क्रिया का क्या अर्थ है?
लेज़रशर्क्स

@TrailMix यह आपको उचित रूप से फ़ाइल को कॉन्फ़िगर करेगा।
22

1
यह मुझे vs2010 के लिए एक समाधान दिया :) ऊपर!
5:22 बजे jace

1
अच्छा उत्तर! मैं VS2012 का उपयोग कर रहा हूं और यह वास्तव में काम करता है! +1
kiLLua

15

यह आसान है!!

मैंने निम्नलिखित चरणों का पालन करके इस समस्या को हल किया है:

  1. परियोजना गुण खोलें img
  2. साइनिंग टैब पर क्लिक करें
  3. और "असेंबली साइन" अनचेक करें

बस!!


13
  1. नोटपैड में .csproj फ़ाइल खोलें।
  2. प्रमाण पत्र की दुकान में हस्ताक्षर प्रमाण पत्र से संबंधित निम्नलिखित जानकारी को हटा दें

    <PropertyGroup>
      <ManifestCertificateThumbprint>xxxxx xxxxxx</ManifestCertificateThumbprint>
      <ManifestKeyFile>xxxxxxxx.pfx</ManifestKeyFile>
    <GenerateManifests>true</GenerateManifests>
    <SignManifests>false</SignManifests>
    </PropertyGroup>
    

11

इस प्रयास करें: अपनी परियोजना पर राइट क्लिक करें -> जाओ करने के लिए गुण -> क्लिक करें पर हस्ताक्षर जो स्क्रीन के बाईं ओर है -> सही का निशान हटाएँ प्रकट होता है एक बार क्लिक करें -> सहेजें और बिल्ड


6

दृश्य स्टूडियो के भीतर अपनी परियोजनाओं "गुण" पर जाएं। फिर साइनिंग टैब पर जाएं।

फिर सुनिश्चित करें कि एक बार प्रकट होने पर क्लिक करें साइन इन करें बंद कर दिया गया है।

या

1. नोटपैड में .csproj फ़ाइल को खोलें।

2. प्रमाण पत्र की दुकान में प्रमाण पत्र पर हस्ताक्षर करने से संबंधित निम्नलिखित जानकारी प्राप्त करें xxxxx xxxxxx xxxxxxxx.pfx सच झूठी `

मेरे लिए काम किया।


3

यह मानते हुए कि आपके द्वारा अपनी परियोजना की प्रतिलिपि बनाई गई प्रणाली पर खिड़कियों द्वारा बनाया गया एक व्यक्तिगत प्रमाण पत्र है, आप उस प्रमाणपत्र प्रबंधक का उपयोग उस प्रणाली पर कर सकते हैं जहां परियोजना अभी है और प्रमाण पत्र आयात करती है। प्रमाणपत्र प्रबंधक शुरू करें (प्रमाणित करें) और व्यक्तिगत प्रमाणपत्र चुनें और फिर मौजूदा प्रमाणपत्रों की सूची के ठीक नीचे क्लिक करें और कार्यों से आयात का चयन करें। प्रोजेक्ट में .pfx (पिछले सिस्टम से .pfx जिसे आपने प्रोजेक्ट के साथ कॉपी किया है) खोजने के लिए ब्राउज़ का उपयोग करें। यह परियोजना निर्देशिका के समान नाम के साथ उप-निर्देशिका में होना चाहिए। मैं C # और VS से परिचित हूं, इसलिए यदि आपका वातावरण नहीं है तो .pfx कहीं और होगा या शायद यह सुझाव लागू नहीं होता है। आयात के बाद आपको एक स्थिति संदेश मिलना चाहिए। यदि आप सफल हुए हैं, तो संकलन प्रमाणपत्र त्रुटि चली जानी चाहिए।प्रमाणित स्क्रीन


स्पष्ट और संक्षिप्त!
गुइडो लेन्डर्स

0

यह विंडोज सर्टिफिकेट स्टोर में मैन्युअल रूप से चाबियाँ जोड़ने के लिए पर्याप्त नहीं है। प्रमाणपत्र में केवल हस्ताक्षरित सार्वजनिक कुंजी है। आपको उस निजी कुंजी को भी आयात करना होगा जो प्रमाणपत्र में सार्वजनिक कुंजी से संबद्ध है। एक .pfx फ़ाइल में एक ही फ़ाइल में सार्वजनिक और निजी दोनों कुंजियाँ होती हैं। यही आपको आयात करने की आवश्यकता है।


धन्यवाद, लेकिन पहले से ही कोशिश की है कि। जब भी आप नया निर्माण करते हैं, तो विजुअल स्टूडियो को स्वतः प्रमाण पत्र जोड़ना चाहिए। हालाँकि मैंने .pfx फ़ाइल को मैन्युअल रूप से जोड़ने की कोशिश की है। इसे सही सर्टिफिकेट स्टोर में इंस्टॉल करने के लिए लेफ्ट विंडो और इसे मेरे पर्सनल स्टोर से भी जोड़ा।
मार्कस

प्रमाणपत्र कुंजी में निजी कुंजी संग्रहीत नहीं है। कृपया इसे पढ़ें, शायद यह आपको भेद को समझने में मदद करेगा: Technet.microsoft.com/en-us/library/cc962112.aspx
Owen Wengerd

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

हां यह कहता है "आपके पास एक निजी कुंजी है जो इस प्रमाण पत्र से मेल खाती है"।
मार्कस

मुझे लगता है कि समस्या के रूप में कुंजी या प्रमाण पत्र को नियंत्रित करता है।
ओवेन वेंगरड

0

आपने कहा कि आपने दूसरे कंप्यूटर से फाइल कॉपी की है। आपने उन्हें कॉपी करने के बाद, क्या आपने उन्हें 'अनब्लॉक' किया? विशेष रूप से .snk फ़ाइल को यह सुनिश्चित करने के लिए जांचा जाना चाहिए कि वह असुरक्षित के रूप में चिह्नित नहीं है।


यह अवरुद्ध नहीं है, यह विंडोज लाइव मेष सिंकिंग सॉफ्टवेयर से आया है। हालाँकि यह अप्रासंगिक है क्योंकि लैपटॉप पर Visual Studio के अंदर एक नई कुंजी बनाने से भी काम नहीं चलेगा।
मार्कस

0

विशेषताओं का उपयोग करके एक मजबूत नाम के साथ एक विधानसभा पर हस्ताक्षर करने के लिए

ओपन AssemblyInfo.cs(में$(SolutionDir)\Properties )

AssemblyKeyFileAttributeयाAssemblyKeyNameAttribute , फ़ाइल या कंटेनर है कि जब एक मजबूत नाम के साथ विधानसभा पर हस्ताक्षर करने के लिए उपयोग कुंजी युग्म होता है की नाम निर्दिष्ट।

निम्नलिखित कोड जोड़ें:

[assembly:AssemblyKeyFileAttribute("keyfile.snk")]

इस पंक्ति को जोड़ने से कोई फ़र्क नहीं पड़ता है, फिर भी मुझे वही त्रुटि मिलती है।
मार्कस

0

यदि आपको स्थानीय रूप से प्रोजेक्ट या समाधान बनाने की आवश्यकता है तो हस्ताक्षर को हटाना एक मृत सरल समाधान हो सकता है जैसा कि अन्य सुझाव देते हैं।

लेकिन अगर आपके पास TeamCity जैसे आपके स्वचालन बिल्ड सर्वर पर यह त्रुटि है, तो आप तैनाती या वितरण के लिए अपने वास्तविक रिलीज़ टुकड़े का निर्माण करते हैं, तो आप इस बात पर विचार करना चाह सकते हैं कि आप कैसे बिल्ड मशीन पर प्रमाणित स्टोर में इस प्रमाणपत्र को ठीक से स्थापित कर सकते हैं, ताकि आप प्राप्त करें बिल्ड के अंत में एक हस्ताक्षरित पैकेज।

आमतौर पर किसी भी PFX सर्टिफिकेट को सोर्स कंट्रोल में चेक-इन / इन / कमिट करने की अनुशंसा नहीं की जाती है , इसलिए आपको बिल्ड प्रोसेस के दौरान अपने बिल्ड सर्वर पर यह फाइलें कैसे मिलती हैं यह एक और सवाल है, लेकिन कभी-कभी लोगों के पास यह फाइल सॉल्यूशन के साथ स्टोर होती है कोड, इसलिए आप इसे प्रोजेक्ट फ़ोल्डर में पा सकते हैं।

आपको बस अपने बिल्ड सर्वर पर उचित खाते के तहत इस प्रमाणपत्र को स्थापित करने की आवश्यकता है ।

  1. Windows Sysinternals से PsExec डाउनलोड करें ।

  2. कमांड प्रॉम्प्ट खोलें, और निम्नलिखित दर्ज करें। यह एक नया कमांड प्रॉम्प्ट, स्थानीय प्रणाली के रूप में चल रहा है (यह मानते हुए कि आपकी TeamCity डिफ़ॉल्ट स्थानीय सिस्टम खाते के तहत चल रही है):

    > psexec.exe -i -s cmd.exe

  3. इस नए कमांड प्रॉम्प्ट में, सर्टिफिकेट वाली डायरेक्टरी में बदलाव करें और इंस्टाल करने के लिए फाइलनाम डालें (फाइल का नाम आपके पास बदल दें):

    > mykey.pfx

  4. आयात प्रमाणपत्र विज़ार्ड प्रारंभ हो जाएगा। के माध्यम से क्लिक करें और सभी सुझाए गए चूक का चयन करें।

  5. बिल्ड रन करें।

सभी श्रेय स्टुअर्ट नोबल को जाता है (और फिर लॉरेंट केम्प को मेरा मानना ​​है कि u )।

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