WCF - служба SSL - PullRequest
       0

WCF - служба SSL

4 голосов
/ 29 июня 2011

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

The SSL settings for the service 'SslRequireCert' does not match those of the IIS 'None'. 

Моя конфигурация выглядит следующим образом:

<security mode="Transport">
        <transport clientCredentialType="Certificate" />
      </security>

Я использую IIS Express, и у меня установлен флажок «Включить SSL» (проверено в WebMatrix).

Есть идеи, что еще мне нужно сделать?

Ответы [ 3 ]

5 голосов
/ 30 июня 2011

Хорошо. Похоже, мне нужно обновить файл applicationhost.config (в IIS Express). Я добавил местоположение для своего сайта и установил sslFlags = "Ssl, SslAcceptCert, SslRequireCert". Это позволило мне включить SSL-аутентификацию. Затем, когда я попытался получить доступ к сервису с помощью клиента, я получил сообщение об ошибке при установлении доверительных отношений. Это было потому, что у меня не было сертификата сервера в папке доверенных лиц (или это мог быть клиент, я не уверен, так как служба и клиент находятся на моем локальном ПК). После этого служба будет работать, однако мы не хотим передавать наш сертификат клиенту, поэтому я в конечном итоге использовал режим безопасности TransportWithMessageCredential.

1 голос
/ 21 февраля 2014

Это не имеет абсолютно никакого отношения к отсутствию линии mex, если только она не настроена неправильно, в этом случае ее удаление будет иметь эффект, но IIS все равно может выдать ту же ошибку.

Убедитесь, что в IIS есть настройки SSL «Требовать SSL» и «Принять» (проще) или «Требовать» пользовательские сертификаты - затем перезапустите IIS. Хотя IIS говорит, что изменения применяются - по моему опыту, они не всегда - или, по крайней мере, не сразу.

1 голос
/ 29 июня 2011

Измените свое поведение, включив SSL, как показано ниже:

<behaviors>
  <serviceBehaviors>
    <behavior name="MyService">
      <serviceMetadata httpGetEnabled="True" httpsGetEnabled="True" />
      <serviceDebug includeExceptionDetailInFaults="False" />
    </behavior>
  </serviceBehaviors>
</behaviors>

и удалите

<security mode="Transport">
        <transport clientCredentialType="Certificate" />
      </security>

Это означает, что вы будете использовать аутентификацию сертификата

...