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

本文关键字:SSL 结点 服务 WCF XML 配置文件 | 更新日期: 2023-09-27 18:32:03

我有一个WCF服务,只有xml配置文件和.exe(所以不是完整的解决方案)。是否可以使用 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>

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

您需要

定义端口以在Windows上使用SSL。

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

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