Вызвано: 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)

В чем может быть проблема, буду признателен за любую помощь.

EDIT: Решение, упомянутое в аналогичном вопросе, недействительно в моем случае, поскольку выданный сертификат относится только к CN www.example.com.


person Vishal Tyagi    schedule 27.09.2016    source источник
comment
Можно ли подключиться к URL-адресу WSDL с помощью простого клиента Java, работающего на той же версии Java?   -  person Anand Bhat    schedule 27.09.2016
comment
@AnandBhat Нет, не могу подключиться   -  person Vishal Tyagi    schedule 27.09.2016
comment
Без имени домена было бы трудно понять, почему Java не доверяет сертификату. Содержит ли используемое хранилище доверия Java корневой центр сертификации и отправляет ли сервер полную цепочку сертификатов, включая промежуточные сертификаты?   -  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-адрес, который я преобразовал для ради конфиденциальности есть подпункт :- implws). Поправьте меня, если я ошибаюсь.   -  person Vishal Tyagi    schedule 30.09.2016