2009-12-10 11 views
5

मुझे समस्याएं चल रही हैं। मैं टीसीपी/एसएसएल के माध्यम से ऐप्पल सर्वर से कनेक्ट करने की कोशिश कर रहा हूं। मैं पुश नोटिफिकेशन के लिए ऐप्पल द्वारा प्रदान किए गए क्लाइंट प्रमाणपत्र का उपयोग कर रहा हूं। मैंने स्थानीय ट्रस्टेड रूट प्रमाणपत्र और स्थानीय व्यक्तिगत प्रमाणपत्र फ़ोल्डर दोनों में अपने सर्वर (Win2k3) पर प्रमाण पत्र स्थापित किया है।SslStream.AuthenticateAsClient पर संदेश (संदेश को बुरी तरह स्वरूपित किया गया था)

अब मेरे पास एक क्लास लाइब्रेरी है जो उस कनेक्शन से संबंधित है, जब मैं सर्वर से चल रहे कंसोल एप्लिकेशन से इस क्लास लाइब्रेरी को कॉल करता हूं तो यह बिल्कुल ठीक काम करता है, लेकिन जब मैं उस क्लास लाइब्रेरी को एएसपीनेट पेज या एएसएमएक्स से कॉल करता हूं वेब सेवा मुझे निम्नलिखित अपवाद मिलता है।

एसएसपीआई को कॉल विफल, आंतरिक अपवाद देखें। प्राप्त संदेश अप्रत्याशित या बुरी तरह स्वरूपित था।

X509Certificate cert = new X509Certificate(certificateLocation, certificatePassword);      
X509CertificateCollection certCollection = new X509CertificateCollection(new X509Certificate[1] { cert }); 
// OPEN the new SSL Stream 
SslStream ssl = new SslStream(client.GetStream(), false, new RemoteCertificateValidationCallback(ValidateServerCertificate), null);      
ssl.AuthenticateAsClient(ipAddress, certCollection, SslProtocols.Default, false); 

ssl.AuthenticateAsClient है जहां त्रुटि फेंक दिया जाता है:

यह मेरा कोड है।

यह मुझे पागल कर रहा है। यदि कंसोल एप्लिकेशन ठीक से कनेक्ट हो सकता है, तो एएसपीनेट नेटवर्क परत सुरक्षा के साथ कुछ समस्या होनी चाहिए जो प्रमाणीकरण में विफल रहा है ... सुनिश्चित नहीं है, शायद web.config में कुछ या कुछ प्रकार की सुरक्षा नीति जोड़ने की आवश्यकता है। यह भी इंगित करने के लिए कि मैं कंसोल और वेबसाइट दोनों के साथ अपनी स्थानीय विकास मशीन पर जुर्माना लगा सकता हूं।

किसी को भी कोई विचार है?

+1

हाय मुझे अब एक ही समस्या का सामना करना पड़ रहा है। आपने इस मुद्दे को कैसे हल किया? कृपया – ramesh

उत्तर

1

एएसपी.नेट एक अलग खाते के तहत चलाता है ताकि आपको WinHttpCertCfg.exe टूल का उपयोग करना होगा ताकि निम्नलिखित खाते को स्थानीय कंप्यूटर पर्सनल/ट्रस्टेड फ़ोल्डरों में स्थापित प्रमाणपत्र को एक्सेस किया जा सके।

  • ASPNET
  • नेटवर्क सेवा
  • प्रमाणीकृत उपयोगकर्ता

उदा

winhttpcertcfg -g -c LOCAL_MACHINE\MY -s "CertificateName" -a "ASPNET" 

जहां प्रमाणपत्र नाम अपने प्रमाण पत्र का दोस्ताना नाम है। आप here से टूल और जानकारी प्राप्त कर सकते हैं।

2

क्या आपने अपने सिस्टम पर प्रमाणपत्र स्थापित किया है? यदि आप विंडोज़ चला रहे हैं तो यह प्रबंधन कंसोल (रन -> एमएमसी) के तहत स्थानीय कंप्यूटर/व्यक्तिगत या विश्वसनीय फ़ोल्डर में होना चाहिए। ASP.NET DefaultAppPool/नेटवर्क सेवा उपयोगकर्ता को जोड़ने मुझे हालांकि मदद नहीं की -

-2

परिवर्तन X509Certificate X509Certificate2 करने के लिए और भी X509CertificateCollection X509Certificate2Collection

+0

-1 में मदद करें - इससे कोई फर्क नहीं पड़ता। –

0

को मैं इस एक ही समस्या थी।

मुझे अंत में पता चला कि एएसपी.NET webservice विश्वसनीय रूट प्रमाण पत्र फ़ोल्डर में होने पर प्रमाण पत्र तक नहीं पहुंच सका (भले ही कंसोल ऐप कर सकता है)। मैंने इसे व्यक्तिगत प्रमाणपत्र फ़ोल्डर में वापस खींच लिया और अब कंसोल और वेब ऐप्स दोनों से विधि को कॉल कर सकता हूं।

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

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