कीफाइल 'blah.pfx' आयात नहीं कर सकता - त्रुटि 'कीफाइल पासवर्ड संरक्षित किया जा सकता है'


392

हमने अपने विजुअल स्टूडियो 2008 प्रोजेक्ट्स को विजुअल स्टूडियो 2010 में अपग्रेड किया। हमारी सभी असेंबली एक वेरिसाइन कोड साइनिंग सर्टिफिकेट का उपयोग करते हुए मजबूत हस्ताक्षरित थीं । उन्नयन के बाद से हम लगातार निम्न त्रुटि प्राप्त करते हैं:

निम्नलिखित कुंजी फ़ाइल आयात नहीं कर सकता: companyname.pfx। कुंजी फ़ाइल पासवर्ड संरक्षित हो सकती है। इसे ठीक करने के लिए, प्रमाण पत्र को फिर से आयात करने का प्रयास करें या मैन्युअल रूप से निम्नलिखित प्रमुख कंटेनर नाम के साथ मजबूत नाम CSP को प्रमाणपत्र स्थापित करें: VS_KEY_3E185446540E7F7A

यह कुछ डेवलपर मशीनों पर होता है और दूसरों पर नहीं। इसे ठीक करने के लिए इस्तेमाल किए जाने वाले कुछ तरीकों में कुछ समय शामिल हैं:

  • Windows Explorer से कुंजी फ़ाइल को फिर से स्थापित करना (PFX फ़ाइल पर राइट क्लिक करें और इंस्टॉल करें पर क्लिक करें)
  • पहली बार जब आप प्रोजेक्ट खोलते हैं, तो पहली बार एक ताजा मशीन पर विजुअल स्टूडियो 2010 स्थापित करना आपको संकेत देता है, और फिर यह काम करता है। Visual Studio 2008 से उन्नत मशीनों पर, आपको यह विकल्प नहीं मिलता है।

मैंने एसएनएक्सईटी उपयोगिता (स्ट्रॉन्ग नेम टूल) का उपयोग करके कोशिश की है कि स्ट्रॉन्ग नेम सीएसपी के साथ कुंजी को पंजीकृत करें क्योंकि त्रुटि संदेश से पता चलता है, लेकिन जब भी मैं विजुअल स्टूडियो 2010, एसएन के साथ आए संस्करण का उपयोग करके टूल को किसी भी विकल्प के साथ चलाता हूं। .EXE सिर्फ कुछ भी करने के बजाय अपने कमांड लाइन तर्कों को सूचीबद्ध करता है। यह इस बात की परवाह किए बिना होता है कि मैं क्या तर्क देता हूं।

यह क्यों हो रहा है, और इसे ठीक करने के लिए स्पष्ट कदम क्या हैं? मैं ClickOnce इंस्टॉल और Microsoft कोड पर हस्ताक्षर करने वाला हूं ।

जवाबों:


447

मैं इस समस्या में भी भाग रहा था। मैं चलाकर समस्या को हल करने में सक्षम था
sn -i <KeyFile> <ContainerName>( एक नामित कंटेनर में कुंजी जोड़ी स्थापित करता है )।

snआमतौर पर विंडोज एसडीके के हिस्से के रूप में स्थापित किया जाता है। उदाहरण के लिए C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\sn.exe। सबसे अधिक संभावना है कि यह स्थान आपके मानक वातावरण के लिए खोज पथ पर नहीं है। हालाँकि, Visual Studio द्वारा स्थापित "डेवलपर कमांड प्रॉम्प्ट" में अतिरिक्त जानकारी शामिल होती है जिसमें आमतौर पर सही स्थान शामिल होता है।

आपके पोस्ट के आधार पर ऐसा लगेगा

sn -i companyname.pfx VS_KEY_3E185446540E7F7A

यह आपके PFX फ़ाइल के स्थान से चलाया जाना चाहिए, यदि आपके पास VS 2010 में लोड किया गया समाधान है, तो आप बस समाधान एक्सप्लोरर से pfx फ़ाइल पर राइट क्लिक कर सकते हैं और ओपन कमांड प्रॉम्प्ट चुन सकते हैं जो .net 2010 cmd प्रॉम्प्ट टूल को लॉन्च करेगा। सही निर्देशिका।

इस स्नेक कमांड को चलाने से पहले मैंने pfx को राइट क्लिक करके इनस्टॉल किया और इनस्टॉल को चुना जो कि काम नहीं किया। बस कुछ ध्यान दें क्योंकि यह समाधान प्रदान करने वाले दोनों का संयोजन हो सकता है।

आशा है कि यह आपकी समस्या को हल करने में मदद करेगा।


5
धन्यवाद ब्रैंडन - हाँ यह, कुंजी फ़ाइल के मैनुअल री-इंस्टॉल की तरह "समस्या को हल करता है"। मुद्दा यह है कि जैसे ही आप कुंजी फ़ाइल में जांचते हैं, कोई भी अन्य उपयोगकर्ता जो कुंजी फ़ाइल में इस चेक पर नवीनतम मिलते हैं, अब इस बग का अनुभव करने वाले हैं। यदि उन उपयोगकर्ताओं में से कोई भी अपने "फिक्स" में जांच करता है और मैं नवीनतम मिलता हूं, तो मेरी मशीन अब फिर से टूट गई है ... और इसी तरह। Microsoft ने इस पर एक मुसीबत टिकट शुरू किया है और इसे VS2010 टीम और वीएसएस टीम को सौंपा है।
जेसन

2
दिलचस्प। नए CSP में pfx जोड़ते समय मैं उस समस्या में नहीं आया था। मेरी जानकारी के लिए SN -i pfx फाइल को नहीं बदलता है इसलिए आपको बाद में कुछ भी जांचना नहीं चाहिए। हालाँकि, अगर आप पासवर्ड को रीसेट करने जैसी किसी भी तरह से pfx फाइल को बदलना चाहते हैं, तो इससे समस्या पैदा हो जाएगी क्योंकि यह pfx फाइल को बदल देगा। क्या आपका समाधान किसी अन्य मशीन से उस pfx फ़ाइल के साथ बनता है? यदि ऐसा है तो pfx फ़ाइल सही है बस अपनी मशीन पर सही CSP पर सेट न करें जिसमें बिल्ड समस्याएँ हैं।
ब्रैंडन मैनचेस्टर

3
पहले तो मैंने केवल sn -i भाग की कोशिश की लेकिन यह शिकायत की कि पासवर्ड गलत था (हालांकि यह सही था)। मैंने प्रमाण पत्र को हटा दिया, इसे पुनः स्थापित किया और फिर एसआई -आई ... काम किया। मूल रूप से यह पुष्टि करते हुए कि मेरे लिए, दोनों चरणों की आवश्यकता थी। फिर से स्थापना रद्द करें एसएन कमांड निष्पादित करें।
डोड्ग्येर्बिट

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

5
इसने मेरे लिए भी काम किया, हालाँकि मुझे अतीत में ऐसा कभी नहीं करना पड़ा। VS का उपयोग केवल पॉप करने और प्रत्येक कुंजी के लिए पासवर्ड मांगने के लिए किया जाता है। क्या बदल गया?
केविन बेरिज सेप

126

मैंने एक फिक्स खोज की है जो आपको एक बहु डेवलपर वातावरण में सफलतापूर्वक निर्माण करने में सक्षम बनाता है:

पासवर्ड बदलने के बजाय (जो .pfx को बदलने का कारण बनता है), कॉम्बोक्स से .pfx फ़ाइल को फिर से आकार दें। यह तब पासवर्ड संवाद को आमंत्रित करता है। पासवर्ड डालने के बाद प्रोजेक्ट ओके का निर्माण करेगा। प्रत्येक देव वास्तव में .pfx फ़ाइल को संशोधित किए बिना अपने स्थानीय मशीन पर ऐसा कर सकते हैं।

मुझे अभी भी समस्याएँ हैं कि असेंबली बनाने के लिए हमारे बिल्ड सर्वर मशीन पर हस्ताक्षर किए जाएं। मुझे वहां वही त्रुटि मिल रही है, हालांकि sn.exe -i विधि का उपयोग करने से बिल्डर के लिए समस्या ठीक नहीं होती है।


5
हमारे टीएफएस बिल्ड सर्वर पर भी यह काम करने में विफल रहने पर, महसूस किया कि मैं स्वयं के रूप में लॉग इन किया गया था, बिल्ड सेवा खाते के रूप में नहीं, कोई आश्चर्य नहीं कि इसे खोजने में असमर्थ था - दोह!
डैनियल मॉरिट 12

7
इसे उत्तर के रूप में चिह्नित किया जाना चाहिए क्योंकि वर्तमान में जो उत्तर चिह्नित किया गया है वह बहु-डेवलपर वातावरण में काम नहीं करेगा। बहुत बढ़िया।
डैनियल मैकक्विस्टन

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

1
मेरी समस्या यह थी कि बिल्ड सर्वर एक स्थानीय खाते के तहत चल रहा था। मैं विकल्पों में गया और बदल गया, लेकिन यह महसूस नहीं किया कि मैंने इसे गलत स्थान पर बदल दिया है - जिसके कारण मुझे घंटों तक समस्या का सामना करना पड़ा, जब तक कि मैंने इसे फिर से जाँच नहीं किया और अपनी गलती का एहसास नहीं हुआ!
मफिन मैन

3
शानदार धन्यवाद। यह देखने के लिए दुख की बात है कि 2017 में अभी भी एक समाधान है।
बिली जेक ओ'कॉनर

43

मेरे पास एक ही मुद्दा था और स्टोर को हटाना और पढ़ना काम नहीं करता था। मुझे निम्नलिखित करना था।

  • OpenSSL की एक प्रति प्राप्त करें । यह विंडोज के लिए उपलब्ध है । या लिनक्स बॉक्स का उपयोग करें क्योंकि वे सभी बहुत अधिक है।

  • कुंजी फ़ाइल पर निर्यात करने के लिए निम्नलिखित को चलाएँ:

    openssl pkcs12 -in certfile.pfx -out backupcertfile.key
    
    openssl pkcs12 -export -out certfiletosignwith.pfx -keysig -in backupcertfile.key
    

तब प्रोजेक्ट गुणों में आप PFX फ़ाइल का उपयोग कर सकते हैं।


1
धन्यवाद!! मुझे लगता है कि यह मेरे लिए काम कर गया। मैंने यहां ओपनस्ले को
aherrick

मैं वास्तविक प्रमाणपत्र को pfx में शामिल करने के विकल्प को जोड़ना चाहता हूं: Opensl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt -keysig -keyex
Pete

Opensl को एक व्यवस्थापक के रूप में चलाने के लिए सुनिश्चित करें, अन्यथा आपको "यादृच्छिक राज्य लिखने में असमर्थ" त्रुटि मिलेगी: इसके अलावा: मुझे अभी भी ब्रैंडन मैनचेस्टर का जवाब "sn -i ..." चीज से करना है। चीज़।
ली रिचर्डसन


यह एकमात्र समाधान है, जिसने आखिरकार मुझे काम दिया। धन्यवाद!
लदिस्लाव

37

मैंने भी जल्दी ही बोल दिया! पुन: निर्माण त्रुटियों को खेलने में लाया ...

मुझे यह काम मिला - सॉल्यूशन एक्सप्लोरर में राइट क्लिक करें और प्रोजेक्ट से बाहर कर दें। क्लिक करें सभी फ़ाइलें दिखाएं , राइट क्लिक करें और अब फिर से इस परियोजना में शामिल करना होगा। अब पूर्ववत लंबित परिवर्तन ...

किसी कारण के लिए यह मेरे लिए हल किया और अपेक्षाकृत दर्द रहित था!


यह वापस ले लिया, मदद नहीं की। यह एहसास नहीं था कि यह परियोजना सेटिंग्स से pfx हटा दिया है। मैं स्टीफन से जवाब में लगता है कि इस सवाल का जवाब झूठ stackoverflow.com/a/14644793/1735721
DennisWelu

यह उत्तर बहुत अच्छा है। इसने मेरे लिए काम किया, और यह इतना आसान है।
बेन रुबिन

मेरे लिए काम किया (VS2017 15.7.4)। अच्छा और त्वरित समाधान के लिए धन्यवाद।
बैठक अटेंडर

मेरे लिए VS2019 16.1.3 पर काम किया। धन्यवाद!!
जॉर्डनटीडीएन

35

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

  1. sn -d VS_XXXX
  2. sn -i mykey.pfx VS_XXX

1
यह मेरे लिए यह तय! पहले से मौजूद ऑब्जेक्ट के साथ स्वयं द्वारा स्थापित विफल हो रहा था।
एंडी

मैंने भी कोशिश की और यह मदद नहीं की। क्या प्रमाण पत्र में ही कुछ गलत हो सकता है?
टॉम ज़ातो - मोनिका

2
धन्यवाद, हटाने को व्यवस्थापक के रूप में किया जाना चाहिए - यदि नियमित उपयोगकर्ता के रूप में चलाया जाए तो भ्रामक त्रुटि हो जाती है "मजबूत नाम कुंजी कंटेनर नहीं मिला"।
ज्योतिषी

धन्यवाद इसका काम मेरे लिए।
रिकिन पटेल

31

VSCommands 2010 (विजुअल स्टूडियो के लिए प्लगइन) आपके लिए इसे स्वचालित रूप से ठीक कर सकता है - बस त्रुटि पर राइट-क्लिक करें और मेनू से लागू करें फिक्स पर क्लिक करें। आप इसे विजुअल स्टूडियो गैलरी से प्राप्त कर सकते हैं


1
मेरा मानना ​​है कि यह प्रो संस्करण के लिए है - मेरे लाइट संस्करण में यह विकल्प नहीं है
एडम बटलर

2
संस्करण जिसे मैंने अभी डाउनलोड किया है (सितंबर 2011 में) इस विकल्प के साथ आया था।
जिम ने

4
इसके लिए अभी भी एक समर्थक लाइसेंस की आवश्यकता है।
जॉन बेटमैन

27

इन सभी समाधानों (और बहुत कुछ) की कोशिश करने के बाद, मैंने पाया कि समस्या कहीं और है। प्रमाण पत्र खरीदने के बाद मेरे जैसे ही दुख से गुजरने वाले लोगों के लिए, मैं अपनी समस्या का समाधान साझा करूंगा।

व्यवहार

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

कारण

अतीत में मुझे Verisign से प्रमाणपत्र के साथ अनुभव हुआ है। उनके पास KeySpec=2प्रमाणपत्र में एक है - जिसका उपयोग विज़ुअल स्टूडियो में 'साइन' कार्यक्षमता के साथ किया जाता है। ये प्रमाण पत्र Visual Studio और signtool दोनों के लिए ठीक काम करते हैं।

अब मैंने कोमोडो से प्रमाण पत्र खरीदे हैं, जो गलत है KeySpec=1 कोड पर हस्ताक्षर करने के प्रमाणपत्र में है। इसका मतलब है कि ये प्रमाणपत्र साइनटूल (प्रमाणिक) के साथ ठीक काम करते हैं लेकिन मजबूत नामकरण (साइन ड्रॉप-डाउन) के साथ नहीं।

समाधान

इस समस्या को हल करने के दो तरीके हैं:

  1. अपने मजबूत नाम का उपयोग करके एक अलग प्रमाणपत्र बनाएं sn -k [name].snk। एसएनएल का उपयोग करके विधानसभा पर हस्ताक्षर करें और बाद में डीएलएल / ईएक्सई पर हस्ताक्षर करने के लिए अपने कोड हस्ताक्षर प्रमाण पत्र के साथ साइनटूल का उपयोग करें। हालांकि यह अजीब लगता है, जो मैं समझता हूं कि यह प्रमाण पत्र से निपटने का एक सही तरीका है, क्योंकि मजबूत नामों का प्रमाणिकता से अलग उद्देश्य है ( यह कैसे काम करता है, इस पर विवरण के लिए यह लिंक देखें)।
  2. के रूप में अपने प्रमाण पत्र आयात करें KeySpec=2। इसके लिए प्रक्रिया यहां विस्तृत है

क्योंकि मैं कई मजबूत नामों का उपयोग करना चाहता हूं, मैं वर्तमान में विकल्प (1) का उपयोग करता हूं, हालांकि विकल्प (2) भी काम करता है।


यह सुनिश्चित करने के लिए कि यह समाधान भविष्य में कभी खो नहीं जाएगा, यहां समाधान 2 की प्रक्रिया है:

  1. "सर्टिफिकेट्स" का उपयोग करके एमएमसी KeySpec=1एक पीएफएक्स फ़ाइल के लिए मौजूदा कीसेट ( ) का निर्यात करता है । नोट: कृपया इस फ़ाइल को एक सुरक्षित स्थान पर बैकअप करें और परीक्षण करें कि क्या फ़ाइल किसी अन्य मशीन पर ठीक आयात की जा सकती है यदि आप वास्तव में इसे सुरक्षित खेलना चाहते हैं!
  2. क्रिप्टो स्टोर से मौजूदा प्रमाण पत्र को हटा दें (एमएमसी का उपयोग करके स्टाल करें)।
  3. एक CMD शीघ्र खोलें।
  4. इस आदेश का उपयोग करके PFX फ़ाइल आयात करें:
    1. certutil -importPFX -user <pfxfilename> AT_SIGNATURE
    2. संकेत दिए जाने पर pfx के लिए पासफ़्रेज़ दर्ज करें।

अब आपके पास एक कीसेट / प्रमाण पत्र होना चाहिए KeySpec=2। यदि आवश्यक हो तो आप इसे फिर से MMC का उपयोग करके किसी अन्य PFX फ़ाइल में निर्यात कर सकते हैं।


आपका # 2 समाधान केवल एक चीज थी जो मेरे लिए काम करती थी (एक माध्यमिक कमांडलाइन टूल या प्रक्रिया का उपयोग किए बिना) धन्यवाद।
ब्रॉन डेविस

1
हाँ, मुझे सच में समझ नहीं आ रहा है कि यहाँ कुछ समाधानों में इतने वोट क्यों हैं; यह वास्तव में केवल एक चीज है जो मेरे लिए काम करती है, और मुझे पूरा यकीन है कि अधिकांश लोग जो सीएस प्रमाणपत्र खरीदते हैं, उनके पास एक ही मुद्दा होना चाहिए। ओह ठीक है ...
atlaste

1
यह मेरे लिए एकमात्र समाधान है। इसके अलावा, .pfx फ़ाइल में असेंबली पर हस्ताक्षर करने के लिए सर्टिफिकेट चैनिंग जानकारी शामिल नहीं हो सकती है।
शिह-वेन सू

इस तरह के एक विस्तृत निर्देश के लिए धन्यवाद। हर चरण का सटीक वर्णन किया गया है।
दिमित्रि

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

11

विजुअल स्टूडियो 2012 में इस समस्या को हल करने के लिए, मैं प्रोजेक्ट पर क्लिक करता हूं, गुण -> "हस्ताक्षर", और फिर "साइन इन करें क्लिक करें मैनिफ़ेस्ट"।


2
यदि हस्ताक्षर की कोई आवश्यकता नहीं है तो यह एक सही उत्तर है। यह हस्ताक्षरित होने के लिए परियोजना की आवश्यकता को हटा देगा।
टॉम एंडरसन

8

मैंने "एक मजबूत नाम कुंजी फ़ाइल चुनें" ड्रॉप-डाउन बॉक्स में कुंजी (pfx) फ़ाइल को पुनः आकार दिया, फिर "ENTER पासवर्ड" पॉपअप विंडो में पासवर्ड प्रदान किया। मेरी परियोजना को बचाया और पुनर्निर्माण किया। सफल हुआ।

  • प्रोजेक्ट गुण खोलें।
  • साइनिंग सेक्शन पर क्लिक करें।
  • जहां यह कहा जाता है: 'एक मजबूत नाम कुंजी फ़ाइल चुनें:', ड्रॉप-डाउन बॉक्स से वर्तमान मान को फिर से चुनें:

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

  • दृश्य स्टूडियो अब आपको पासवर्ड के लिए संकेत देगा। इसे दर्ज करें।

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

  • अपना प्रोजेक्ट सहेजें और पुनर्निर्माण करें।

  • यदि त्रुटि संदेश मिलता है: "एक टोकन को संदर्भित करने का प्रयास किया गया है जो मौजूद नहीं है" बस इसे अनदेखा करें और नीचे दिए गए चरणों को जारी रखें

  • 'पासवर्ड बदलें' बटन पर क्लिक करें:

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

  • तीनों बॉक्स में मूल पासवर्ड डालें और ओके पर क्लिक करें। यदि आप अपना पासवर्ड बदलना चाहते हैं (या यदि आपका पुराना पासवर्ड जटिलता आवश्यकताओं को पूरा नहीं करता है), तो आप अब ऐसा कर सकते हैं।

  • अपना प्रोजेक्ट सहेजें और पुनर्निर्माण करें।

और जानकारी..


3
यह पूरी त्रुटि ऐसा लगता है कि इसे हल करना पूरी तरह से यादृच्छिक है, लेकिन इस समाधान ने मेरे लिए काम किया। यदि किसी और को यह पृष्ठ नीचे आता है, तो मैं केवल सब कुछ आज़माने का सुझाव दे सकता हूं।
DeusExMachina25

6

वर्कअराउंड के रूप में, मैंने विजुअल स्टूडियो 2010 को एक व्यवस्थापक के रूप में चलाने की कोशिश की, और इसने मेरे लिए काम किया।

आशा है कि ये आपकी मदद करेगा।


इसने किसी कारण से काम करना बंद कर दिया। मुझे विश्वास नहीं हो रहा था कि यह वास्तव में इस मुद्दे को हल कर सकता है। धन्यवाद!!!
गेरहार्ड पॉवेल

4

कनेक्ट बग रिपोर्ट पर चारों ओर काम के मूल लेखक के रूप में, इस संदेश के दो वेरिएंट हैं (मैंने बाद में खोजा है)

एक संस्करण के लिए आप sn.exe का उपयोग करते हैं (आमतौर पर यदि आप मजबूत नामकरण कर रहे हैं) मजबूत नामकरण स्टोर की कुंजी आयात करने के लिए।

दूसरा संस्करण जिसके लिए आप आयात करने के लिए सर्टिफिकेट का उपयोग करते हैं, जब आप क्लिक-वन्स तैनाती जैसी चीजों के लिए कोडिंग कर रहे हैं (ध्यान दें कि आप दोनों उद्देश्यों के लिए एक ही प्रमाण पत्र का उपयोग कर सकते हैं)।

उम्मीद है की यह मदद करेगा।


हाँ, हमने कोशिश की कि Microsoft समर्थन के साथ भी एक हो, और यह कोड हस्ताक्षर आयात करने का तरीका है। समस्या वास्तव में यह प्रतीत होती है कि सर्टिफिकेट पासवर्ड चेकिन प्रोसेस सोर्स के दौरान खो जाता है। लेकिन यह वास्तविक समस्या नहीं लगती है। ऐसा लगता है कि यदि आप Widnows 7 मशीन # 1 पर प्रमाण पत्र विवरण दर्ज करते हैं, और फिर उस सटीक फ़ाइल को एक अलग मशीन में स्थानांतरित करते हैं और इसे पंजीकृत करते हैं, तो पंजीकरण काम करेगा, लेकिन निर्माण विफल हो जाएगा। Microsoft अभी भी हमारे लिए देख रहे हैं। अभी के लिए हमें कोड साइनिंग को अक्षम करना था और रिलीज के दौरान मैन्युअल रूप से साइन इन करना था।
जेसन

3

मेरे लिए कुछ भी काम नहीं किया, लेकिन फिर मैंने जाकर सर्टिफिकेट मैनेजर (mmc.exe) को देखा। प्रमाण पत्र व्यक्तिगत स्टोर में आयात नहीं किया गया था, इसलिए मैंने इसे मैन्युअल रूप से आयात किया और फिर परियोजना को संकलित किया।

दृश्य स्टूडियो प्रोजेक्ट डिज़ाइनर के साइनिंग पृष्ठ, साइनिंग असेंबली का उपयोग करके क्लिकऑन मैनिफेस्ट साइनिंग और सशक्त-नाम असेंबली साइनिंग देखें ।


इसने SN.exe -i फ़िक्स करने के बाद मेरे लिए इस समस्या को हल किया।
कोडिंगसुराई

2

एक कॉम्बोक्स और पासवर्ड दर्ज करने में कुंजी फ़ाइल का चयन करना हमारे लिए इस पर मदद करता है।

लेकिन हर बार कुंजी फ़ाइल को बदलने की आवश्यकता होती है और यह ठीक नहीं लगता है।


2

मुझे अपने विंडोज इंस्टॉलेशन को SSD में ले जाने के बाद भी यही समस्या थी । अन्य किसी भी समाधान ने मेरे लिए काम नहीं किया।

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


2

मेरी समस्या यह थी कि TFS बिल्ड कंट्रोलर एक नेटवर्क सेवा के रूप में चल रहा था और किसी कारण से मुझे समझ नहीं आया कि Visual Studio Build Host सेवा प्रमाणपत्रों का उपयोग क्यों नहीं किया जा रहा था। मैंने विजुअल स्टूडियो बिल्ड सेवा की पहचान को कुछ अधिक प्रबंधनीय के रूप में बदल दिया, यह सुनिश्चित किया कि इसमें TFS सर्वर पर अधिकार थे, और मैन्युअल रूप से MMC का उपयोग करके प्रमाण पत्र जोड़े।

समस्या यह भी थी कि MSBuild स्टोर में पासवर्ड संरक्षित प्रमाणपत्र नहीं जोड़ सकता है।


आपको इसे किस दुकान में जोड़ना है ??
felickz

मैंने भी ऐसा ही किया (और इस उपयोगकर्ता में व्यक्तिगत / विश्वसनीय रूट / ट्रस्टेड पब .. जिसमें निश्चित रूप से इसे ठीक कर दिया गया था) में सीरट्स डाले और अगली टीएफएस त्रुटि पर आगे बढ़ने में सक्षम था, जो कि मेरे पास कार्यक्षेत्र था, इसलिए इसे ठीक करने के लिए नए बिल्ड एजेंट को निकालने और जोड़ने के लिए।
felickz

2

मेरे पास एक समान मुद्दा था, लेकिन "मजबूत नाम कुंजी फ़ाइल" कॉम्बोबॉक्स में pfx का चयन करने और पासवर्ड टाइप करने के बाद भी मुझे एक समान त्रुटि मिली (कंटेनर नाम भाग के बिना):

निम्नलिखित कुंजी फ़ाइल आयात नहीं कर सकता: companyname.pfx। कुंजी फ़ाइल पासवर्ड संरक्षित हो सकती है। इसे ठीक करने के लिए, प्रमाणपत्र को फिर से आयात करने का प्रयास करें या मैन्युअल रूप से प्रमाणपत्र स्थापित करें

इसके अलावा, "साइन इन करें ClickOnce मैनिफ़ेस्ट" प्रमाणपत्र जानकारी पैनल आबाद नहीं था।

मैंने अपने pfx पर "फ़ाइल से चयन ..." किया, और इसने समस्या को हल कर दिया।


1

यहाँ वर्णित सभी तरीकों ने मेरी मदद नहीं की। लेकिन जब मैंने अपने प्रोजेक्ट से * .pfx फाइल को डिलीट किया और इसे फिर से असेंबली के साइनिंग में जोड़ा, तो मैंने बिना किसी त्रुटि के अपना प्रोजेक्ट बनाया! मैं कारण नहीं बता सकता। लेकिन इसने मेरे लिए काम किया।


1

ठीक है, यह मेरे लिए काम किया। Visual Studio 2010 में एक व्यवस्थापक के रूप में पुराना समाधान / प्रोजेक्ट खोलें और नया या प्रतिलिपि किया गया समाधान / प्रोजेक्ट खोलें। एक व्यवस्थापक के रूप में, नए Visual Studio 2010 समाधान / प्रोजेक्ट में प्रतिलिपि की गई pfk फ़ाइल को निकालें और प्रोजेक्ट गुणों पर जाएँ और इसे अचयनित करें।

दोनों परियोजनाओं के खुलने के साथ, पेस्ट को नए पर कॉपी करें। प्रोजेक्ट प्रॉपर्टीज पर जाएं और बिल्ड चुनें। मैंने विज़ुअल स्टूडियो को खोला और बंद किया और नए प्रोजेक्ट से हटाने के बाद इसे पुराने प्रोजेक्ट से कॉपी करने और चयन करने से पहले बनाया। मुझे इस पोस्ट की शुरुआत में त्रुटि तब मिली जब मैंने प्रोजेक्ट की प्रतिलिपि बनाई और इसे बनाने की कोशिश की।


1

मेरे परिदृश्य में बिल्ड सेवा उसी उपयोगकर्ता खाते का उपयोग नहीं कर रही थी जिसे मैंने उपयोग करने के साथ कुंजी आयात की थी sn.exe

खाते को मेरे व्यवस्थापक खाते में बदलने के बाद, सब कुछ ठीक काम कर रहा है।


मुझे एक ही समस्या हो रही थी, आपकी टिप्पणी को पढ़ने से मुझे इस तथ्य की ओर इशारा हुआ कि मैंने विंडोज़ 7 से विंडोज़ 10 में अपग्रेड किया था और अब वीएस को एडमिन के रूप में चलाने की आवश्यकता थी। तो वीएस को व्यवस्थापक के रूप में चलाया और कोई समस्या नहीं है .. सूचक के लिए
धन्यवाद

1

इसने मेरी समस्या का समाधान किया: अपनी वीएस परियोजना खोलें

Package.appxmanifest पर डबल क्लिक करें

पैकेजिंग टैब पर जाएं

प्रमाणपत्र चुनें पर क्लिक करें

कॉन्फ़िगर प्रमाण पत्र पर क्लिक करें

फ़ाइल से चयन करें और example.pfx का उपयोग करें जो एकता या कुछ और बनाया गया हो


0

मैंने Visual Studio प्रोजेक्ट की .csproj फ़ाइल में निम्न पंक्ति बदलकर इस समस्या को अपने लिए हल कर लिया है:

यह 'आयात नहीं कर सकता' त्रुटि को फेंक दिया:

<PropertyGroup>
<SignManifests>true</SignManifests>
</PropertyGroup>

मान को गलत में बदलने से त्रुटि दूर हो जाती है।


7
आमतौर पर विधानसभाओं को उद्देश्य के लिए हस्ताक्षरित किया जाता है, और SignManifests को हटाने से कुछ वातावरणों में तैनाती में परेशानी होती है। तो यह एक समस्या का हल नहीं है
Georgy Smirnov

0

मुझे भी यही त्रुटि मिली। मेरे मामले में, मैंने उपरोक्त सभी की कोशिश की, लेकिन मुझे इसका परिणाम नहीं मिला।

मुझे अंततः एहसास हुआ कि मेरे मामले में, त्रुटि का कारण यह था कि प्रमाणपत्र पासवर्ड दर्ज नहीं किया गया था या गलत तरीके से दर्ज किया गया था। जब मैं पासवर्ड को डायनामिक रूप से सही ढंग से दर्ज करता हूं तो त्रुटि गायब हो जाती है। सफल


0

दुर्भाग्य से, यहां वर्णित किसी भी दृष्टिकोण ने मेरे लिए काम नहीं किया। मुझे एक डॉकटर कंटेनर में युगल पीएफएक्स को पंजीकृत करना होगा और मुझे कमांड लाइन के माध्यम से पासवर्ड पास करना होगा।

इसलिए मैंने RSsn.exe -i <infile> <container> # C के साथ RSACryptoServiceProvider का उपयोग करके कमांड को फिर से विकसित किया । SnInstallPfx प्रोजेक्ट में स्रोत और ऐप GitHub पर हैं ।

SnInstallPfx अनुप्रयोग एक PFX कुंजी और उसका पासवर्ड स्वीकार करता है। यह मुख्य कंटेनर नाम (VS_KEY_ *) को स्वचालित रूप से (MSBuild स्रोत कोड से उधार लिया गया है) और इसे मजबूत नाम CSP में स्थापित करता है।

उपयोग:

SnInstallPfx.exe <pfx_infile> <pfx_password>
// or pass a container name if the default is not what you need (e.g. C++)
SnInstallPfx.exe <pfx_infile> <pfx_password> <container_name>

0

किसके लिए GitLab धावकों का उपयोग कर रहा है:

  • धावक को उस खाते से चलाना सुनिश्चित करें जिसे आप लॉगऑन कर सकते हैं: ./gitlab-runner.exe install --user ".\ENTER-YOUR-USERNAME" --password "ENTER-YOUR-PASSWORD"(मुझे पहले रोकना और अनइंस्टॉल करना था)
  • सेवा के रूप में लॉगिन करने के लिए बिल्ड उपयोगकर्ता की अनुमति देने के लिए इस मार्गदर्शिका का पालन करें
  • ऐसे निर्माण उपयोगकर्ता के साथ लॉगऑन करें
  • अन्य उत्तरों में सुझाए गए कमांड का उपयोग करें: sn -i certificate.pfx VS_KEY_C***6

GitLab (msbuild आउटपुट) पर विफल जॉब आउटपुट में कंटेनर का नाम सुझाया गया है यहां छवि विवरण दर्ज करें

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