2012-02-11 15 views
13

मेरे पास आईआईएस 7 के साथ एक विंडोज 2008 सर्वर है जो भुगतान प्रक्रिया संसाधित करने के लिए पेपैल को अनुरोध भेजने के लिए .NET C# अनुप्रयोग का उपयोग कर रहा है। कुछ महीने पहले मैंने एक प्रमाणपत्र स्थापित किया था जिसे Verisign द्वारा खरीदा गया था। स्थापना के बाद, मैं एसएसएल कनेक्शन सफलतापूर्वक बनाने के लिए अपना वेब क्लाइंट कोड चलाने में सक्षम था, और पेपैल एनवीपी एपीआई (नाम मूल्य जोड़ी) के माध्यम से भुगतान प्रक्रिया करता हूं।एसएसएल विफलताओं - क्लाइंट सर्टिफिकेट के साथ HttpWebRequest का उपयोग करते समय एसएसएल/टीएलएस अपवाद प्राप्त करना

हाल ही में, मुझे एसएसएल लेनदेन के दौरान एक त्रुटि प्राप्त हुई है।

SSL/TLS सुरक्षित चैनल

मैं सब कुछ मैं के बारे में सोच सकता है, और StackOverflow और नेट पर अन्य स्थानों पर कई लेख पढ़ने के देख लिया है बनाया नहीं जा सका: इस प्रकार विशिष्ट त्रुटि है।

सबसे अच्छा संसाधन मैंने पाया यह था:

अनुरोध निरस्त किया गया था: SSL/TLS सुरक्षित चैनल

लुक इस लेख http://support.microsoft.com/kb/915599 संकल्प जे यह त्रुटि नहीं बना सका भी हो सकता है कि आप कर रहे हैं एक ग्राहक प्रमाण पत्र की आपूर्ति नहीं। सबसे अधिक संभावना यह टीएलएस या एसएसएल 3 का उपयोग करने के साथ एक मुद्दा है और सर्वर इसे समझ नहीं रहा है।

विभिन्न लिंक मैं कोशिश की है:

http://support.microsoft.com/kb/901183

http://blogs.msdn.com/b/jpsanders/archive/2009/01/07/you-receive-one-or-more-error-messages-when-you-try-to-make-an-http-request-in-an-application-that-is-built-on-the-net-framework-2-0.aspx

और यहाँ सभी अन्य संसाधनों मैं पढ़ और उनके समाधानों implimenting की कोशिश की है की एक सूची है

Could not create SSL/TLS secure channel - Could the problem be a proxy server?

The request was aborted: Could not create SSL/TLS secure channel

The request was aborted: Could not create SSL/TLS secure channel - Decrypt returned SEC_I_RENEGOTIATE

http://social.msdn.microsoft.com/forums/en-US/netfxnetcom/thread/99d49286-5c3a-4311-a1e3-499f035ce979/

http://blogs.msdn.com/b/jpsanders/archive/2009/01/07/you-receive-one-or-more-error-messages-when-you-try-to-make-an-http-request-in-an-application-that-is-built-on-the-net-framework-2-0.aspx

http://forums.iis.net/t/1156690.aspx

मैं निम्नलिखित समाधान की कोशिश की है:

  1. प्रमाण पत्र पुनर्स्थापित करें, और यह विभिन्न दुकानों (पर्सनल, LocalComputer) में रखा
  2. जोड़ा इस ServiceManager कोड:

    ServicePointManager.Expect100Continue = true; 
    ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3; 
    
  3. सक्षम लॉगिंग अधिक वर्बोज़ विवरण

  4. विभिन्न अन्य समाधान में सूचीबद्ध हासिल करने के लिए उपरोक्त लिंक

इतना निराशाजनक बात यह है कि यह कुछ महीने पहले ठीक काम कर रहा था, और अब मुझे यह त्रुटि मिलती है। सबसे पहले, मैंने सोचा कि प्रमाण समाप्त हो गया है, लेकिन यह ठीक प्रतीत होता है।

यह विंडोज सर्वर के लिए एक सर्विस पैक या हॉटफिक्स हो सकता है जो एक नई सेटिंग या परिदृश्य बनाता है जो एसएसएल को तोड़ देता है। मुझे लगा कि प्रमाण को पुनः स्थापित करने से यह हल हो जाएगा।

यह ध्यान रखना महत्वपूर्ण है कि जब मैंने पुनर्स्थापित किया, तो मैंने इसे विभिन्न स्टोर्स में जोड़ा (डबल क्लिक करें और इंस्टॉल करें)। मैंने "प्रमाणपत्र अनुरोध" नहीं बनाया। चूंकि यह पहले से ही स्थापित है और मेरे आईआईएस अनुप्रयोग के एसएसएल पोर्ट से जुड़ा हुआ है, यह ठीक होना चाहिए।

यह SSL है:

 public static Hashtable DoWebReq(string strNVP, string strNVPSandboxServer) 
    { 
     ServicePointManager.Expect100Continue = true; 
     ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3; 

     string _strNVP = strNVP; 

     //Create web request and web response objects, make sure you using the correct server (sandbox/live) 
     var wrWebRequest = (HttpWebRequest)WebRequest.Create(strNVPSandboxServer); 
     wrWebRequest.Method = "POST"; // POST 

     var requestWriter = new StreamWriter(wrWebRequest.GetRequestStream()); 


     requestWriter.Write(_strNVP); 
     requestWriter.Close(); 

     // Get the response. 
     var hwrWebResponse = (HttpWebResponse)wrWebRequest.GetResponse(); 
     var responseReader = new StreamReader(wrWebRequest.GetResponse().GetResponseStream()); 

     //and read the response 
     string responseData = responseReader.ReadToEnd(); 
     responseReader.Close(); 

     string result = System.Web.HttpContext.Current.Server.UrlDecode(responseData); 

     string[] arrResult = result.Split('&'); 
     Hashtable htResponse = new Hashtable(); 
     string[] responseItemArray; 
     foreach (string responseItem in arrResult) 
     { 
      responseItemArray = responseItem.Split('='); 
      htResponse.Add(responseItemArray[0], responseItemArray[1]); 
     } 

     return htResponse; 
    } 

यहाँ एसएसएल मशीन के विभिन्न घटकों को दिखाने के लिए स्क्रीन शॉट्स का एक संग्रह कर रहे हैं:

इस कोड है कि वेब अनुरोध बनाता है आईआईएस में बाध्यकारी सेटिंग्स: SSL Bindings

यहां स्थापित Certs का एक सिंहावलोकन है: SSL Error

certs2

Certs स्थापित: enter image description here

प्रमाणपत्र विवरण enter image description here

इस त्रुटि फिक्सिंग सबसे होगा पर कोई सलाहcerts1

यह त्रुटि मैं प्राप्त है की सराहना की। कुछ संभावनाएं जिन्हें मैंने माना है लेकिन संबोधित नहीं हैं:

  1. अनुरोध बहुत लंबा समय ले सकता है? यह काफी तेज़ लगता है ... लेकिन मैंने पढ़ा है कि यह एक समस्या हो सकती है।
  2. इंटरनेट एक्सप्लोरर में, मुझे ग्रीन "एसएसएल बार" दिखाई देता है जो दिखाता है कि यह साइट सुरक्षित होने के रूप में सत्यापित है। यह मुझे बताता है कि प्रमाण सही ढंग से स्थापित है, क्या यह सच है?
  3. क्या कोई साधारण परीक्षण है जो मैं किसी प्रकार के HTTP अनुरोध के साथ समस्या के स्रोत को कम करने में मदद करने के लिए कर सकता हूं?
  4. क्या पेपैल के साथ इसका कोई संबंध नहीं हो सकता है? क्या यह संभव है कि पेपैल अपने अंत में प्रमाण-पत्रों के कारण अनुरोध को खारिज कर रहा है?
  5. ICertificatePolicy Interface को लागू करने से समस्या को डीबग करने में कोई मदद मिलेगी? मुझे आशा है कि मैं इसे ठीक कर सकता हूं।

मुझे लगता है कि या तो एसएसएल काम करेगा या नहीं, इसका पेपैल पर कोई असर/निर्भरता नहीं है ... लेकिन मैं गलत हो सकता हूं।

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

+0

सुनिश्चित नहीं हैं कि अगर अब भी यह की जरूरत है - अपने प्रश्न बहुत व्यापक है:) (जो अच्छा है, बस मुश्किल करने के लिए तेजी से पढ़ा यह माध्यम से), आशा है कि मैं यह अधिकार मिल गया। वैसे भी, मेरे पास 'उत्तर' नहीं है लेकिन इससे मदद मिल सकती है - आप सत्यापन कॉलबैक का उपयोग करके इसे डीबग करना चाहेंगे - आप मैन्युअल रूप से सत्यापित कर सकते हैं (सत्य लौटें) देखें कि क्या यह काम करता है (केवल समाधान देखने के लिए नहीं, देखें क्या होता है) - यह कोड है "ServicePointManager.ServerCertificateValidationCallback + = new System.Net.Security.RemoteCertificateValidationCallback ((एस, सीई, सी, एसएसएल) => सत्य);" - और एसओ पर ".NET के साथ एक स्व-हस्ताक्षरित प्रमाणपत्र का उपयोग करना" देखें। – NSGaga

+1

एसओ, +1 पर मैंने सबसे अच्छे विस्तृत प्रश्न के बारे में पढ़ा है –

उत्तर

1

मुझे लगता है कि समस्या आपके क्लाइंट प्रमाणपत्र में नहीं है, बल्कि पेपैल में से एक है।

अपने प्रश्न पर:

Internet Explorer में, मैं ग्रीन "एसएसएल बार" जो इस साइट सुरक्षित होने के रूप में सत्यापित किया गया है पता चलता दिख रहा है। यह मुझे बताता है कि प्रमाण सही ढंग से स्थापित है, क्या यह सच है?

नहीं, इसका मतलब है कि पेपैल का सर्वर प्रमाणपत्र आपके ब्राउज़र द्वारा सत्यापित किया गया है, यानी पेपैल का प्रमाण पत्र आपके द्वारा प्रमाणन प्राधिकरण के रूप में जोड़े गए किसी व्यक्ति द्वारा हस्ताक्षरित है। हालांकि, पेपैल का प्रमाण पत्र आपके विश्वसनीय प्रमाणपत्रों में नहीं जोड़ा गया है।

मैंने यह भी देखा, पेपल के वर्तमान प्रमाण पत्र 2011/03/23 से वैधता है। हो सकता है कि तब तक आपका आवेदन काम कर रहा था, और अब यह बदल गया है कि एप्लिकेशन ने काम करना बंद कर दिया है।

इस मैं एक सर्वर प्रमाणपत्र के रूप में पेपैल के अपने प्रमाण पत्र स्थापित करने के लिए प्रयास करने की अनुशंसा के आधार पर।

0

यह अन्य तो जवाब सहायता के हो सकते हैं:

Issue with Paypal Payments Pro

सारांश में, आप बस इसे लाइव पीपी सर्वर पर कोशिश करनी चाहिए और यह देखना यह काम करता है :)

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