Тестирование WCF Transport Security с удаленного компьютера для приложения Silverlight - PullRequest
0 голосов
/ 01 сентября 2009

Мне удалось настроить безопасность транспорта WCF для нашего веб-сервиса входа в систему, используя самозаверяющий сертификат, выданный локальному хосту. Я добавил самоподписанный сертификат в качестве доверенного корневого центра сертификации, чтобы IE не стонал о недоверенных сертификатах. При тестировании на localhost все работает нормально, и поскольку мы используем localhost, это также позволяет всем разработчикам без проблем протестировать сервис со своих компьютеров.

Однако сейчас я пытаюсь заставить это работать на нашем сервере удаленного тестирования. При запуске на удаленном сервере сертификат localhost, очевидно, больше не будет работать. Поэтому я создал самозаверяющий тестовый сертификат для серверного компьютера с использованием IIS7 и настроил IIS для использования этого сертификата для связи https на веб-сайте. Я также добавил это в хранилище доверенных корневых сертификатов сервера. Затем я изменяю конфигурацию поведения WCF-сервера на теперь , а не , ищите сертификат localhost больше, но чтобы найти его, связанный с DNS-именем машины, как показано ниже:

<behavior name="SSL">
  <serviceCredentials>
    <serviceCertificate
      findValue="prods-build.mydomain.co.za"
      storeLocation="LocalMachine"
      storeName="My"
      x509FindType="FindBySubjectName" />
  </serviceCredentials>
</behavior>

Это поведение затем связывается со службой входа в систему в файле web.config:

  <service behaviorConfiguration="SSL" name="Pragma.OnKey.Services.Common.LogonService">
    <endpoint address="" bindingConfiguration="pragmaSSL" binding="basicHttpBinding" name="Silverlight" contract="Pragma.OnKey.Services.Common.ILogonService" />
  </service>

Для справки я также включил используемую конфигурацию привязки:

   <binding name="pragmaSSL">
      <security mode="Transport"/>
    </binding>

Когда я запускаю тест из браузера, используя полное доменное имя на самом сервере, все работает нормально. Fiddler показывает HTTPS-соединение, устанавливаемое для вызова веб-службы входа в систему. Однако, как только я пытаюсь выполнить тот же тест, используя полное доменное имя с удаленной машины, я получаю обычную ошибку «Ошибка при попытке сделать запрос к URI https://myserver/Services/Logon.svc ..check clientaccesspolicy.xml» , Clientaccesspolicy.xml (см. Ниже) находится в корневой папке веб-сайта, и помните, что все это прекрасно работает до Я пытаюсь получить доступ к службе удаленно, используя полное имя DNS.

<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from http-request-headers="SOAPACTION">      
        <domain uri="http://*"/>  
        <domain uri="https://*"/>
      </allow-from>
      <grant-to>
        <resource path="/" include-subpaths="true"/>
      </grant-to>
    </policy>
  </cross-domain-access>
</access-policy>

Итак, мой вопрос: что я делаю не так? Какую часть этой головоломки мне не хватает? Как я могу протестировать реализацию SSL на удаленном компьютере, используя самозаверяющий тестовый сертификат и клиент Silverlight?

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

Спасибо Carel

1 Ответ

1 голос
/ 01 сентября 2009

Что вы сделали на клиентском компьютере, чтобы заставить его доверять самоподписанному (а следовательно, недоверенному) сертификату с сервера? Вы добавили сертификат сервера в доверенное хранилище КЛИЕНТА?

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