Disebabkan oleh: java.io.IOException: Nama host HTTPS salah: seharusnya ‹www.example.com› [duplikat]

Saya mencoba mengakses WSDL dengan aplikasi Java yang terletak di https://www.example.com:5242/calculator/calculatorport?wsdl tetapi mendapatkan Kesalahan yang disebutkan di atas. Tetapi ketika saya memasukkan URL yang sama di browser saya dapat mengakses WSDL.

Stacktrace lengkap berikut: -

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)

Apa masalahnya, Bantuan apa pun akan dihargai.

EDIT: Solusi yang disebutkan dalam pertanyaan serupa tidak valid dalam kasus saya karena Sertifikat yang diterbitkan hanya untuk CN www.example.com saja.


person Vishal Tyagi    schedule 27.09.2016    source sumber
comment
Bisakah Anda terhubung ke URL WSDL menggunakan klien Java sederhana yang berjalan pada versi Java yang sama?   -  person Anand Bhat    schedule 27.09.2016
comment
@AnandBhat Tidak, tidak dapat terhubung   -  person Vishal Tyagi    schedule 27.09.2016
comment
Tanpa nama domain, akan sulit untuk mengetahui mengapa Java tidak mempercayai sertifikat tersebut. Apakah penyimpanan kepercayaan Java yang Anda gunakan berisi root CA dan apakah server mengirimkan rantai sertifikat lengkap, termasuk sertifikat perantara?   -  person Anand Bhat    schedule 27.09.2016
comment
@AnandBhat Bagaimana cara memastikan server mengirimkan rantai penuh? Saya memiliki sertifikat yang ditambahkan ke keystore Java   -  person Vishal Tyagi    schedule 28.09.2016
comment
@AnandBhat Saya baru saja mendapatkan sertifikat yang ditambahkan ke keystore Java dan memiliki ‹CN=exapmle.com› . Yang menurut saya seharusnya ‹implws.example.com› (harap perhatikan bahwa URl saya yang sebenarnya yang saya ubah untuk demi privasi memiliki sub sebagai :- implws). Koreksi saya jika saya salah.   -  person Vishal Tyagi    schedule 30.09.2016