2010-05-28 7 views
7

एसएसएल कनेक्शन में उपयोग करने के लिए मैं सिफर सुइट कैसे निर्दिष्ट कर सकता हूं?.NET में किसी SSL कनेक्शन के लिए एक सिफर निर्दिष्ट कैसे करें?

मुझे पता है कि Mentalis Seclib को यह सुविधा मिली है, हालांकि वे परियोजना को बनाए रखते हैं (और उस लाइब्रेरी में x64 ओएस के साथ समस्याएं हैं) क्योंकि वे कहते हैं कि .NET Framework 2.0 ने उन सुविधाओं को पेश किया, हालांकि मुझे कोई रास्ता नहीं मिला .NET Framework 3.5 में ऐसा करने के लिए।

अधिक विशिष्ट मैं शून्य सिफर का उपयोग करके एक HTTPS सेवा कनेक्ट करना चाहते हैं तो मुझे खुद के लिए निम्न आदेश का उपयोग करके OpenSSL के साथ एक ही बात करना होगा:

openssl s_client -connect www.example.com:443 -cipher NULL 

मैं कैसे .NET में ऐसा कर सकते हैं?

वाणिज्यिक या वाणिज्यिक अनुकूल लाइसेंस प्राप्त लाइब्रेरी सुझावों का भी स्वागत है।

उत्तर

6

(मेरे पिछले जवाब बीमार बताया गया, मैं पहली बार है कि संपत्ति मैं करने के लिए किया गया था केवल पढ़ने के लिए बात कर रहे थे पर नोटिस नहीं।)

नेट 4 में, System.Net.Security.SslStream वर्ग, एक नया निर्माता का समर्थन करता है की अनुमति देता है आप EncryptionPolicy मान प्रदान करने के लिए, जो NoEncryption हो सकता है। यह कोई एन्क्रिप्शन की अनुमति नहीं देता है और अनुरोध करता है कि एक अन्य सिफर का उपयोग किया जाए यदि दूसरा एंडपॉइंट एक पूर्ण सिफर को संभाल सकता है।

दुर्भाग्य से यह 3.5 में भी मौजूद नहीं था।


नहीं वास्तव में सवाल का हिस्सा है, लेकिन मुझे लगता है (और यह वास्तव में भविष्य पाठकों के लिए है) है कि आप एक शून्य सिफर साथ SSL का उपयोग कर के, प्रासंगिक जोखिम के बारे में पता के पाठ्यक्रम कर रहे हैं? और, जिन लाभों को आप याद करते हैं?

0

प्रलेखन के आधार पर, आप जब palgSupportedAlgs, dwMinimumCipherStrength, और SCHANNEL_CRED struct के dwMaximumCipherStrength मानकों के माध्यम से SChannel का उपयोग कर सिफर सेट कर सकते हैं।

नल एन्क्रिप्शन एल्गोरिदम सक्षम करने के लिए, आपको dwMinimumCipherStrength से -1 सेट करना चाहिए।

CAVEAT: यह केवल प्रलेखन पर आधारित है। मैं .NET डेवलपर नहीं हूं, लेकिन मैं इस प्रश्न का उत्तर ढूंढ रहा हूं क्योंकि मैं ऐसी सेवा का समर्थन करता हूं जिसमें .NET क्लाइंट हैं।

+0

कोई विचार है कि .NET या किसी भी .NET wrapper में SCHANNEL का उपयोग कैसे करें? –

+0

.NET 3.5 के लिए, मैं नहीं करता हूं। .NET 4 ने एक एन्क्रिप्शन पॉलिसी एनम पेश किया जो आपको HTTPS कनेक्शन के लिए NULL सिफर के उपयोग की अनुमति देने या आवश्यकता के लिए HttpWebRequest को कॉन्फ़िगर करने की अनुमति देता है। मैंने उस जानकारी को अपने .NET क्लाइंट को भेजा, और उसने पुष्टि की है कि यह काम करता है। यदि यह आपके लिए उपयोगी है, तो मैं इसे लिखने के लिए लिख सकता हूं। – Matthieu

+0

यह दिलचस्प लगता है कि क्या आप मुझे एक लेख इंगित करना चाहते हैं या मुझे कोड स्निपेट फेंकना चाहते हैं? –

0

.NET में, आप SSLStream क्लास का उपयोग कर सकते हैं। .NET 4.0 में, जैसा मैथ्यूयू ऊपर बताता है, यह आपको सिफर निर्दिष्ट करने की अनुमति देता है।

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