2009-12-13 12 views
5

क्लाइंट साइड सर्टिफिकेट की स्थापना पर, मुझे अपवाद मिल रहा है "ऑब्जेक्ट में केवल एक प्रमुख जोड़ी का आधा हिस्सा है। एक निजी कुंजी भी प्रदान की जानी चाहिए"। मेरा आवेदन एक वीसी # .NET अनुप्रयोग है जो एक एएसपी.NET मंच पर चल रहा है। एप्लिकेशन एसओएपी अनुरोध करने में प्रमाण पत्र आयात करने के लिए डब्लूएसई 2.0 का भी उपयोग करता है।ऑब्जेक्ट में केवल एक प्रमुख जोड़ी का सार्वजनिक आधा है

शोध पर, मुझे पता चला है कि यह अपवाद सिस्टम प्रकार है। सुरक्षा। क्रिप्टोग्राफी। क्रिप्टोग्राफिक अपवाद।

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

उत्तर

12

मुझे हाल ही में एक ही समस्या थी। मुझे one explanation here मिला जो मेरे लिए काम करता था। विशेष रूप से, निजी कुंजी के लिए अनुमतियाँ। पूरी जानकारी नीचे कॉपी की गई है।

  1. आप इस प्रमाणपत्र के लिए एक निजी कुंजी है:

    जानने के कुछ चीजें हैं जो मैं पहली बार में लगेगा कर रहे हैं?

  2. क्या आपने निजी कुंजी तक पहुंचने के लिए आवेदन के लिए अनुमति दी है?

आप Windows प्रमाणपत्र स्टोर के माध्यम से प्रमाण पत्र देखने से एक निजी कुंजी है कि क्या आप स्थापित कर सकते हैं। यह करने के लिए प्राप्त करने के लिए, निम्न चरणों का पालन करें:

  1. Windows प्रारंभ मेनू से, भागो का चयन करें।
  2. ओपन में फ़ील्ड टाइप करें: फ़ील्ड। ठीक है
  3. फ़ाइल मेनू से "स्नैप-इन जोड़ें/निकालें" पर क्लिक करें।
  4. जोड़ें बटन पर क्लिक करें।
  5. उपलब्ध स्टैंडअलोन स्नैप-इन की सूची से "प्रमाणपत्र" का चयन करें। जोड़ें बटन पर क्लिक करें।
  6. "कंप्यूटर खाता" चुनें। अगला पर क्लिक करें।
  7. "स्थानीय कंप्यूटर" का चयन करें। समाप्त क्लिक करें।
  8. बंद करें पर क्लिक करें।
  9. ठीक क्लिक करें।
    1. कंसोल रूट के तहत प्रमाणपत्र नोड का विस्तार करें और व्यक्तिगत स्टोर खोलें।
    2. आप जिस प्रमाणपत्र का उपयोग कर रहे हैं उसे डबल-क्लिक करें। यदि आपके पास निजी कुंजी है, तो संवाद नीचे दिए गए संदेश पर संदेश प्रदर्शित करेगा जो कहता है "आपके पास निजी कुंजी है जो इस प्रमाणपत्र से मेल खाती है"।

आप एक निजी कुंजी है, तो है कि आपके आवेदन की अनुमति है कुंजी का उपयोग करने की सुनिश्चित:

  1. खुला Windows Explorer।
  2. सी: \ दस्तावेज़ और सेटिंग्स \ सभी उपयोगकर्ता \ अनुप्रयोग डेटा \ Microsoft \ Crypto \ RSA \ MachineKeys फ़ोल्डर पर नेविगेट करें।
  3. उन कुंजियों वाली फ़ाइलों का चयन करें जिन्हें WSE को पुनर्प्राप्त करने की आवश्यकता होगी।
  4. फ़ाइल मेनू से, गुण चुनें।
  5. सुरक्षा टैब पर, एएसपीएनईटी खाता जोड़ें और वें ई पूर्ण नियंत्रण विकल्प का चयन करें।
  6. नोट्स: 1. मशीनकेज़ फ़ोल्डर में कौन सी कुंजी फ़ाइल प्रमाण पत्र से जुड़ी है मुश्किल हो सकती है। नया प्रमाणपत्र बनाने पर निर्माण दिनांक और समय नोट करना एक आसान तरीका है। जब आप मशीनकेज़ निर्देशिका में फ़ाइलों को देखते हैं, तो संबंधित दिनांक और समय के लिए तिथि संशोधित फ़ील्ड देखें। 2. यदि आपने एएसपीएनईटी की तुलना में अलग-अलग खाते के तहत चलाने के लिए अपने सिस्टम को कॉन्फ़िगर किया है, तो का उपयोग उस खाते का उपयोग करें जब प्रमाण पत्र तक पहुंचने की अनुमति दें।
+1

धन्यवाद। इससे मदद मिली। (मेरे पास एक निजी कुंजी थी, लेकिन मेरे ऐप तक इसका उपयोग नहीं था)। – KKP

+0

यह जानकारी कैसे जांचें कि कौन सी मशीन कुंजी प्रमाणपत्र से मेल खाती है: http://serverfault.com/a/642279/401044 – jtate

0

एक ही अपवाद का सामना करने के बाद: System.Security.Cryptography.CryptographicException, वस्तु एक कुंजी युग्म के ही सार्वजनिक आधा होता है, मैं एक विकल्प है, लेकिन कम इष्टतम समाधान प्रूफ।

स्थिति: सर्टिफिकेट/कुंजी लुकअप विजुअल स्टूडियो आईआईएस एक्सप्रेस के अंदर बहुत अच्छा काम करता है, लेकिन जब वेब एप्लिकेशन उचित आईआईएस सेवा के तहत चल रहा था, तो मुझे हमेशा 'मुख्य जोड़ी का केवल सार्वजनिक आधा' अपवाद मिलता है।

मैंने फाइल सिस्टम पर निजी कुंजी अनुभाग का पता लगाने के लिए WSE3 प्रमाणपत्र टूल का उपयोग किया और उपर्युक्त उत्तर के अनुसार एएसपी उपयोगकर्ता अनुमतियों को देने के लिए उपयोगकर्ता अनुमति सेटिंग्स को समायोजित करने के लिए लंबाई की कोशिश की।

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

अंतिम स्थान मैंने प्रमाणपत्र स्थापित किया था "स्थानीय कंप्यूटर/विश्वसनीय लोग"।

WSE3 CustomPolicyAssertion, सी # नेट का उपयोग:

clientToken = X509TokenProvider.CreateToken(StoreLocation.LocalMachine, 
    StoreName.TrustedPeople, "soap.partnersite.com", X509FindType.FindBySubjectName); 

अनुप्रयोग पूल पहचान अद्यतन करने के बाद, कोई निजी कुंजी फ़ाइल ओवरराइड आवश्यक जब अनुप्रयोग पूल मालिक बदलते थे।