Я подключаюсь к веб-службе WCF с помощью создаваемого Java-клиента. Кто-то уже успешно построил клиенты WCF для подключения к этой службе. WSDL, доступный через HTTP, обеспечивает безопасность на уровне сообщений. WSDL, доступный через HTTPS, использует как TLS, так и безопасность на уровне сообщений. Я понимаю, что использование TLS поверх безопасности на уровне сообщений - это в основном двойное шифрование, но это ключевое требование.
Поскольку я могу правильно подключиться к службе HTTP, я считаю, что все проблемы с хранилищем доверенных сертификатов и хранилищем ключей решены.
Я подключаюсь к услуге, используя Metro 2.1.1. Я построил клиент в Eclipse и Netbeans. Я получаю WSDL с сайта HTTP и, используя wsimport (с флагом -extensions), успешно создаю и выполняю клиентов.
Когда я получаю WSDL с сайта HTTPS, я снова могу успешно построить обоих клиентов. Но когда я их выполняю - я получаю следующую ошибку:
Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: An error occurred when verifying security for the message.
at com.sun.xml.ws.fault.SOAP12Fault.getProtocolException(SOAP12Fault.java:225)
at com.sun.xml.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:122)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:119)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:89)
at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:140)
at $Proxy43.request(Unknown Source)
Единственное различие между двумя WSDL (один выбирается через HTTP, а другой через HTTPS) - это ссылка в WSDL на HTTPS: // против HTTP: //.
У меня нет легкого доступа к журналам службы WCF - обычно между запросом набора журналов и их просмотром возникает задержка в 3-6 часов.
Мой вопрос: кто-нибудь сталкивался с подобным обстоятельством - и я что-то упускаю здесь явно? Есть ли что-то в трассировке NetMon или Wireshark, которую я могу найти, чтобы увидеть, что проблема? Я боролся с этим в течение нескольких дней - любая помощь была бы очень признательна.