2014-09-29 6 views
15

यह एक आम त्रुटि प्रतीत होता है लेकिन मुझे एक कार्य-आसपास मिल गया है (नीचे देखें) मैं कारण को पिन नहीं कर सकता मैं इसे पहली जगह में प्राप्त कर रहा हूं।"रिमोट सर्टिफिकेट प्रमाणीकरण प्रक्रिया के अनुसार अमान्य है" जब एसएमपीटी सर्वर के पास वैध प्रमाणपत्र

मैं अपने आवेदन में एसएमटीपी कार्यक्षमता लिख ​​रहा हूं और मैं पहले से ही काम कर रहे एसएमटीपी में एसएसएल कार्यक्षमता जोड़ने का प्रयास कर रहा हूं।

मैं हमारी कंपनी के एमएस एक्सचेंज सर्वर का उपयोग करके परीक्षण कर रहा हूं और विशेष रूप से उस पर वेबमेल विकल्प सक्षम है। मैं अपने कनेक्शन को प्रमाणित नहीं कर रहा हूं और गुमनाम रूप से भेजकर अपने कोड के माध्यम से आंतरिक रूप से ईमेल भेज सकता हूं, हालांकि वे ईमेल हमारी कंपनियों की नीति के कारण बाहरी ईमेल पते पर रिले नहीं होंगे। इसके अलावा मैं इसे अपने ग्राहकों के लिए प्रोग्रामिंग कर रहा हूं और वे सभी खुले रिले और/या अज्ञात कनेक्शन की अनुमति नहीं देते हैं।

मेरा मानना ​​है कि एक्सचेंज सर्वर स्पष्ट एसएसएल/टीएलएस का उपयोग कर रहा है। मैंने पोर्ट 25 पर सर्वर के पते पर टेलनेट की कोशिश की है और एक टेक्स्ट प्रतिक्रिया, मानव पठनीय प्रतिक्रिया मिली है, जो मेरी कुछ खोजों के अनुसार पहले इसका मतलब है कि यह स्पष्ट एसएसएल/टीएलएस का उपयोग कर रहा है।

मैं निम्नलिखित परीक्षण कोड

SmtpClient SMTPClient = new SmtpClient(webmailaddress); 
SMTPClient.Port = 25; 
SMTPClient.UseDefaultCredentials = true; 
SMTPClient.EnableSsl = true; 
System.Net.Mail.MailMessage Message = new ` 
System.Net.Mail.MailMessage(emailFrom,emailTo,subject,body); 
SMTPClient.Send(Message); 

है एक समाधान मैं इस "The remote certificate is invalid according to the validation procedure." using Gmail SMTP server

जहां से मैं निम्नलिखित कोड मिल गया में आए लिए मेरे खोज के दौरान ...

ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate); 

public static bool ValidateServerCertificate(object sender,X509Certificate certificate,X509Chain chain,SslPolicyErrors sslPolicyErrors) 
{ 
    if (sslPolicyErrors == SslPolicyErrors.None) 
     return true; 
    else 
    { 
     if (System.Windows.Forms.MessageBox.Show("The server certificate is not valid.\nAccept?", "Certificate Validation", System.Windows.Forms.MessageBoxButtons.YesNo, System.Windows.Forms.MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes) 
      return true; 
     else 
      return false; 
    } 
} 

यह मेरे टेस्ट कोड में काम करता है। मैं जिस वास्तविक प्रक्रिया को लिख रहा हूं (मेरे टेस्ट कोड के बजाए) पृष्ठभूमि में चलने जा रहा है और वास्तव में उपयोगकर्ता से नहीं पूछ सकता (इसके बजाय यह विंडोज़ त्रुटि लॉग में त्रुटियों की रिपोर्ट करता है)।

जैसा कि मैंने शुरू किया, मेरा सवाल वास्तव में मुझे यह त्रुटि क्यों मिल रही है। यदि मैं ब्राउज़र में https: webmail.ourdomain.co.uk पर जाता हूं तो यह एक वैध प्रमाणपत्र दिखाता है और प्रमाण पत्र स्थापित करने का कोई विकल्प नहीं है (जैसा कि मैंने किया होगा अगर यह स्वयं हस्ताक्षरित हो)।

Certificate Screenshot हालांकि जब मैं ValidateServerCertificate विधि में एक डिबग तोड़ Poing के साथ मेरे कोड चलाने के लिए,, मैं प्रमाण पत्र मूल्यों को देखो और हमारे स्थानीय सर्वर की एक प्रदाता देख सकते हैं और 'से पहले का उपयोग नहीं करते', और 'डॉन' आज के गुणों के बाद उपयोग नहीं करते हैं। यह मुझे प्राप्त प्रमाणपत्र से मेल नहीं खाता है।

मैंने यह भी जांच लिया है कि एसएसएल पॉलिसीइरर्स झंडे ValidateServerCertificate के डीबग में हैं, और वे "रिमोट कर्ट्रेस्ट्रेशन चेनइरर्स" और "रिमोट कर्ट्रेस्ट्रेशननाम मिस्चैच" दिखा रहे हैं।

तो मुझे इसके बारे में क्या याद आ रही है ... यह सही प्रमाणपत्र का उपयोग क्यों नहीं कर रहा है? यदि कदम हैं तो मुझे इसका उपयोग करने के लिए स्थानीय रूप से प्रमाण पत्र स्थापित करने की आवश्यकता है, तो मुझे उन्हें जानना होगा ताकि मैं अपने ग्राहकों को यह बता सकूं कि उन्हें क्या करना है।

मैं वैलिडेट सर्वर सर्वर प्रमाण से विधि को वापस लौटकर चेक को पास नहीं करना चाहता, और क्योंकि यह पृष्ठभूमि प्रक्रिया है, मैं उपयोगकर्ता से नहीं पूछ सकता, इसलिए मुझे समझने की आवश्यकता है कि मेरे कोड का उपयोग कैसे करें सही/भरोसेमंद प्रमाण पत्र।

आशा है कि कोई सलाह दे सकता है।

+0

अच्छी तरह से मुझे लगता है कि इसका कोई जवाब नहीं जानता है। अभी भी समाधान नहीं मिला है :( – RosieC

उत्तर

7

मुझे जो जवाब मिला है वह यह है कि सर्वर पर एसएमटीपी सेवा https के समान प्रमाण पत्र का उपयोग नहीं कर रही है।

diagnostic steps I had read here धारणा बनाते हैं कि वे एक ही प्रमाण पत्र का उपयोग करते हैं और हर बार मैंने कोशिश की है कि मैंने पहले किया है और नैदानिक ​​कदम ठीक हैं जो मैंने कई बार समस्या को हल करने के लिए किया है।

इस मामले में उन चरणों में काम नहीं किया गया क्योंकि उपयोग में प्रमाणपत्र अलग थे, और इसकी संभावना कुछ ऐसा नहीं था जो मैंने कभी नहीं पार किया था।

समाधान या तो सर्वर से वास्तविक प्रमाणपत्र निर्यात करने के लिए है और फिर इसे मेरी मशीन पर एक विश्वसनीय प्रमाणपत्र के रूप में स्थापित करें, या सर्वर पर SMTP सेवा के लिए एक अलग वैध/विश्वसनीय प्रमाणपत्र प्राप्त करने के लिए। यह वर्तमान में हमारे आईटी विभाग के साथ है जो सर्वर को यह तय करने के लिए प्रशासित करता है कि वे क्या करना चाहते हैं।

0

पुरानी पोस्ट, लेकिन मैंने सोचा कि मैं अपना समाधान साझा करूंगा क्योंकि इस मुद्दे के लिए वहां कई समाधान नहीं हैं।

यदि आप पुरानी विंडोज सर्वर 2003 मशीन चला रहे हैं, तो आपको शायद हॉटफिक्स (KB938397) स्थापित करने की आवश्यकता है।

यह समस्या होती है क्योंकि क्रिप्टोग्राफी एपीआई 2 (CAPI2) विंडोज सर्वर 2003 में hashing एल्गोरिदम के SHA2 परिवार का समर्थन नहीं करता। सीएपीआई 2 क्रिप्टोग्राफी एपीआई का हिस्सा है जो प्रमाण पत्र संभालता है।

https://support.microsoft.com/en-us/kb/938397

जो भी कारण के लिए, Microsoft आप सीधे डाउनलोड करने के लिए अनुमति देने के बजाय आप इस हॉटफिक्स को ईमेल करने के लिए चाहता है। यहाँ ईमेल से हॉटफिक्स लिए एक सीधा लिंक है:

http://hotfixv4.microsoft.com/Windows Server 2003/sp3/Fix200653/3790/free/315159_ENU_x64_zip.exe

2

पुरानी पोस्ट लेकिन जैसा कि आप ने कहा कि मैं चाहती हूं "कारण है कि यह सही प्रमाणपत्र का उपयोग नहीं कर रहा है" पता लगाने के लिए जो SSL प्रमाणपत्र है एक तरीका प्रदान करते हैं करने के लिए

openssl s_client -connect exchange01.int.contoso.com:25 -starttls smtp

यह उपयोग किया गया SSL प्रमाण की रूपरेखा तैयार करेंगे: एसएमटीपी (here देखें) जो openssl आवश्यक के लिए इस्तेमाल किया एसएमटीपी सेवा के लिए नकली। आप जो देखते हैं उसके आधार पर आप गलत प्रमाणपत्र (जैसा कि आपने पहले से किया है) को एक सही (या मैन्युअल रूप से प्रमाण पत्र पर भरोसा करते हैं) को प्रतिस्थापित कर सकते हैं।

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