仅具有XML配置文件的WCF服务上的SSL端点

时间:2012-04-23 11:41:38

标签: c# wcf

我有一个只有xml配置文件和.exe的WCF服务(所以不是完整的解决方案)。我可以使用https使现有端点安全吗? 如果是这样,我怎么能这样做,如何与我的客户端连接到它,这将在网络中的另一台PC上?

这将是我的服务xml配置: 我的约束力:

  <wsHttpBinding>
    <binding
      name="HighQuotaWSHttpBinding"
      receiveTimeout="00:10:00"
      sendTimeout="00:10:00"
      bypassProxyOnLocal="true"
      maxBufferPoolSize="2147483647"
      useDefaultWebProxy="false"
      maxReceivedMessageSize="2147483647">
      <security mode="Transport">
        <transport clientCredentialType="None" />
      </security>
    </binding>
  </wsHttpBinding>

我的终点:

 <service
    behaviorConfiguration="WebDataServiceBehaviour"
    name="Humiq.Integral.WebDataService.Impl.ServiceLayer.WcfLibrary.WebDataService">
    <endpoint
      address="WebDataService"
      binding="wsHttpBinding" bindingConfiguration="HighQuotaWSHttpBinding"
      contract="Humiq.Integral.WebDataService.Intf.ServiceLayer.IWebDataService"
      name="WebDataServiceHttpBinding">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>
    <endpoint
      address="mex"
      binding="mexHttpsBinding"
      contract="IMetadataExchange"
      name="mexManagement" />
    <host>
      <baseAddresses>
        <add baseAddress="http://mylocalip:9650/" />
        <add baseAddress="https://mylocalip:9651/" />
      </baseAddresses>
    </host>
  </service>

行为:

 <behaviors>
  <serviceBehaviors>
    <!-- Behavior for WebserviceData interface -->
    <behavior name="WebDataServiceBehaviour">
      <!-- Set throttling of (concurrent) cals -->
      <serviceThrottling
         maxConcurrentCalls="100"
         maxConcurrentSessions="100"
         maxConcurrentInstances="100"/>
      <!-- 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="True" />
      <dataContractSerializer maxItemsInObjectGraph="2147483646"/>
    </behavior>
  </serviceBehaviors>
</behaviors>

这是我的客户:

  <bindings>
        <wsHttpBinding>
            <binding name="WebDataServiceHttpBinding" closeTimeout="00:01:00"
                openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
                maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
                allowCookies="false">
                <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                    maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                <reliableSession ordered="true" inactivityTimeout="00:10:00"
                    enabled="false" />
                <security mode="Transport">
                    <transport clientCredentialType="Basic" proxyCredentialType="None"
                        realm="" />
                    <message clientCredentialType="Windows" negotiateServiceCredential="true" />
                </security>
            </binding>
        </wsHttpBinding>
    </bindings>
    <client>
        <endpoint address="https://mylocalip:9651/WebDataService" binding="wsHttpBinding"
            bindingConfiguration="WebDataServiceHttpBinding" contract="wcf1.IWebDataService"
            name="WebDataServiceHttpBinding">
            <identity>
                <dns value="localhost" />
            </identity>
        </endpoint>
    </client>

1 个答案:

答案 0 :(得分:0)

您需要定义端口以在Windows上使用ssl。

使用netsh命令完成,您可以阅读它的帮助:

netsh http add sslcert ipport=0.0.0.0:8732 certhash=4745537760840034c3dea27f940a269b7d470114 appid={00112233-4455-6677-8899-AABBCCDDEEFF}