से मेल नहीं खाता है, मैं Google की सेवा में से किसी एक से कनेक्ट करने के लिए निम्न कोड का उपयोग कर रहा हूं। इस कोड को अपने स्थानीय मशीन पर ठीक काम किया:जावा एसएसएलएक्सप्शन: प्रमाणपत्र में होस्टनाम
HttpClient client=new DefaultHttpClient();
HttpPost post = new HttpPost("https://www.google.com/accounts/ClientLogin");
post.setEntity(new UrlEncodedFormEntity(myData));
HttpResponse response = client.execute(post);
मैं एक उत्पादन वातावरण है, जो Google.com को अवरुद्ध कर दिया में इस कोड डाल दिया। अनुरोध पर, उन्होंने मुझे आईपी तक पहुंचने की अनुमति देकर Google सर्वर के साथ संचार की अनुमति दी: 74.125.236.52 - जो Google के आईपी में से एक है। मैंने इस प्रविष्टि को जोड़ने के लिए अपनी मेजबान फ़ाइल भी संपादित की।
फिर भी मैं यूआरएल तक नहीं पहुंच सका, जो मुझे आश्चर्य है। इसलिए मैं के साथ ऊपर कोड की जगह:
HttpPost post = new HttpPost("https://74.125.236.52/accounts/ClientLogin");
अब मैं इस तरह एक त्रुटि प्राप्त:
javax.net.ssl.SSLException: प्रमाण पत्र में होस्ट नाम से मेल नहीं खाती: <74.125.236.52>! = <www.google.com>
मुझे लगता है कि इस वजह से गूगल कई आईपी है। मैं उन सभी आईपी तक पहुंचने की अनुमति देने के लिए नेटवर्क व्यवस्थापक से नहीं पूछ सकता - मुझे यह पूरी सूची भी नहीं मिल सकती है।
अब मुझे क्या करना चाहिए? क्या जावा स्तर पर कोई कामकाज है? या यह पूरी तरह से नेटवर्क लड़के के हाथों में है?
SSL प्रमाणपत्र आमतौर पर एक विशिष्ट डोमेन * नाम * के साथ आता है जो इसे लागू होता है, और करने के लिए करता है, तो उस नाम से मेल नहीं खाता नाम का अनुरोध, आपका ग्राहक आपको चेतावनी देता है कि कनेक्शन सही ढंग से प्रमाणीकृत नहीं है।आप जांच सकते हैं कि क्या आपका ग्राहक आपको कनेक्शन के लिए एक स्पष्ट प्रमाणपत्र ओवरराइड निर्दिष्ट करने देता है। –
यूआरएल में होस्टनाम प्रमाणपत्र में होस्टनाम से मेल खाना चाहिए। आपको मेजबान फ़ाइल के साथ काम करने का प्रयास करना चाहिए। यदि नहीं, तो आप 74.125.236.52 के लिए google.com को स्वीकार करने के लिए प्रमाण पत्र सत्यापन दिनचर्या को ओवरराइड कर सकते हैं (इसे बहुत हल्का मत बनाओ!)। – Thilo
@ थिलो: सत्यापन दिनचर्या को ओवरराइड कैसे करें? – WinOrWin