2015-09-28 5 views
1

Почему веб-служба SOAP1.1, написанная в JAVA, может не распознать действительный сертификат, переданный клиентом WCF?Вызов службы Java SOAP 1.1 от клиента WCF

Мы получаем 500 ошибок от службы, что указывает на то, что служба не доверяет нашему сертификату. Может ли это быть чем-то связанным с реализацией WCF стандарта SOAP, отличным от того, что ожидает Java-сервис?

Вот WCF конфигурации:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 
    <system.serviceModel> 

    <behaviors> 
     <endpointBehaviors> 
     <behavior name="ourCert"> 
      <clientCredentials> 
      <clientCertificate x509FindType="FindBySubjectName" findValue="MyCompany"/> 
      </clientCredentials> 
     </behavior> 
     </endpointBehaviors> 
    </behaviors> 

    <bindings> 
     <customBinding> 
     <binding name="wsHttpSoap11" > 
      <textMessageEncoding messageVersion="Soap11" /> 
      <httpsTransport requireClientCertificate="true" /> 
     </binding> 
     </customBinding> 
    </bindings> 

    <client> 
     <endpoint address="https://{site}.com/site.wsdl" 
       binding="customBinding" 
       behaviorConfiguration="ourCert" 
       bindingConfiguration="wsHttpSoap11" 
       contract="ServiceContract"> 
     </endpoint> 
    </client> 

    </system.serviceModel> 

    <system.net> 
    <defaultProxy useDefaultCredentials="true" /> 
    </system.net> 

</configuration> 
+0

500 будет просто означать внутреннюю ошибку сервера. У вас есть журнал, показывающий, что внутренняя ошибка сервера - это проблема с сертификатом или это предположение? –

+0

Я рекомендую использовать станцию ​​для стеклянной рыбы для поколения java-клиента. Он заявляет о совместимости с WCF https://metro.java.net/guide/ch01.html#ahiar – user1516873

+0

500 - это просто их способ сообщить нам, что что-то пошло не так. У вас нет доступа к журналам на стороне сервиса, иначе это не будет проблемой :) – user1514042

ответ

1

Свидетельство сверяются доверия цепи так производящая основа не является актуальным. Также обратите внимание, что вы используете сертификат уровня транспорта, поэтому SOAP менее вероятно, будет источником ошибки.

Я предлагаю вам сделать следующее:

  1. Построить рабочий Java-клиент для этой службы (либо создать сертификат с помощью OpenSSL или использовать один у вас есть, если это в формате JKS). Убедитесь, что клиент работает.
  2. Конвертировать сертификат jks в pfx и использовать его с клиентом WCF. Клиент WCF также должен работать.

Если WCF по-прежнему терпит неудачу, чем сравнение исходящего SOAP, сгенерированного клиентом java и wcf (вы можете использовать скрипач для его захвата). Это может намекнуть на другие различия (возможно, вам действительно нужен сертификат сообщения, а не транспорт, возможно, ваша версия для мыла несовместима и т. Д.).

+0

спасибо за это, но мы не контролируем процессы со стороны службы. нам сказали, что наш сертификат доверен службой. проблема, вероятно, сводится к недопониманию между клиентом WCF и службой Java. Просто хотел знать, в чем проблема - проблема неправильного толкования.стандартов WS по WCF или что-то еще – user1514042

+0

в этом случае создайте рабочий Java-клиент и сравните его вывод с выходом wcf –

+0

также обратите внимание, действительно ли используется только сертификат транспорта, который можно отладить эту проблему, инициировав на сервере HttpRequest или WebClient (ошибка происходит на уровне транспорта, даже до того, как становится актуальным мыло) –