6

मुझे लगता है कि हम सिर्फ आईओएस 9 (अक्टूबर 23 वें 2015 के रूप में संस्करण) पर एक बग की खोज की का उपयोग कर और पैदा करने HTTP जब ग्राहक एसएसएल प्रमाणपत्र का उपयोग कर एक बैकएंड API से बात करने। बहुत सी आरईएसटी सेवाओं के साथ आम तौर पर, हमारी एपीआई स्थिति को संवाद करने के लिए 4xx त्रुटि कोड उत्पन्न करती है। उनमें से एक 403 निषिद्ध त्रुटि है जब कोई क्लाइंट उन पथों तक पहुंचने का प्रयास करता है जो किसी विशिष्ट क्लाइंट आईडी को एक्सेस करने के लिए अधिकृत नहीं हैं। ध्यान दें कि यह HTTP त्रुटि तब होती है जब क्लाइंट SSL प्रमाणपत्र ने वैध कनेक्शन & सेट किया है और क्लाइंट आईडी प्रमाणित की गई है।बग जब ग्राहक एसएसएल प्रमाणपत्र 403 त्रुटियों

आईओएस 9 में, इस क्रम ने एक अमान्य क्लाइंट SSL त्रुटि उत्पन्न करेगा:

FAILED: Error Domain=NSURLErrorDomain Code=-1206 "The server “our.server.here” requires a client certificate."

(ध्यान दें: यह मेरा ट्वीट यहाँ करने के लिए एक अनुवर्ती: https://twitter.com/ckmaresca/status/657576686318256128 - मैं इतना जगह ज्यादातर लोगों को खोजेगा है सोचा इस के लिए)

उत्तर

10

यह हमारे दिन लगे अंत में यह पता लगाने की है, लेकिन यह पता चला है कि इस विशेष त्रुटि एप्पल के नए आवेदन ट्रांसपोर्ट लेयर सिक्योरिटी द्वारा उत्पन्न होता है। विशेष रूप से, ऐसा लगता है कि यदि आप क्लाइंट केर्ट्स का उपयोग कर रहे हैं और आपकी बैकएंड एपीआई HTTP 403 त्रुटि उत्पन्न करती है, तो एटीएल का मानना ​​है कि प्रमाण खराब है और पूरे लेनदेन को मारता है।

हम यह जानते हैं क्योंकि हम हमारे सर्वर लॉग उस अनुरोध के माध्यम से चला जाता है और ठीक से कार्यान्वित में देख सकते हैं। हमने यह भी देखा है कि सॉकेट अनुरोध को जिंदा कर देता है और सर्वर से प्रतिक्रिया प्राप्त होने के बाद ही यह त्रुटि दिखाई देती है। हम अपने क्लाइंट प्रमाण पत्र को भी जानते हैं क्योंकि कोई भी पथ शून्य त्रुटियों के साथ 403 कार्यों को वापस नहीं लौटाता है और HTTP त्रुटि कोड को 401 पर बदलता है, यह समस्या दूर हो जाती है।

यह कई कारणों से समस्या पैदा करने के लिए है, लेकिन ज्यादातर क्योंकि HTTP त्रुटियों SSL त्रुटियाँ नहीं हैं। दो स्वतंत्र रूप से काम कर सकते हैं और यह एक मान्य क्लाइंट साइड SSL प्रमाणपत्र के साथ एक 403 त्रुटि के लिए पूरी तरह से संभव है ....

काम के आसपास कुछ और करने के लिए अपने सभी 403 त्रुटियों को बदलने के लिए है। मैं ध्यान दूंगा कि बड़ी संख्या में ओथ 1/2 सर्वर विभिन्न 403 त्रुटियों को उत्पन्न करेंगे, इसलिए यह गैर-तुच्छ हो सकता है। वैकल्पिक रूप से, HTTP 403 त्रुटियों को एक अलग HTTP कोड में रीमेप करने के लिए एक रिवर्स प्रॉक्सी का उपयोग करना संभव हो सकता है - हमने इसका परीक्षण नहीं किया है।

हम Sherbit.io को एप्पल के साथ एक बग दर्ज की थी लेकिन मैं लोगों को सचेत रहें तो शायद वे जैसे हम एक सप्ताह के लिए किया था एक दीवार के खिलाफ उनके सिर पीटने से बच सकते हैं देना चाहता था ....

धन्यवाद enginnering टीम (विशेष रूप से Varun & मैट) इसे डीबग करने के लिए।

+0

अरे @ckm, मेरे पास एक ही समस्या है और इसमें दिन बिताए हैं। आप किस समाधान का उपयोग कर समाप्त हो गए? मैं सर्वर नियंत्रित कर सकते हैं नहीं लौट 403 :(आप किसी भी तरीके को मिला नहीं के लिए? –

+0

आप भी कृपया rdar लिंक पेस्ट कर सकते हैं? –

+0

@ckm, हम अभी भी एक ही मुद्दा है, रडार पर किसी भी अद्यतन हो रही है? – Chandra

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