Конфигурация сертификата WCF с ASP.NET - PullRequest
0 голосов
/ 03 августа 2011

Вкратце, вот сценарий.У меня есть приложение ASP.NET, использующее проверку подлинности с помощью форм и пользовательский поставщик членства.Я создал клиента WCF и ASP.NET ServiceHost, используя ServiceHostFactory.Пока все работает отлично, но для развертывания этого в реальном мире мне нужно будет обеспечить его безопасность.Я не могу выяснить, как установить сертификат для службы.Я хочу использовать сертификат, уже связанный с приложением ASP.NET, на котором размещен мой сервис.

Как настроить сертификат таким образом, чтобы он автоматически устанавливал сертификат для сертификата веб-приложения хостинга без необходимости идентификации сертификата вручную.Было бы настоящим PITA, если бы пользователю пришлось устанавливать сборки WCF, вносить изменения в файл конфигурации и знать кое-что о том, какой сертификат установлен.

Вот то, что я изучил до сих пор, но покане удалось заставить его работать, и он не может быть изменен во время установки без перекомпиляции.

serviceHost.Credentials.ServiceCertificate.SetCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindByIssuerDistinguishedName, "mycertificate");

Существует ли ASP.NET Api, который бы возвращал сертификат, связанный с приложением хостинга, который я могу передатьSetCertificate?Кроме того, как мне справиться с ситуацией, когда сертификат не установлен, но я все еще хочу, чтобы WCF подключался, хотя и небезопасно?

1 Ответ

1 голос
/ 03 августа 2011

Это зависит от того, хотите ли вы использовать транспорт или безопасность на уровне сообщений.Если вы просто хотите, чтобы ваши веб-службы работали по протоколу https, как и любая другая веб-страница, то в конфигурации WCF вам не нужно указывать сертификат, вы просто включаете безопасность транспорта, например:

  <basicHttpBinding>
    <binding name="basicHttpsSecured" sendTimeout="00:02:00">
      <security mode="Transport">
        <transport clientCredentialType="None" />
      </security>
    </binding>
  </basicHttpBinding>

Тогдав IIS вы устанавливаете сертификат SSL на веб-сайте так же, как и для любого другого сайта ASP.NET.Если вы не размещали его через IIS, а вместо этого делали его самодостаточной службой Windows или чем-то вроде этого, то вам нужно было бы установить сертификат в своей конфигурации, но при размещении в IIS вы можете позволить IIS выполнять свою работу.

Если вместо этого вы хотите обеспечить безопасность на уровне сообщений, что означает, что вы переносите по незащищенному обычному протоколу HTTP, но содержимое вашего сообщения зашифровано, тогда вы должны установить

<security mode="Message">

напривязка и укажите сертификат, который будет использоваться для шифрования сообщения.Однако, похоже, вы говорите об использовании ssl / https для своего веб-сервиса.

...