मैं इस तथ्य को अनदेखा करने के लिए अपाचे कॉमन्स एचटीपी क्लाइंट लाइब्रेरी (संस्करण 3.1) प्राप्त करने का प्रयास कर रहा हूं कि सर्वर प्रमाणपत्र को भरोसेमंद के रूप में स्थापित नहीं किया जा सकता है (जैसा कि फेंक दिया गया अपवाद javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
से प्रमाणित है)।अपाचे कॉमन्स एचटीपी क्लाइंट 3.1 कैसे बनाएं HTTPS प्रमाणपत्र अमान्यता को अनदेखा करें?
मैं Make a connection to a HTTPS server from Java and ignore the validity of the security certificate के साथ-साथ Disable Certificate Validation in Java SSL Connections, मिला लेकिन पहले करने के लिए स्वीकार किए जाते हैं जवाब, HttpClient 4.0 (दुर्भाग्य से मैं अपग्रेड नहीं कर सकते के लिए है जब तक कोई कैसे है कि एक ही के दो विभिन्न संस्करणों का उपयोग करने की दिशा में मुझे इंगित कर सकते हैं पुस्तकालय एक ही परियोजना के भीतर), हालांकि इसमें another answer with little more than a dead link that supposedly went to a 3.x solution है। दूसरे पृष्ठ पर कोड का कोई प्रभाव नहीं पड़ता है जब मैं इसका थोड़ा समायोजित संस्करण उपयोग करता हूं (मूल रूप से, अज्ञात लोगों की इनलाइन का उपयोग करने के बजाय कक्षाओं को पुराने फैशन में घोषित करना, साथ ही साथ TLS
पर SSL
के अतिरिक्त आवेदन करना, उदाहरण कोड में किए गए डिफ़ॉल्ट HTTPS सॉकेट फैक्ट्री के लिए SSL
का उपयोग करना)।
अधिमानतः, मैं, कुछ है कि है thread-/उदाहरण चौड़ा करना चाहते हैं ताकि किसी भी HttpClient
उदाहरण (और/या संबंधित वर्ग) मेरी सर्वलेट कोड के भीतर से बनाया जा रहा ( नहीं एक और सर्वलेट में चल रहा एक ही कंटेनर) लक्स सर्टिफिकेट सत्यापन तर्क का उपयोग करेगा, लेकिन इस बिंदु पर मुझे लगता है कि जब तक यह स्व-हस्ताक्षरित प्रमाण पत्र को मान्य मानता है तब तक कुछ भी ऐसा करना शुरू हो जाएगा।
हां, मुझे पता है कि सुरक्षा प्रभाव हैं, लेकिन एकमात्र कारण है कि मुझे इसकी आवश्यकता क्यों है परीक्षण उद्देश्यों के लिए। विचार एक कॉन्फ़िगरेशन विकल्प को कार्यान्वित करना है जो नियंत्रित करता है कि सामान्य रूप से अविश्वसनीय प्रमाणपत्र विश्वसनीय हैं या नहीं, और डिफ़ॉल्ट रूप से "गैर-भरोसेमंद सर्वर प्रमाणपत्रों पर भरोसा न करें" में इसे छोड़ दें। इस तरह इसे आसानी से विकास में चालू या बंद किया जा सकता है, लेकिन इसे उत्पादन में करने के लिए किसी के रास्ते से बाहर निकलने की आवश्यकता होगी।
हां, 3.1 ने आपके द्वारा उदाहरण के प्रोटोकॉल कन्स्ट्रक्टर को बहिष्कृत कर दिया है, और इसमें स्पष्ट रूप से कोई HttpConnection # setProtocol विधि नहीं है। करुणा, यह आशाजनक लग रहा था। :( –
कन्स्ट्रक्टर को 3.0.1 में भी बहिष्कृत किया गया है;) अपाचे स्रोत भंडार के अनुसार 'HttpConnection' अभी भी 3.1 में' setProtocol' विधि है: http://svn.apache.org/viewvc/httpcomponents/oac.hc3x /tags/HTTPCLIENT_3_1/src/java/org/apache/commons/httpclient/HttpConnection.java?view=markup – Gandalf
कारखाने को 'प्रोटोकॉल सॉकेट फैक्टरी' में डाला जा सकता है, जो केवल एक उग्र है और इसलिए यदि आवश्यक नहीं है तो वे अव्यवस्थित कन्स्ट्रक्टर को हटा दें , तो यह पहले से ही गैर-बहिष्कृत नियंत्रक का उपयोग करता है, मैं अपनी पोस्ट अपडेट करूंगा। – Gandalf