मैं एक सुरक्षित webservice से कनेक्ट करने की कोशिश कर रहा हूँ।जावा एसएसएल हैंडशेक के दौरान क्लाइंट प्रमाणपत्र क्यों नहीं भेजता है?
मुझे एक हैंडशेक विफलता मिल रही थी, भले ही मेरे कीस्टोर और ट्रस्टस्टोर को सही ढंग से सेट किया गया हो।
निराशा के कई दिनों के बाद, अंतहीन googling और मुझे चारों ओर पूछने के बाद पता चला कि एकमात्र समस्या यह थी कि जावा ने हैंडशेक के दौरान सर्वर को क्लाइंट प्रमाणपत्र नहीं भेजना चुना।
विशेष रूप से: - यानी
- सर्वर क्लाइंट प्रमाणपत्र (सीएन = RootCA) का अनुरोध किया प्रमाण पत्र जिसे "सबसीए" द्वारा हस्ताक्षरित किया गया है, जो बदले में "रूटका" द्वारा जारी किया जाता है। यह ट्रस्टस्टोर में देखने के लिए परेशान नहीं था ... duh ठीक है मुझे लगता है कि
- अफसोस की बात है जब मैंने कीस्टोर में "सबकाए" प्रमाणपत्र जोड़ने की कोशिश की, जिसने मदद नहीं की। मैंने जांच की कि प्रमाण पत्र कुंजीस्टोर में लोड हो जाते हैं या नहीं। वे करते हैं, लेकिन KeyManager क्लाइंट को छोड़कर सभी प्रमाणपत्रों को अनदेखा करता है।
- तथ्य यह है कि जावा का फैसला करता है यह किसी भी प्रमाण पत्र है कि सर्वर के अनुरोध को संतुष्ट नहीं है और
मेरे सवालों का :-(कुछ भी नहीं ... tadaaa हाथ मिलाना विफलता भेजता करने के लिए ऊपर की ओर जाता है के सभी:
- क्या यह संभव है कि मैंने "सबकै" प्रमाणपत्र को किस्टोर को इस तरह से जोड़ा कि "प्रमाणपत्र श्रृंखला तोड़ दी" या कुछ ऐसा है कि KeyManager केवल क्लाइंट प्रमाणपत्र लोड करता है और बाकी को अनदेखा करता है? (क्रोम और openssl आंकड़े को प्रबंधित करने के लिए प्रबंधन करता है तो बाहर क्यों जावा नहीं हो सकता है? - ध्यान दें कि "सबसीए" प्रमाण हमेशा विश्वसनीय प्राधिकारी के रूप में अलग से प्रस्तुत किया जाता है ताकि क्रोम ऐपारे हैंडशेक के दौरान क्लाइंट प्रमाण के साथ सही ढंग से पैक करता है)
- क्या यह सर्वर की तरफ औपचारिक "कॉन्फ़िगरेशन समस्या" है? सर्वर एक तीसरी पार्टी है। मैं उम्मीद करता हूं कि सर्वर "सबका" प्राधिकरण द्वारा हस्ताक्षरित प्रमाण पत्र का अनुरोध करेगा क्योंकि उन्होंने हमें वह प्रदान किया है। मुझे संदेह है कि यह क्रोम और openssl में काम करता है क्योंकि वे "कम प्रतिबंधक" हैं और जावा सिर्फ "पुस्तक द्वारा" चला जाता है और विफल रहता है।
मैंने इसके लिए एक गंदे कामकाज को एक साथ रखने का प्रबंधन किया, लेकिन मैं इसके बारे में बहुत खुश नहीं हूं इसलिए अगर कोई मुझे मेरे लिए यह स्पष्ट कर सकता है तो मुझे खुशी होगी।
@ ब्रूनो के जवाब में जोड़ने के लायक है कि अंतर्निहित कारण यह है कि एक निजी कुंजी थी लेकिन कोई संबंधित प्रमाण पत्र नहीं था (यानी एक ही उपनाम के साथ), इसलिए 'प्रमाणपत्र पुनर्प्राप्ति' संदेशों से पूछे जाने पर जावा एक नहीं भेज सका। इसके अन्य कारणों में सर्वर निर्दिष्ट निर्दिष्ट जारीकर्ताओं द्वारा हस्ताक्षरित कोई प्रमाणपत्र शामिल नहीं हो सकता है, या सर्वर निर्दिष्ट सिफर से मेल खाने वाले प्रमाणपत्र नहीं हैं। – EJP
हमने इस समस्या को हल किया है बस सर्वर द्वारा निर्दिष्ट सिफर से मेल खाते हैं। इस जानकारी के लिए धन्यवाद दोस्तों, यह बहुत उपयोगी था। –