17

मैं आईफोन ऐप पर पुश सूचनाएं भेजने के लिए पीईएपीएनएस का उपयोग करने की कोशिश कर रहा हूं। हम एप्पल देव केंद्र से प्रमाण पत्र प्राप्त करने की प्रक्रिया से गुज़र चुके हैं, जो ठीक काम करता है; हालांकि, हमने प्रमाण पत्र और निजी कुंजी को एक .pem फ़ाइल में कैसे रखा जाए, इसके लिए हमने कई अलग-अलग ट्यूटोरियल का पालन किया है, और उन सभी के लिए, परिणामस्वरूप प्रमाणपत्र का उपयोग करके हमारे वेब सर्वर से ओपनएसएसएल का उपयोग करके एपीएनएस सर्वर से कनेक्ट करने का प्रयास कर रहा है इस त्रुटि:एपीएनएस से कनेक्ट नहीं हो सकता: रिटर्न कोड 20 (स्थानीय जारीकर्ता प्रमाणपत्र प्राप्त करने में असमर्थ)

$ openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns.pem 
CONNECTED(00000003) 
depth=1 C = US, O = "Entrust, Inc.", OU = www.entrust.net/rpa is incorporated by reference, OU = "(c) 2009 Entrust, Inc.", CN = Entrust Certification Authority - L1C 
verify error:num=20:unable to get local issuer certificate 
verify return:0 
[...certificate chain, server certificate, etc.] 

कभी कभी हम यह सब के अंत में कुछ कर पाएंगे और कनेक्शन बंद नहीं जब तक हम Enter दबाएँ, कभी कभी नहीं (इसे तुरंत बंद कर देता है) करता है, लेकिन जब भी हम करने के लिए प्रकट एक कनेक्शन है, जब हम पुश अधिसूचना भेजने की कोशिश करते हैं तो पीएपीएएनएनएस हमेशा विफल रहता है, त्रुटि को "दोष 500:" एपीएनएस सर्वर से कनेक्शन नहीं बनाया जा सका। '", जिसे मैं केवल मान सकता हूं, उसी कारण से" स्थानीय जारीकर्ता प्रमाण पत्र प्राप्त करने में असमर्थ "- हालांकि मुझे नहीं पता कि इसका क्या कारण हो सकता है।

ट्यूटोरियल हम निम्नलिखित किया गया है शामिल हैं:

http://blog.serverdensity.com/how-to-build-an-apple-push-notification-provider-server-tutorial/

http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12

http://www.nasoni.net/2010/12/02/apns-client-development-certificate/

http://thebirdytoldmeso.com/%28S%28l131v3jmvpdh5255u1jayp20%29%29/userActions/thread/Question.aspx?id=10302792

हाँ, हम निजी कुंजी और इसे से पासवर्ड को दूर कर दिया है जब हम सह करने की कोशिश करते हैं तो इसके लिए नहीं पूछते हैं OpenSSL के साथ कनेक्ट करें, तो संभवतः वह हिस्सा ठीक काम कर रहा है।

हमें कोई जानकारी नहीं है कि क्या गलत हो रहा है। अफसोस की बात यह है कि, इन सभी ट्यूटोरियल (और ऐप्पल, स्पष्ट रूप से) एक मैक का उपयोग कर रहे हैं, जबकि मैं विंडोज़ और सर्वर पर विकसित कर रहा हूं (जिसे मैं काम कर रहा हूं) उबंटू है; मेरे सहकर्मी जो मैक पर हैं, सर्वर पर अपलोड करने और अंतिम चरण करने के लिए मुझे परिणामस्वरूप फाइल भेजने से पहले पहले चरण के विभिन्न उपसर्ग कर रहे हैं। क्या इसका कोई संबंध नहीं हो सकता है, किसी भी तरह? या क्या आवश्यक सर्वर सेटअप का एक कदम है जिसे हर जगह छोड़ा जा रहा है?

+0

आप के साथ कुंजी निर्यात किया प्रमाण पत्र? आमतौर पर यह पहली समस्या है –

+0

गेटवे.sandbox.push.apple.com से कनेक्ट करते समय ["त्रुटि त्रुटि: num = 20" का संभावित डुप्लिकेट] (http://stackoverflow.com/q/23343910)। – jww

उत्तर

1

raywenderlich.com से ट्यूटोरियल में सरलपश PHP स्क्रिप्ट के साथ अपने प्रमाणपत्र का परीक्षण करें और फिर हम वहां से आगे बढ़ सकते हैं। कभी-कभी ऐसा लगता है कि प्रमाणपत्र ठीक है लेकिन सेब उन सभी चीजों के बारे में पागल है।

त्रुटि बीस मुझे लगता है कि आपकी निजी कुंजी के साथ समस्या है और मुझे लगता है कि आपकी प्रावधान फ़ाइल के साथ भी समस्या हो सकती है: http://www.raywenderlich.com/forums/viewtopic.php?f=2&t=380&start=100

सुनिश्चित करें कि आप सबकुछ सही ढंग से निर्यात कर रहे हैं और यदि आवश्यकता को रद्द कर दिया जाए और नए प्रमाणपत्र बनाएं। आशा है कि आप इसे हल कर सकते हैं! :)

+0

नीचे वोट क्यों? यह एक पूरी तरह स्वीकार्य उत्तर है। –

+0

raywenderlich.com से ट्यूटोरियल में सरलपश PHP स्क्रिप्ट के साथ प्रमाणपत्र का परीक्षण अब मेरे लिए अच्छा काम करता है। शायद आप सही हैं, सेब पागल परिष्कृत है। मुझे अंतिम परिणाम देखने के लिए आगे बढ़ना चाहिए। – David

-1

के रूप में रे Wenderlich कहा गया है, आप अपने php फ़ाइल में जोड़ने के लिए आवश्यकता हो सकती है:

stream_context_set_option($ctx, 'ssl', 'cafile', 'entrust_2048_ca.cer'); 

प्रमाणपत्र प्राधिकार फ़ाइल आप यहां से डाउनलोड कर सकते हैं: https://www.entrust.net/downloads/binary/entrust_2048_ca.cer

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