2011-07-15 10 views
7

मेरे पास एज़ूर में होस्ट की गई एक डाटा सेवा है जिसमें से मैं आईफोन में अधिसूचना भेज रहा हूं लेकिन एपीएनएस के साथ कनेक्शन स्थापित करते समय मुझे निम्नलिखित त्रुटि मिल रही है "एसएसपीआई को कॉल विफल रहा। प्राप्त संदेश अप्रत्याशित या बुरी तरह स्वरूपित था। " मैं भी एक ही त्रुटि के लिए लिंक का पालन लेकिन अभी भी त्रुटिएसपीएसआई में आईफोन सर्टिफिकेट त्रुटि तेज एसएसपीआई को कॉल

apple push notification with APNS sharp और C# iPhone push server?

 try 
     { 
      using (TcpClient client = new TcpClient()) 
      { 

       try 
       { 
        client.Connect("gateway.sandbox.push.apple.com", 2195); 
        Logging("TSSLProDi :Connected to Apple"); 
       } 
       catch (Exception ex) 
       { 
        Logging("TSSLProDi :" + ex.Message + "-IE-" + ex.InnerException); 

       } 
       using (NetworkStream networkStream = client.GetStream()) 
       { 
        Logging("TSSLProDi :Client connected."); 

        X509Certificate clientCertificate = new X509Certificate(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory + @"startup\certname.pfx"), "mycertpassword"); 
        X509CertificateCollection clientCertificateCollection = new X509CertificateCollection(new X509Certificate[1] { clientCertificate }); 

        // Create an SSL stream that will close the client's stream. 
        SslStream sslStream = new SslStream(
         client.GetStream(), 
         false, 
         new RemoteCertificateValidationCallback(validateServerCertificate), 
         null 
         ); 

        try 
        { 
         sslStream.AuthenticateAsClient("gateway.sandbox.push.apple.com", clientCertificateCollection, System.Security.Authentication.SslProtocols.Default, false); 
         Logging("TSSLProDi :slStreamAuthenticated"); 
        } 
        catch (AuthenticationException ex) 
        { 
         Logging("TSSLProDi :" + "Exception: " + ex.Message.ToString()); 
         if (ex.InnerException != null) 
         { 
          Logging("Inner exception: " + ex.InnerException.Message.ToString()); 
         } 
         Logging("TSSLProDi :" + "Authentication failed - closing the connection."); 
         client.Close(); 
         return; 
        } 
       } 

      } 
     } 
     catch (Exception ex) 
     { 

      Logging("TSSLProCert :" + ex.Message + "-IE-" + ex.InnerException); 
     } 

मैं भी वी एम पर जरूरत प्रमाण पत्र स्थापित किया है हो रही संदर्भित। एक चेतावनी जो मैं एप्पल से प्राप्त आईफोन डेवलपर_डिडिटी प्रमाणपत्र पर प्राप्त कर रहा हूं वह यह है कि "इस प्रमाणपत्र को सत्यापित करने के लिए विंडोज़ में पर्याप्त जानकारी नहीं है" क्या मेरे आईफोन प्रमाणपत्र में कुछ गड़बड़ है। कृपया मेरी मदद करो मैं अटक कर रहा हूँ

उत्तर

6

समाधान मैं सिर्फ X509Certificate X509Certificate2 और X509CertificateCollection को X509Certificate2Collection

को
0

इस प्रयास करें:

SslStream sslStream = new SslStream(client.GetStream(), false); 
+0

में भी टिप्पणी की लेकिन एक ही त्रुटि की कोशिश की। मैं सही प्रमाण पत्र और पासवर्ड है कुछ भी कोड के साथ गलत है है –

3

मैं सुझाव है कि आप आप डेवलपर प्रमाण पत्र से p12 फ़ाइल बनाने के लिए इस ट्यूटोरियल में चरणों का पालन करें।

http://help.adobe.com/en_US/as3/iphone/WS144092a96ffef7cc-371badff126abc17b1f-7fff.html

यह भी महत्वपूर्ण है कि आप खिड़कियों में इस फ़ाइल को पंजीकृत करें। यह आपके द्वारा उत्पन्न किए जाने के बाद फ़ाइल को डबल-क्लिक करने जितना आसान है। बाद में X509Certificate कन्स्ट्रक्टर को कॉल अपडेट करना न भूलें।

ट्यूटोरियल विंडोज पर समान रूप से अच्छी तरह से काम करता है, लेकिन आप एक OpenSSL ग्राहक यहां पाया जा सकता है जो डाउनलोड करने के लिए हो सकता है:

http://gnuwin32.sourceforge.net/packages/openssl.htm

+0

हे मैंने किया आप का उल्लेख है लेकिन अभी भी मैं एक ही त्रुटि है कि "एक कॉल विफल SSPI के लिए .........." –

+0

हो रही है के रूप में पी 12 फाइल के आपके पथ के साथ अभी भी एक समस्या हो सकती है। यह देखने के लिए कि क्या यह समस्या हो सकती है, पहले हार्ड कोड कोड का प्रयास करें। और विंडोज़ में फ़ाइल को पंजीकृत करना न भूलें। –

+0

मैं पहले से ही विश्वसनीय रूट सीए अनुभाग में और भी व्यक्तिगत खंड में प्रमाण पत्र registed है। मैंने हार्डकोडेड मान के साथ प्रयास किया लेकिन अभी भी एक ही त्रुटि हो रही है। –

1

लिटिल देर से बदल दिया है मिल गया है, लेकिन कौन जानता है पर किसी व्यक्ति में मदद करता है ... मैं प्रमाण पत्र के साथ एक बड़ी गलती की है, और .cer मैं स्थापित ऐप्पल डेवलपर साइट से डाउनलोड किया गया ... मुझे पता है ... मेरी गलती है, लेकिन अगर आप गूंगा हो तो यह हो सकता है :-P

जब आप .CER डाउनलोड करते हैं, तो आपको इसे अपने आयात में करना होगा कीचेन और फिर निजी कुंजी सहित प्रमाणपत्र का निर्यात करें ... जो एक पी 12 प्रमाणपत्र उत्पन्न करेगा, और यह वह है जिसे आपको विंडोज मशीन में स्थापित करना है। एक बार जब मैंने LocalMachine/पर्सनल स्टोर में .P12 स्थापित किया, तो प्रमाणीकरण मेरे लिए ठीक काम करता था।

1

मुझे एक ही समस्या मिली, मैं .pfx के बजाय .p12 प्रमाणपत्र फ़ाइल का उपयोग करता हूं और अधिसूचना भेजने के लिए चंद्रमा-एपीएन का उपयोग करता हूं, समस्या हल हो जाती है।

Donwnload चंद्रमा-APNS यहाँ कोड: https://github.com/arashnorouzi/Moon-APNS

3

मैं अगर यह 3 साल के बाद सहायक होगा पता नहीं है, लेकिन मैं iOS8 के लिए जवाब छोड़ दें।

एप्पल लाइन आप का उल्लेख पर सर्वर सुरक्षा और सही बदल गया है, तो आप एसएसएल से टीएलएस को बदलना होगा:

मूल कोड:

_apnsStream.AuthenticateAsClient(host,certificates,System.Security.Authentication.SslProtocols.Ssl3, false); 

नए कोड:

_apnsStream.AuthenticateAsClient(host,certificates,System.Security.Authentication.SslProtocols.Tls, false); 

मुझे आशा है कि यह जानकारी किसी के लिए सहायक होगी।

किसी ने इसे जीआईटी फोरम

+0

मेरी समस्या हल तो जवाब के लिए धन्यवाद। मैं – tyczj

+0

धन्यवाद इतना मार्को एंटोनियो इच्छा वे कुछ जानकारी वे यह परिवर्तन किया था! – Alexander

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