เกิดจาก: java.io.IOException: ชื่อโฮสต์ HTTPS ผิด: ควรเป็น ‹www.example.com› [ซ้ำกัน]

ฉันกำลังพยายามเข้าถึง WSDL ด้วยแอปพลิเคชัน java ที่ https://www.example.com:5242/calculator/calculatorport?wsdl แต่ได้รับข้อผิดพลาดที่กล่าวมาข้างต้น แต่เมื่อฉันป้อน URL เดียวกันในเบราว์เซอร์ ฉันจะสามารถเข้าถึง WSDL ได้

สแต็กเทรซแบบเต็มมีดังนี้: -

javax.xml.ws.WebServiceException: Failed to access the WSDL at: https://www.example.com:5242/calculator/calculatorport?wsdl. It failed with:
        HTTPS hostname wrong:  should be <www.example.com>.
        at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.tryWithMex(RuntimeWSDLParser.java:163)
        at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:145)
        at com.sun.xml.internal.ws.client.WSServiceDelegate.parseWSDL(WSServiceDelegate.java:267)
        at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:230)
        at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:178)
        at com.sun.xml.internal.ws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:93)
        at javax.xml.ws.Service.<init>(Service.java:67)
        at com.webservices.calculator.CalculatorService.<init>(CalculatorService.java:46)
        at com.testcl.Transfer.calculate(Transfer.java:118)
        at com.testcl.Transfer.run(Transfer.java:213)
        at java.lang.Thread.run(Thread.java:738)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:908)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:931)
        at java.lang.Thread.run(Thread.java:738)
Caused by: java.io.IOException: HTTPS hostname wrong:  should be <www.example.com>
        at com.ibm.net.ssl.www2.protocol.https.c.b(c.java:69)
        at com.ibm.net.ssl.www2.protocol.https.c.afterConnect(c.java:148)
        at com.ibm.net.ssl.www2.protocol.https.d.connect(d.java:12)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1207)
        at com.ibm.net.ssl.www2.protocol.https.b.getInputStream(b.java:32)
        at java.net.URL.openStream(URL.java:1022)
        at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.createReader(RuntimeWSDLParser.java:805)
        at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.resolveWSDL(RuntimeWSDLParser.java:263)
        at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:130)

สิ่งที่อาจเป็นปัญหา ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม

แก้ไข: วิธีแก้ปัญหาที่กล่าวถึงในคำถามที่คล้ายกันไม่ถูกต้องในกรณีของฉันเนื่องจากใบรับรองที่ออกนั้นเป็นของ CN www.example.com เท่านั้น


person Vishal Tyagi    schedule 27.09.2016    source แหล่งที่มา
comment
คุณสามารถเชื่อมต่อกับ WSDL URL โดยใช้ไคลเอ็นต์ Java แบบธรรมดาที่ทำงานบน Java เวอร์ชันเดียวกันได้หรือไม่   -  person Anand Bhat    schedule 27.09.2016
comment
@AnandBhat ไม่ ไม่สามารถเชื่อมต่อได้   -  person Vishal Tyagi    schedule 27.09.2016
comment
หากไม่มีชื่อโดเมน ก็ยากที่จะทราบว่าเหตุใด Java จึงไม่เชื่อถือใบรับรอง Java trust store ที่คุณใช้มีรูท CA และเซิร์ฟเวอร์ส่งสายใบรับรองทั้งหมด รวมถึงใบรับรองระดับกลางหรือไม่   -  person Anand Bhat    schedule 27.09.2016
comment
@AnandBhat ฉันจะแน่ใจได้อย่างไรว่าเซิร์ฟเวอร์ส่งเชนเต็ม ฉันมีใบรับรองที่เพิ่มในที่เก็บคีย์ java   -  person Vishal Tyagi    schedule 28.09.2016
comment
@AnandBhat ฉันเพิ่งได้รับใบรับรองที่เพิ่มในที่เก็บคีย์ java และมี ‹CN=exapmle.com› ซึ่งฉันคิดว่าควรเป็น ‹implws.example.com› (โปรดทราบว่า URl จริงของฉันซึ่งฉัน morphed สำหรับ เพื่อความเป็นส่วนตัวมีหมวดย่อยดังนี้:- implws) แก้ไขฉันถ้าฉันผิด   -  person Vishal Tyagi    schedule 30.09.2016