2013-08-29 2 views
0

Попытка настроить конечную точку SSL для самообслуживающей службы WCF в Windows XP. Моя конфигурация отлично работает в Windows 7; но Windows XP, , используя тот же сертификат, не отвечает. Я получаю сообщение об ошибке сервера.Самостоятельный WCF SSL при Win XP сбой

Когда я запускаю netstat -an, я вижу, что служба прослушивает порт 443. Нет никаких конфликтующих приложений, прослушивающих порт, и брандмауэр выключен.

Кто-нибудь видел это раньше? Любые идеи о том, как их решить?

Бег httpcfg query ssl дает следующее:

C:\Documents and Settings\Kane>httpcfg query ssl 
    IP      : 0.0.0.0:443 
    Hash     : 4857fcdc71a69b8df67bb7cb7c6fb1073a08f23 
    Guid     : {00000000-0000-0000-0000-000000000000} 
    CertStoreName   : (null) 
    CertCheckMode   : 0 
    RevocationFreshnessTime : 0 
    UrlRetrievalTimeout  : 0 
    SslCtlIdentifier  : (null) 
    SslCtlStoreName   : (null) 
    Flags     : 0 
------------------------------------------------------------------------------ 
    IP      : 0.0.0.0:8443 
    Hash     : 4857fcdc71a69b8df67bb7cb7c6fb1073a08f23 
    Guid     : {00000000-0000-0000-0000-000000000000} 
    CertStoreName   : (null) 
    CertCheckMode   : 0 
    RevocationFreshnessTime : 0 
    UrlRetrievalTimeout  : 0 
    SslCtlIdentifier  : (null) 
    SslCtlStoreName   : (null) 
    Flags     : 0 
------------------------------------------------------------------------------ 

Ниже мой конфигурационный файл:

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
    <compilation debug="true" targetFramework="4.0"/> 
    </system.web> 
    <system.serviceModel> 
    <protocolMapping> 
     <add binding="webHttpBinding" scheme="http"/> 
    </protocolMapping> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="false"/> 
    <services> 
     <service name="SomeWindowsService.SomeService" behaviorConfiguration="webServiceBehaviorConfig"> 
     <host> 
      <baseAddresses> 
      <add baseAddress="http://*:8080/"/> 
      <add baseAddress="https://*/ssl/"/> 
      </baseAddresses> 
     </host> 
     <!-- this endpoint is exposed at the base address provided by host: http://localhost:8080/someservice --> 
     <endpoint address="" binding="webHttpBinding" behaviorConfiguration="WebHttpEndPointBehaviour" contract="SomeWindowsService.IFileAccessService"/> 
     <endpoint name="someservice" address="someservice" binding="basicHttpBinding" bindingConfiguration="soapBindingConfig" contract="someservice"/> 
     <endpoint name="someserviceSSL" address="ssl/someservice" binding="basicHttpBinding" bindingConfiguration="sslBindingConfig" contract="someservice"/> 
     <endpoint address="mex" binding="mexHttpBinding" name="MetadataBinding" contract="IMetadataExchange"/> 
     </service> 
    </services> 
    <!--Bindings--> 
    <bindings> 
     <basicHttpBinding> 
     <binding name="soapBindingConfig" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"> 
      <security mode="None"/> 
      <readerQuotas maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="2147483647" maxNameTableCharCount="2147483647" maxStringContentLength="2147483647" /> 
     </binding> 
     <binding name="sslBindingConfig" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"> 
      <security mode="Transport"/> 
      <readerQuotas maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="2147483647" maxNameTableCharCount="2147483647" maxStringContentLength="2147483647" /> 
     </binding> 
     </basicHttpBinding> 
    </bindings> 
    <!--Behaviors--> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="webServiceBehaviorConfig"> 
      <serviceDebug includeExceptionDetailInFaults="true"/> 
      <serviceMetadata httpGetEnabled="true" httpGetUrl="mex" httpsGetEnabled="true" httpsGetUrl="mex" /> 
      <dataContractSerializer maxItemsInObjectGraph="2147483647"/> 
     </behavior> 
     </serviceBehaviors> 
     <endpointBehaviors> 
     <behavior name="WebHttpEndPointBehaviour"> 
      <webHttp/> 
     </behavior> 
     </endpointBehaviors> 
    </behaviors> 
    </system.serviceModel> 
    <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    </system.webServer> 

    <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/><AutoStartTerminals>false</AutoStartTerminals></startup></configuration> 
+0

Странно, что я не получаю предупреждение от браузера или что-то еще. Это как будто ничего не слушает. Я получаю http 502 от скрипача, если это помогает. –

ответ

0

Итак, чтобы понять, что причиной этой проблемы мне пришлось первую очередь на ошибки SCHANNEL каротажа (http://support.microsoft.com/kb/260729).

В: HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Control \ SecurityProviders \ SCHANNEL, я добавил новый reg DWORD: EventLogging со значением 7. Затем перезагрузите компьютер.

Затем, глядя на журналы, я увидел ошибку:

Тип события: Ошибка Источник события : Schannel Категория события: Отсутствует Код события : 36870 Дата: 8/29/2013 Время: 8: 15:07 PM Пользователь: N/A Компьютер: РАЗРАБОТКА Описание: При попытке доступа к секретному ключу учетных данных SSL-сервера произошла фатальная ошибка. Код ошибки, возвращаемый из криптографического модуля, равен 0x80090016.

Дополнительную информацию см. В Центре справки и поддержки по адресу http://go.microsoft.com/fwlink/events.asp.

Эта ошибка привела меня к следующей статье: http://support.microsoft.com/kb/939616 после поиска Google для: «фатальную ошибку» 0x80090016

я вновь импортирован сертификат, и проблема была решена.

Ключом стал выход из системы Windows. Это был журнал, который предупредил меня о проблеме с сертификатом.

Смежные вопросы