2010-11-23 15 views
5

का उपयोग कर app.config वर्गों के डिक्रिप्शन हमारे कार्यक्रम की स्थापना के दौरान हम app.config के वर्गों encrpyt के लिए इस विधि चलाएँ:
एन्क्रिप्शन/RsaProtectedConfigurationProvider

// Get the application configuration file. 
Configuration config = 
     ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 

// Define the Rsa provider name. 
const string provider = "RsaProtectedConfigurationProvider"; 

// Get the section to protect. 
ConfigurationSection connStrings = config.ConnectionStrings; 

if (connStrings != null) 
{ 
    if (!connStrings.SectionInformation.IsProtected) 
    { 
     if (!connStrings.ElementInformation.IsLocked) 
     { 
      // Protect the section. 
      connStrings.SectionInformation.ProtectSection(provider); 

      connStrings.SectionInformation.ForceSave = true; 
      config.Save(ConfigurationSaveMode.Full); 
     } 
    } 
} 

अब तक ठीक काम करता है। लेकिन अगर मैं इस कार्यक्रम चलाने के लिए, हम कई मशीनों की मुठभेड़ निम्न त्रुटि "प्रदाता 'RsaProtectedConfigurationProvider' प्रदाता से त्रुटि संदेश का उपयोग कर डिक्रिप्ट करने में असफल:। RSA कुंजी कंटेनर खोला नहीं जा सका"।

बेशक मैं खोज की है और this help पाया है, लेकिन यह काम नहीं करता। कोई विचार?

+1

असफल मशीनों पर ओएस क्या है? शायद यह यूएसी + ऊंचाई समस्या हो सकती है। उन मशीनों के बारे में कोई भी जानकारी अच्छी होगी। –

+0

शायद जाने के लिए एक अच्छी दिशा है। वर्तमान में विस्टा, डब्ल्यू 7 और सर्वर 2008 ज्ञात हैं। – Jan

उत्तर

2

हां।

कारण उन मशीनों में RsaProtectedConfigurationProvider सेटअप machine.config में सेटअप है। जो काम नहीं कर रहे हैं, उनके पास नहीं है - मैन्युअल रूप से उन मशीनों के लिए इसे मैन्युअल रूप से जोड़ें

मुझे लगता है कि aspnet_regiis.exe चरणों में से एक है। मैं कल्पना नहीं कर सकता कि आप इसे सभी क्लाइंट मशीनों पर चलाना चाहते हैं।

अद्यतन

ठीक है, मैं अपने प्रश्न में बोल्ड में त्रुटि का मुख्य हिस्सा बना दिया है - आप इसे एक अलग मुद्दा है सही कर रहे हैं। यह सुरक्षा समस्या है। यदि आप स्थान सी: \ दस्तावेज़ और सेटिंग्स \ सभी उपयोगकर्ता \ अनुप्रयोग डेटा \ Microsoft \ Crypto \ RSA \ MachineKeys या सी: \ ProgramData \ Microsoft \ Crypto \ RSA \ MachineKeys ऑपरेटिंग सिस्टम के आधार पर देखते हैं, तो आप देखते हैं कई फाइलें आपकी प्रक्रिया में फ़ोल्डर तक पहुंच है, इसलिए केवल एप्लिकेशन की पहचान या किसी विशेष फ़ाइल के लिए फ़ाइलों को पूरे फ़ोल्डर तक पहुंच प्रदान करें (टाइमस्टैम्प आपको बताएगा कि आपने इसे बनाया है)।

+0

नहीं। मैंने इसे एक मशीन पर चेक किया जो क्रैश हो रहा था - machine.config में संरक्षित कॉन्फ़िगरेशनप्रोवाइडर था। – Jan

+0

असंभव, बिल्कुल सही नाम के साथ नहीं। नाम जांचें और सुनिश्चित करें कि यह वही नाम है। – Aliostad

+0

इसे दो बार जांच लिया - निश्चित रूप से वही खंड और यहां तक ​​कि सामग्री समान है। – Jan

3

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

आदेश मुझे इस समस्या के समाधान पाने के लिए में, मैं प्रशासक ("प्रशासक के रूप में रन") के रूप में दृश्य स्टूडियो चलाने के लिए किया था।

मैं अपने web.config की धारा एन्क्रिप्ट करने के लिए aspnet_regiis.exe भागने की कोशिश कर के साथ एक ही मुद्दा था। अगर मैंने कमांडलाइन/कंसोल "प्रशासक के रूप में" नहीं चलाया तो मुझे कमांडलाइन त्रुटि मिलेगी जो कि और भी गूढ़ थी: "ऑब्जेक्ट पहले से मौजूद है।"

0

मैं एक app.config उस पर एक विंडोज सर्वर SQL सर्वर के रूप में स्थापित चल रहा था पर यह मिल गया। आईआईएस स्थापित नहीं था। मशीन.कॉन्फिग फ़ाइल को RSAProtectedConfigurationProvider को डिफ़ॉल्ट के रूप में सूचीबद्ध किया गया है, लेकिन जब हमने फ़ोल्डर्स के ऊपर अलीस्टैड द्वारा उल्लिखित दो फ़ोल्डरों को देखा तो खाली थे। कोई कुंजी इंस्टॉल नहीं थीं। हमने कस्टम कुंजी बनाने के लिए aspnet_regiis टूल का उपयोग किया था। तब हमने बैच नौकरी के तहत चलने वाली पहचान तक पहुंच प्रदान करने के लिए इसका इस्तेमाल किया। यह सब cmd.exe और aspnet_regiis व्यवस्थापक के रूप में चल रहा था।