Возможно, ошибка конфигурации SSL WCF

2

Попытка заставить HelloWorld работать через SSL. Прочитайте все эти документы:

Все, что я знаю, это то, что сертификат создается и развертывается правильно (оба сертификата фактически). Тем не менее, я думаю, что что-то не так с моим web.config(извините, не может быть более конкретным на данный момент). Это похоже на отсутствие прослушивания сервера на 443, или клиент ожидает http вместо https. Может ли кто-нибудь указать мне на соответствующий ресурс и/или сообщить, что я делаю неправильно?

Web.config находится здесь:

<?xml version="1.0" encoding="utf-8" ?>

<configuration>
  <appSettings>
    <add key="HTTPBaseAddress" value=""/>
  </appSettings>
  <system.serviceModel>
    <services>
      <service behaviorConfiguration="MyServiceTypeBehaviors" name="MyWCFServices.HelloWorldService">
        <clear />
        <endpoint address="mex" binding="mexHttpBinding" name="mexEndpoint" contract="IMetadataExchange" listenUriMode="Explicit">
          <identity>
            <dns value="localhost" />
            <certificateReference storeName="My" storeLocation="LocalMachine" x509FindType="FindBySubjectDistinguishedName" />
          </identity>
        </endpoint>
        <endpoint address="" binding="wsHttpBinding" bindingConfiguration="" name="SSLendpoint" contract="MyWCFServices.IHelloWorldService">
          <identity>
            <dns value="localhost" />
            <certificateReference x509FindType="FindByThumbprint" findValue="‎82a39faaeb18bf9585b334ca83264add3d5b26ee" />
          </identity>
        </endpoint>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="MyServiceTypeBehaviors" >
          <serviceMetadata httpGetEnabled="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

Клиентский app.config находится здесь:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.serviceModel>
        <bindings>
            <wsHttpBinding>
                <binding name="NoSecurity">
                    <security mode="None" />
                </binding>
                <binding name="SSLsecurity">
                    <security mode="Transport">
                        <transport clientCredentialType="None" />
                        <message clientCredentialType="Certificate" /
                    </security>
                </binding>
            </wsHttpBinding>
        </bindings>
        <client>
            <endpoint address="https://localhost:443/HelloWorldSSL/HelloWorldService.svc"
                binding="wsHttpBinding" bindingConfiguration="" contract="IHelloWorldService"
                name="wsHttpBinding_IHelloWorldService" />
        </client>
    </system.serviceModel>
</configuration>

Если какая-либо дополнительная информация/снимок экрана требуется - я с радостью предоставит ее (как обычно). Надеюсь, что это ответный вопрос:)

Теги:
ssl
wcf
configuration

1 ответ

3
Лучший ответ

Ваша конфигурация неверна. Вы не определяете настраиваемую конфигурацию привязки в своей конечной точке, поэтому HTTPS не используется. Используйте это для сервера:

<bindings>
  <wsHttpBinding>
    <binding name="SSLSecurity">
      <security mode="Transport">
        <transport clientCredentialType="None" />
      </security>
    </binding>
  </wsHttpBinding>
</bindings>
<behaviors> 
  <serviceBehaviors> 
    <behavior name="MyServiceTypeBehaviors" > 
      <serviceMetadata httpGetEnabled="true" /> 
    </behavior> 
  </serviceBehaviors> 
</behaviors> 
<services> 
  <service behaviorConfiguration="MyServiceTypeBehaviors" 
    name="MyWCFServices.HelloWorldService"> 
    <endpoint address="mex" binding="mexHttpBinding" name="mexEndpoint" 
       contract="IMetadataExchange" listenUriMode="Explicit" /> 
    <endpoint address="" binding="wsHttpBinding" bindingConfiguration="SSLSecurity" 
       name="SSLendpoint" contract="MyWCFServices.IHelloWorldService" /> 
  </service> 
</services> 

Для использования клиентом:

<bindings>   
  <wsHttpBinding>     
    <binding name="SSLSecurity">   
      <security mode="Transport">   
        <transport clientCredentialType="None" />   
      </security>   
    </binding>   
  </wsHttpBinding>   
</bindings>   
<client>   
  <endpoint address="https://localhost:443/HelloWorldSSL/HelloWorldService.svc"    
     binding="wsHttpBinding" bindingConfiguration="SSLSecurity"   
     contract="IHelloWorldService" name="wsHttpBinding_IHelloWorldService" />   
</client> 
  • 0
    спасибо - это решило некоторые проблемы (с несколькими настройками). однако теперь появляется другая ошибка: удаленный сертификат недействителен в соответствии с процедурой проверки. Но об этом, в следующем моем стеке потоком вопрос :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню