Настройка безопасности транспорта WCF для IIS6 через SSL - PullRequest
0 голосов
/ 28 июня 2011

Я пытался настроить безопасность транспорта WCF с использованием SSL на IIS6.

Клиент находится на отдельном компьютере в том же домене.

Я понимаю предпосылку сертификатов,root CA и т. д., имеют рабочий набор сертификатов для защиты сообщений и могут использовать эти пробники в одной и той же среде.(Я не многому научился за последнюю неделю:)

Мне приснился кошмар, когда я пытаюсь заставить моего клиента проходить аутентификацию на службе IIS 6, когда я переключаю его на SSL.Всегда получая «анонимная аутентификация не разрешена» при вызове.

В IIS у меня есть

  • корневой сертификат CA, установленный на сайте для SSL-порта 443 (если я просматриваю https:// страница svc я вижу замок IE, и на странице написано, что вам нужен сертификат для связи)

при защищенной связи у меня

  • требуется SSL-канал
  • требуется 128-битное шифрование
  • требуется клиентские сертификаты
  • включить сопоставление клиентских сертификатов (настроено сопоставление «много к 1» с учетной записью администратора в поле IIS, для которого теперь сопоставлены субъекты сертификата)Поле O)

в режиме безопасности веб-сайта (проверка подлинности и контроль доступа)

  • Анонимный доступ = ВКЛ.
  • Встроенная проверка подлинности Windows = ВЫКЛ.
  • basic Authentication = ON

Для клиента wsHttpBinding у меня есть сертификат, готовый для аутентификации, и пользовательское поведение конечной точки для предоставления этой информации, но я не думаю, что она получает этодалеко!

ОБНОВЛЕННЫЙ КОНФИГ СЕРВЕРА

<system.serviceModel>
    <bindings>
        <wsHttpBinding>
            <binding name="CertificateWithTransport">
                <security mode="Transport">
                    <transport clientCredentialType="Certificate"/>
                </security>
            </binding>
        </wsHttpBinding>
    </bindings>
    <services>
        <service name="WCFServiceCertificate.Service1" behaviorConfiguration="credentialConfig">                
            <endpoint address="https://svnvmig02/Service1.svc" 
                        binding="wsHttpBinding" 
                        bindingConfiguration="CertificateWithTransport" 
                        contract="WCFServiceCertificate.IService1">
            </endpoint>
        </service>
    </services>
    <behaviors>
        <serviceBehaviors>
            <behavior name="credentialConfig">                   
                <serviceMetadata httpsGetEnabled="true" httpGetEnabled="false"/>                    
                <serviceDebug includeExceptionDetailInFaults="false"/>
            </behavior>
        </serviceBehaviors>
    </behaviors>
</system.serviceModel>

ОБНОВЛЕННЫЙ КОНФИГ КЛИЕНТА

<system.serviceModel>
    <bindings>
        <wsHttpBinding>
            <binding name="WSHttpBinding_IService1">
                <security mode="Transport">
                    <transport clientCredentialType="Certificate" />
                </security>
            </binding>
        </wsHttpBinding>
    </bindings>
    <client>
        <endpoint address="https://svnvmig02/Service1.svc" binding="wsHttpBinding" behaviorConfiguration="CustomBehavior"
            bindingConfiguration="WSHttpBinding_IService1" contract="ServiceReference1.IService1"
            name="WSHttpBinding_IService1">
        </endpoint>
    </client>
    <behaviors>
        <endpointBehaviors>
            <behavior name="CustomBehavior">
                <clientCredentials>
                    <clientCertificate findValue="svnvmig02" x509FindType="FindBySubjectName" storeLocation="LocalMachine" storeName="My"/>
                    <serviceCertificate>
                        <authentication certificateValidationMode="PeerTrust"/>
                    </serviceCertificate>
                </clientCredentials>
            </behavior>
        </endpointBehaviors>
    </behaviors>
</system.serviceModel>  

РЕДАКТИРОВАТЬ: Вероятно, стоит упомянуть, что мои проекты VS 3.5, но IIS6 работает .net4

С измененным конфигом (спасибо Fabio;) я могу теперь IE просматривать адрес https://svnvmig01/Service1.svc с клиентского компьютера и видетьсгенерированная svc-страница, которая позволяет мне нажимать на wsdl URl, который также доступен.

Большинство страниц, которые я нашел в сети, относятся к самострахованию или IIS7 .... Я надеюсь, что поддержка IIS7лучше;)

Любая помощь будет принята с благодарностью:)

Ответы [ 2 ]

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

Я думаю, что ваша проблема может заключаться в том, что у вас установлен IIS:

Анонимный доступ = ВЫКЛ

Я использую транспортную безопасность на нескольких своих серверах, иу всех IIS6 эта настройка включена, а не выключена.Это также соответствует сообщению об ошибке, которое вы предоставили:

«анонимная аутентификация не разрешена»

Без отключения доступа к IIS IIS либо попросит пользователя ввести имя пользователя /пароль или передайте учетные данные windows / active directory / kerberos.

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

Ваша конфигурация включает в себя:

https://svnvmig02:8091/Service1.svc

Обычный порт для ssl - 443.

Возможно, запрос не направляется на сайт, на который вы ожидаете. Поэтому вы получаете и неожиданное сообщение об ошибке.

Проверьте журналы IIS, чтобы убедиться, какой сайт получает запрос.

...