Использование веб-службы SOAP: «Сертификат службы не предоставлен. Укажите сертификат службы в ServiceCredentials». - PullRequest
0 голосов
/ 19 февраля 2019

Я борюсь с использованием веб-службы SOAP 1.2 через HTTPS, где я должен проходить аутентификацию с использованием сертификата.Итак, я получил * .p12 (PKCS12) клиентский сертификат (выданный КОМПАНИИ, выданный DOMAIN.COM), который подписан эмитентом (выдан DOMAIN.COM, выдан DOMAIN.COM).

MyФайл app.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.serviceModel>
        <bindings>
            <customBinding>
                <binding name="DistributorServiceBinding">
                  <security authenticationMode="AnonymousForCertificate">
                    <issuedTokenParameters />
                    <localClientSettings />
                    <localServiceSettings />
                    <secureConversationBootstrap />
                  </security>
                  <textMessageEncoding messageVersion="Soap12" />
                  <httpsTransport />
                </binding>
            </customBinding>
        </bindings>
        <client>
            <endpoint address="https://subdomain.domain.com/*/*/*"
                binding="customBinding" bindingConfiguration="DistributorServiceBinding"
                contract="*" name="DistributorServicePort" />
        </client>
    </system.serviceModel>
</configuration>

Когда я пытаюсь поместить некоторые данные через веб-службу, я получаю следующую ошибку:

Сертификат службы не предоставлен.Укажите сервисный сертификат в ServiceCredentials

И здесь у меня возникает первая проблема:

  • Какой сертификат мне следует установить здесь?Это тот, который я импортировал из файла * .p12, или это совершенно другой сертификат, который я должен получить от владельца сервиса?

  • Если данные отправляются в одну сторону - я только отправляю данные, но не получаю их - могу ли я отключить проверку сервисного сертификата?

Я пытался использовать сертификат из моего * .p12 файла, который выдается DOMAIN.COM и подписывает мой клиентский сертификат, но затем я получаю эту ошибку:

Проверка идентификации не удалась дляисходящее сообщение.Ожидаемый идентификатор DNS удаленной конечной точки был «SUBDOMAIN.DOMAIN.COM», но удаленная конечная точка предоставила DNS-запрос «DOMAIN.COM».Если это допустимая удаленная конечная точка, вы можете исправить проблему, явно указав DNS-идентификатор «DOMAIN.COM» в качестве свойства Identity EndpointAddress при создании прокси канала.

И вот моя вторая проблема:

  • Должен ли я использовать упомянутый сертификат в качестве сервисного сертификата?Должно ли оно быть выдано SUBDOMAIN.DOMAIN.COM или * .DOMAIN.COM вместо DOMAIN.COM, поэтому является ли это ошибкой владельца WS?
  • Должен ли я запросить сертификат, который выдается на * .DOMAIN.COM и используется владельцем на стороне службы?

Буду крайне признателен за любую помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...