मेरे पास आईआईएस 7 के साथ एक विंडोज 2008 सर्वर है जो भुगतान प्रक्रिया संसाधित करने के लिए पेपैल को अनुरोध भेजने के लिए .NET C# अनुप्रयोग का उपयोग कर रहा है। कुछ महीने पहले मैंने एक प्रमाणपत्र स्थापित किया था जिसे Verisign द्वारा खरीदा गया था। स्थापना के बाद, मैं एसएसएल कनेक्शन सफलतापूर्वक बनाने के लिए अपना वेब क्लाइंट कोड चलाने में सक्षम था, और पेपैल एनवीपी एपीआई (नाम मूल्य जोड़ी) के माध्यम से भुगतान प्रक्रिया करता हूं।एसएसएल विफलताओं - क्लाइंट सर्टिफिकेट के साथ HttpWebRequest का उपयोग करते समय एसएसएल/टीएलएस अपवाद प्राप्त करना
हाल ही में, मुझे एसएसएल लेनदेन के दौरान एक त्रुटि प्राप्त हुई है।
SSL/TLS सुरक्षित चैनल
मैं सब कुछ मैं के बारे में सोच सकता है, और StackOverflow और नेट पर अन्य स्थानों पर कई लेख पढ़ने के देख लिया है बनाया नहीं जा सका: इस प्रकार विशिष्ट त्रुटि है।
सबसे अच्छा संसाधन मैंने पाया यह था:
अनुरोध निरस्त किया गया था: SSL/TLS सुरक्षित चैनल
लुक इस लेख http://support.microsoft.com/kb/915599 संकल्प जे यह त्रुटि नहीं बना सका भी हो सकता है कि आप कर रहे हैं एक ग्राहक प्रमाण पत्र की आपूर्ति नहीं। सबसे अधिक संभावना यह टीएलएस या एसएसएल 3 का उपयोग करने के साथ एक मुद्दा है और सर्वर इसे समझ नहीं रहा है।
विभिन्न लिंक मैं कोशिश की है:
http://support.microsoft.com/kb/901183
और यहाँ सभी अन्य संसाधनों मैं पढ़ और उनके समाधानों 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
http://forums.iis.net/t/1156690.aspx
मैं निम्नलिखित समाधान की कोशिश की है:
- प्रमाण पत्र पुनर्स्थापित करें, और यह विभिन्न दुकानों (पर्सनल, LocalComputer) में रखा
जोड़ा इस ServiceManager कोड:
ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
सक्षम लॉगिंग अधिक वर्बोज़ विवरण
- विभिन्न अन्य समाधान में सूचीबद्ध हासिल करने के लिए उपरोक्त लिंक
इतना निराशाजनक बात यह है कि यह कुछ महीने पहले ठीक काम कर रहा था, और अब मुझे यह त्रुटि मिलती है। सबसे पहले, मैंने सोचा कि प्रमाण समाप्त हो गया है, लेकिन यह ठीक प्रतीत होता है।
यह विंडोज सर्वर के लिए एक सर्विस पैक या हॉटफिक्स हो सकता है जो एक नई सेटिंग या परिदृश्य बनाता है जो एसएसएल को तोड़ देता है। मुझे लगा कि प्रमाण को पुनः स्थापित करने से यह हल हो जाएगा।
यह ध्यान रखना महत्वपूर्ण है कि जब मैंने पुनर्स्थापित किया, तो मैंने इसे विभिन्न स्टोर्स में जोड़ा (डबल क्लिक करें और इंस्टॉल करें)। मैंने "प्रमाणपत्र अनुरोध" नहीं बनाया। चूंकि यह पहले से ही स्थापित है और मेरे आईआईएस अनुप्रयोग के एसएसएल पोर्ट से जुड़ा हुआ है, यह ठीक होना चाहिए।
यह 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;
}
यहाँ एसएसएल मशीन के विभिन्न घटकों को दिखाने के लिए स्क्रीन शॉट्स का एक संग्रह कर रहे हैं:
इस कोड है कि वेब अनुरोध बनाता है आईआईएस में बाध्यकारी सेटिंग्स:
यहां स्थापित Certs का एक सिंहावलोकन है:
Certs स्थापित:
प्रमाणपत्र विवरण
इस त्रुटि फिक्सिंग सबसे होगा पर कोई सलाह
यह त्रुटि मैं प्राप्त है की सराहना की। कुछ संभावनाएं जिन्हें मैंने माना है लेकिन संबोधित नहीं हैं:
- अनुरोध बहुत लंबा समय ले सकता है? यह काफी तेज़ लगता है ... लेकिन मैंने पढ़ा है कि यह एक समस्या हो सकती है।
- इंटरनेट एक्सप्लोरर में, मुझे ग्रीन "एसएसएल बार" दिखाई देता है जो दिखाता है कि यह साइट सुरक्षित होने के रूप में सत्यापित है। यह मुझे बताता है कि प्रमाण सही ढंग से स्थापित है, क्या यह सच है?
- क्या कोई साधारण परीक्षण है जो मैं किसी प्रकार के HTTP अनुरोध के साथ समस्या के स्रोत को कम करने में मदद करने के लिए कर सकता हूं?
- क्या पेपैल के साथ इसका कोई संबंध नहीं हो सकता है? क्या यह संभव है कि पेपैल अपने अंत में प्रमाण-पत्रों के कारण अनुरोध को खारिज कर रहा है?
- ICertificatePolicy Interface को लागू करने से समस्या को डीबग करने में कोई मदद मिलेगी? मुझे आशा है कि मैं इसे ठीक कर सकता हूं।
मुझे लगता है कि या तो एसएसएल काम करेगा या नहीं, इसका पेपैल पर कोई असर/निर्भरता नहीं है ... लेकिन मैं गलत हो सकता हूं।
मुझे लगता है कि मुझे केवल वेब वैल्यूएयर क्लास द्वारा निर्मित नाम वैल्यू जोयर यूआरएल का उपयोग करने में सक्षम होना चाहिए, और इसे आईई के माध्यम से पाइप पर भेजना और प्रतिक्रिया प्राप्त करना चाहिए।
सुनिश्चित नहीं हैं कि अगर अब भी यह की जरूरत है - अपने प्रश्न बहुत व्यापक है:) (जो अच्छा है, बस मुश्किल करने के लिए तेजी से पढ़ा यह माध्यम से), आशा है कि मैं यह अधिकार मिल गया। वैसे भी, मेरे पास 'उत्तर' नहीं है लेकिन इससे मदद मिल सकती है - आप सत्यापन कॉलबैक का उपयोग करके इसे डीबग करना चाहेंगे - आप मैन्युअल रूप से सत्यापित कर सकते हैं (सत्य लौटें) देखें कि क्या यह काम करता है (केवल समाधान देखने के लिए नहीं, देखें क्या होता है) - यह कोड है "ServicePointManager.ServerCertificateValidationCallback + = new System.Net.Security.RemoteCertificateValidationCallback ((एस, सीई, सी, एसएसएल) => सत्य);" - और एसओ पर ".NET के साथ एक स्व-हस्ताक्षरित प्रमाणपत्र का उपयोग करना" देखें। – NSGaga
एसओ, +1 पर मैंने सबसे अच्छे विस्तृत प्रश्न के बारे में पढ़ा है –