2015-09-04 9 views
9

मेरा प्रोग्राम SSL कनेक्शन के लिए SHA-1 प्रमाणपत्र का उपयोग करता है। SHA-2 प्रमाणपत्र का उपयोग अब कुछ वेब सेवाओं (जीमेल) द्वारा व्यापक रूप से किया जा रहा है। यह ईमेल अधिसूचना सेटअप के दौरान एसएमटीपी सर्वर के आने वाले कनेक्शन को अवरुद्ध करने का कारण बनता है।SHA-1 के बजाय SHA-2 का उपयोग करने के बीच कैसे स्विच करें?

मैं इस

using (var smtpClient = new SmtpClient(serverSettings.SmtpServerName, (int)serverSettings.SmtpPort)) 
{ 
    smtpClient.EnableSsl = serverSettings.SmtpUseSsl; 
    smtpClient.UseDefaultCredentials = false; 

    if (!string.IsNullOrEmpty(serverSettings.UserName) || !string.IsNullOrEmpty(serverSettings.EncryptedPassword)) 
    { 
      smtpClient.Credentials = new NetworkCredential(serverSettings.UserName, serverSettings.EncryptedPassword); 
    } 
       ... 
     smtpClient.Send(message); 
} 

तरह SmtpClient का उपयोग मैं इस कोड का उपयोग करके एक ईमेल नहीं भेज सकते हैं और मैं अपने जीमेल खाते में "कम सुरक्षित ऐप्स" अनुमति देने के लिए नहीं करना चाहते हैं ईमेल भेजने के लिए।

ईमेल अधिसूचनाओं के लिए SHA-2 प्रमाणपत्र को कार्यान्वित या स्विच करने के लिए कैसे करें?

+0

मुझे लगता है कि आपको उस सर्वर पर शा अपडेट करना होगा जिस पर आप अपना कोड होस्ट कर रहे हैं। हाल ही में अमेज़ॅन भी शा -1 से शा -256 तक अपग्रेड किया गया। मैंने अमेज़ॅन के दस्तावेज़ीकरण की जांच की लेकिन मुझे डर है कि उनके पास आवेदन करने के लिए सी # के लिए नमूना कोड नहीं है यदि आपका एप्लिकेशन/सर्वर शा -256 का समर्थन करता है या नहीं। हो सकता है कि आप सर्वर अधिकारियों से संपर्क कर सकें। – razorranjan

उत्तर

9

SHA-1 बनाम SHA-2 आपके पास होने वाली समस्या से पूरी तरह से असंबंधित है। Google के लिए "कम सुरक्षित ऐप्स" पर विचार किया जाता है जो प्रमाणीकरण के लिए OAuth 2.0 का उपयोग नहीं करता है (जो 2-कारक प्रमाणीकरण की अनुमति देगा) बल्कि इसके बजाय केवल एक साधारण पासवर्ड। अधिक जानकारी के लिए New Security Measures Will Affect Older (non-OAuth 2.0) Applications देखें।

साथ सी # OAuth 2.0 का उपयोग कर के लिए SMTP and OAuth 2

+0

उत्कृष्ट जवाब। मैं जोड़ूंगा कि एकमात्र कारण "कम सुरक्षित ऐप्स" कम सुरक्षित है क्योंकि आप ऐप को अपने पासवर्ड से प्रदान कर रहे हैं। वास्तविक प्रमाणीकरण और पासवर्ड संचरण अभी भी सुरक्षित है। इसलिए, जीमेल में "कम सुरक्षित ऐप्स" चालू करने से आप हमला करने के लिए खुले नहीं होते हैं जब तक आप हमलावर को अपना उपयोगकर्ता नाम और पासवर्ड प्रदान नहीं करते। – DWCP

3

हालांकि, SHA1 टक्कर हमलों के लिए MD5 की तुलना में अधिक प्रतिरोधी है देखते हैं, लेकिन यह हर साल कमजोर हो रही है। इसलिए, Google SHA-1 से SHA-2/SHA-3 तक माइग्रेट करने के लिए प्रोत्साहित करता है।

मुझे लगता है कि आप पहली बार एक SHA-2 प्रमाण पत्र प्राप्त करना चाहिए, और फिर SmtpClient के लिए यह निर्धारित करने के लिए निम्न नमूना कोड का उपयोग करें:

string certificate = "Certificate.cer"; 

X509Certificate cert = new X509Certificate2(certificate); 

MailMessage message = new MailMessage(from, to); 

SmtpClient client = new SmtpClient(server); 

client.ClientCertificates.Add(cert); 

client.Send(message); 

और यह भी MSDN SmtpClient.ClientCertificates remarks नोटिस:

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

+0

जहां मुझे नया सुरक्षित प्रमाणपत्र मिल सकता है? – Anatoly

+0

"प्रमाणपत्र प्राधिकरण" से, Google इसे आप पाएंगे – Hamed

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