2010-10-04 11 views
30

हम (हमारे आईटी पार्टनर वास्तव में) ने हाल ही में एक वेब खेती साइट के लिए कुछ DNS बदल दिए हैं, ताकि दोनों उत्पादन सर्वर के बीच राउंड-रॉबिन DNS स्विचिंग हो। इस स्विच से पहले हमें वास्तव में WebResource.axd फ़ाइलों के साथ समस्या नहीं थी।वेब-फार्म साइट्स पर web.config पर मशीन को जोड़ना

CryptographicException

Padding is invalid and cannot be removed.

जब हम विशिष्ट सर्वर स्वयं मारा, वे ठीक लोड: स्विच के बाद से, जब हम लाइव सार्वजनिक URL मारा है, हम कोई त्रुटि मिलती है। मैंने इस मुद्दे पर शोध किया है और ऐसा लगता है क्योंकि वे दो सर्वरों के बीच संपत्ति साझा कर रहे हैं, इसलिए हमें प्रत्येक सर्वर के लिए web.config में लगातार machineKey होना चाहिए ताकि वे दोनों के बीच लगातार एन्क्रिप्ट और डिक्रिप्ट कर सकें। मेरे प्रश्न हैं:

  1. क्या मैं सर्वर पर किसी उपकरण के माध्यम से machineKey उत्पन्न कर सकता हूं, या क्या मुझे ऐसा करने के लिए कोड लिखने की आवश्यकता है?
  2. क्या मुझे बस प्रत्येक सर्वर पर web.config पर machineKey जोड़ने की आवश्यकता है या आपको लगता है कि मुझे दो सर्वर एक साथ काम करने के लिए कुछ और करने की आवश्यकता होगी? (दोनों web.config की वर्तमान में नहीं है एक machineKey)
+0

देखा जा सकता है पर http://serverfault.com/ – TimS

+2

@TimS पोस्ट करने का प्रयास - ठीक। मैंने बस .NET के साथ web.config के SO b/c को लगाया लेकिन मैं उचित रूप से माइग्रेट करने जा रहा हूं। धन्यवाद। –

+0

एनपी, बस वहां अधिक प्रतिक्रिया मिल सकती है। – TimS

उत्तर

37

यह उत्तर देना चाहिए:

How To: Configure MachineKey in ASP.NET 2.0 - Web Farm Deployment Considerations

संक्षेप में, मशीन कुंजी स्थापित करने के लिए नीचे दिए गए लिंक देखें: Setting Up a Machine Key - Orchard Documentation

और web.config फ़ाइल में में system.web टैग के तहत निम्न पंक्ति जोड़ें, यदि यह मौजूद नहीं है।

<machineKey 
    validationKey="21F0SAMPLEKEY9C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7 
        AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B"   
    decryptionKey="ABAASAMPLEKEY56D75D217CECFFB9628809BDB8BF91CFCD64568A145BE59719F" 
    validation="SHA1" 
    decryption="AES" 
/> 

सुनिश्चित करें कि आप मशीन चाबियों का एक स्थायी बैकअप और

+0

यदि यह काम नहीं करता है, तो कृपया उपरोक्त पंक्ति से 'सत्यापन = "SHA1" डिक्रिप्शन = "एईएस" हटाएं, फिर यह ठीक काम करता है। – John

6

padding oracle asp.net vulnerability कि बस हो गया से जानने के लिए सुनिश्चित करें कि web.config फ़ाइल है कि (आप पैच सही आवेदन किया,? ...) और protected sections to encrypt the machine key और किसी अन्य संवेदनशील कॉन्फ़िगरेशन का उपयोग करें।

एक वैकल्पिक विकल्प यह है कि इसे मशीन स्तर web.config में सेट करना है, इसलिए यह वेब साइट फ़ोल्डर में भी नहीं है।

इसे उत्पन्न करने के लिए इसे डेविड के उत्तर में लिंक किए गए आलेख की तरह ही करें।

+0

@ मार्क मदद करने के लिए खुश हैं, ऊपर की ओर;) – eglasius

13

यदि आप आईआईएस 7.5 का उपयोग कर रहे हैं या बाद में आप आईआईएस से मशीन कुंजी जेनरेट कर सकते हैं और इसे सीधे अपने वेब.कॉन्फिग में सहेज सकते हैं, तो वेब फार्म के भीतर आप बस प्रत्येक वेब पर नया web.config कॉपी करें।

  1. ओपन आईआईएस प्रबंधक।
  2. यदि आपको अपने सभी अनुप्रयोगों के लिए मशीनकी को उत्पन्न और सहेजने की आवश्यकता है, तो बाएं फलक में सर्वर का नाम चुनें, उस स्थिति में आप रूट web.config फ़ाइल (जिसे .NET फ्रेमवर्क फ़ोल्डर में रखा गया है) को संशोधित किया जाएगा। यदि आपका इरादा किसी विशेष वेबसाइट/एप्लिकेशन के लिए मशीनकी बनाना है तो बाएं फलक से वेब साइट/एप्लिकेशन का चयन करें। उस स्थिति में आप अपने आवेदन की web.config फ़ाइल को संशोधित कर देंगे।
  3. मध्य फलक में एएसपी.NET सेटिंग्स में मशीन कुंजी आइकन पर डबल-क्लिक करें:
  4. मशीनकी अनुभाग आपकी कॉन्फ़िगरेशन फ़ाइल से पढ़ा जाएगा और यूआई में दिखाया जाएगा।यदि आपने एक विशिष्ट मशीनकी कॉन्फ़िगर नहीं किया है और यह स्वचालित रूप से जेनरेट किया गया है तो आपको निम्न विकल्प दिखाई देंगे:
  5. अब आप यादृच्छिक MachineKeys उत्पन्न करने के लिए दाएं फलक पर जेनरेट कीज़ पर क्लिक कर सकते हैं। जब आप आवेदन पर क्लिक करते हैं, तो सभी सेटिंग्स web.config फ़ाइल में सहेजी जाएंगी।

पूर्ण विवरण @Easiest way to generate MachineKey – Tips and tricks: ASP.NET, IIS and .NET development…

संबंधित मुद्दे