अमेज़ॅन ने 1.3.21 संस्करण में अपने एडब्ल्यूएस जावा एसडीके में एसएसएल सुरक्षा को "अपग्रेड" किया। इसने अमेज़ॅन के एडब्लूएस जावा एपीआई का उपयोग करते समय किसी भी एस 3 बाल्टी को एक्सेस किया है जिसमें उनके नाम की अवधि है। मैं संस्करण 1.3.21.1 का उपयोग कर रहा हूं जो कि अक्टूबर/5/2012 तक चालू है। मैंने नीचे दिए गए मेरे उत्तर में कुछ समाधान प्रदान किए हैं लेकिन मैं इस मुद्दे पर अतिरिक्त कार्य ढूंढ रहा हूं।जावा एपीआई का उपयोग कर एस 3/एडब्ल्यूएस के साथ एसएसएल समस्याएं: "सर्टिफिकेट में होस्टनाम मेल नहीं खाता"
यदि आपको यह त्रुटि मिल रही है, तो आपको अपने अपवाद/लॉग में निम्न संदेश की तरह कुछ दिखाई देगा। इस उदाहरण में, बाल्टी नाम foo.example.com
है।
INFO: Unable to execute HTTP request: hostname in certificate didn't match:
<foo.example.com.s3.amazonaws.com> != <*.s3.amazonaws.com>
OR <*.s3.amazonaws.com> OR <s3.amazonaws.com>
at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:220)
at org.apache.http.conn.ssl.StrictHostnameVerifier.verify(StrictHostnameVerifier.java:61)
at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:149)
at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:130)
at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:390)
आप एडब्ल्यूएस S3 चर्चा मंच पर इस समस्या का प्रलेखन देख सकते हैं:
https://forums.aws.amazon.com/thread.jspa?messageID=387508񞦴
अमेज़न के समस्या के जवाब निम्नलिखित है।
हम इस नामकरण पैटर्न के साथ बाल्टी के लिए बाल्टी एड्रेसिंग (नए वर्चुअल होस्ट स्टाइल एड्रेसिंग के बजाय) की पुरानी पथ शैली विधि का उपयोग करके इसे ठीक करने में सक्षम होना चाहिए। हम फिक्स पर शुरू कर देंगे और सुनिश्चित करेंगे कि हमारे आंतरिक एकीकरण परीक्षण में अवधि वाले बाल्टी नामों के लिए टेस्ट केस होंगे।
कोई कामकाज या अन्य समाधान? किसी भी प्रतिक्रिया के लिए धन्यवाद।
निष्पक्ष होने के लिए, यदि आप अपने यूआरएल में 'https: //foo.example.com.s3.amazonaws.com/...' का अनुरोध करते हैं, तो '* .s3.amazonaws.com' उस कवर को कवर नहीं करता है होस्ट का नाम: वाइल्डकार्ड [चश्मा] (http://tools.ietf.org/html/rfc2818#section-3.1) के अनुसार बिंदुओं में फैलता नहीं है ("**। a.com foo.a से मेल खाता है। कॉम लेकिन bar.foo.a.com * नहीं ")। अमेज़ॅन क्या कर सकता है '*। *। *। S3.amazonaws.com' के लिए प्रमाण पत्र प्राप्त करें। – Bruno
सहमत @ ब्रूनो। सवाल क्या बात कर रहा है हालांकि उनके जावा एपीआई का उपयोग कर रहा है। असल में मैं अपने एपीआई का उपयोग एक बाल्टी के साथ कुछ भी नहीं कर सकता जिसमें इसकी अवधि होती है। – Gray
बस पढ़ना [आरएफसी 6125] (http://tools.ietf.org/html/rfc6125#section-6.4.3) (सर्वोत्तम अभ्यास कल्पना, लेकिन वास्तव में अभी तक लागू नहीं किया गया है)। मुझे यकीन नहीं है कि कैसे '*। *। *। कुछ 'नियम 1 के साथ अनुमति दी जाएगी। सही बात (यदि आपको वास्तव में एक कस्टम हैंडलर की आवश्यकता है) वास्तव में अपना स्वयं का सत्यापनकर्ता लिखना होगा जो सही पैटर्न की अपेक्षा करता है । ALLOW_ALL_HOSTNAME_VERIFIER के साथ समस्या यह है कि यह एमआईटीएम हमलों की अनुमति देता है। – Bruno