Как настраивать протокол SSL в службе WCF, размещенной в IIS
В этом разделе описано, как настроить размещенную в IIS службу WCF для использования безопасности транспорта HTTP. Для безопасности транспорта HTTP требуется, чтобы SSL-сертификат был зарегистрирован в службах IIS. Если SSL-сертификат не установлен, для создания тестового сертификата можно использовать службы IIS. Затем необходимо добавить SSL-привязку для проекта веб-сайта и установить свойства проверки подлинности веб-сайта. Наконец, необходимо настроить службу WCF на использование протокола HTTPS.
Создание самозаверяющего сертификата
Откройте диспетчер служб IIS (inetmgr.exe) и выберите имя компьютера в левой части представления в виде дерева. В правой части экрана выберите сертификаты сервера
В окне сертификатов сервера щелкните ссылку "Создать самозаверяющий сертификат"....
Введите понятное имя самозаверяющего сертификата и нажмите кнопку "ОК".
Теперь в окне сертификатов сервера отображаются только что созданные самозаверяемые сведения о сертификате .
Созданный сертификат устанавливается в хранилище доверенных корневых центров сертификации.
Добавление привязки SSL
По-прежнему в диспетчере службы IIS разверните папку "Сайты", а затем папку "Веб-сайт по умолчанию" в представлении дерева в левой части экрана.
Щелкните привязки.... Ссылка в разделе "Действия" в правой верхней части окна.
В окне "Привязки сайта" нажмите кнопку "Добавить ".
В диалоговом окне "Добавление привязки сайта" выберите https для типа и понятное имя созданного самозаверяющего сертификата.
Настройка виртуального каталога для SSL
В диспетчере служб IIS выберите виртуальный каталог, содержащий безопасную службу WCF.
В центральной области окна выберите ssl-Параметры в разделе IIS.
В области SSL-Параметры выберите поле "Требовать SSL-проверка" и щелкните ссылку "Применить" в разделе "Действия" справа от экрана.
Настройка службы WCF для безопасности транспорта HTTP
В файле web.config службы WCF настройте привязку HTTP на использование безопасности транспорта, как показано в следующем фрагменте XML.
<bindings> <basicHttpBinding> <binding name="secureHttpBinding"> <security mode="Transport"> <transport clientCredentialType="None"/> </security> </binding> </basicHttpBinding> </bindings>
Укажите службу и конечную точку службы, как показано в следующем фрагменте XML.
<services> <service name="MySecureWCFService.Service1"> <endpoint address="" binding="basicHttpBinding" bindingConfiguration="secureHttpBinding" contract="MySecureWCFService.IService1"/> <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" /> </service> </services>
Пример
Ниже приведен полный пример файла web.config для службы WCF, использующей безопасность транспорта HTTP
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<services>
<service name="MySecureWCFService.Service1">
<endpoint address=""
binding="basicHttpBinding"
bindingConfiguration="secureHttpBinding"
contract="MySecureWCFService.IService1"/>
<endpoint address="mex"
binding="mexHttpsBinding"
contract="IMetadataExchange" />
</service>
</services>
<bindings>
<basicHttpBinding>
<binding name="secureHttpBinding">
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpsGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>