为我的WCF应用程序启用SSL存在问题

时间:2016-03-03 00:39:36

标签: c# wcf ssl

我们开发了一个WCF Web服务,它一直运行良好,不需要引入SSL。现在,在将其部署到Test环境之前,我们需要启用SSL。

所以我在SO上发现了这个链接:Enable SSL for my WCF service

并更改了我的配置文件以包含以下代码:

 <binding name="BasicHttpBinding_IPromotionalSponsorship" allowCookies="true"
            maxReceivedMessageSize="20000000"
            maxBufferSize="20000000"
            maxBufferPoolSize="20000000">
      <readerQuotas maxDepth="32"
           maxArrayLength="200000000"
           maxStringContentLength="200000000"/>
         <security mode="Transport">              
         </security>
       </binding>

虽然我的端点如下所示

 <endpoint address="" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IPromotionalSponsorship"
          name="StandardEndpoint" contract="PL.Commercial.PromoSponsor.Service.Contracts.IPromotionalSponsorship" />

但是当我运行我的项目时,它听起来似乎没有改变任何东西,它显示没有https的URL。

现在,当我在URl中明确添加's'时,它会抛出以下错误:

  

无法与服务器建立安全连接。这可能是一个   服务器问题,或者可能需要客户端   您没有的身份验证证书。

我创建了一个自签名证书并将其添加到我的本地IIS。我需要改变/添加什么特别的东西?

1 个答案:

答案 0 :(得分:1)

您需要进行以下更改。

  1. 如果您不需要客户端身份验证而只需要HTTPS,那么您的绑定配置应如下所示。注意传输元素。

     <binding name="BasicHttpBinding_IPromotionalSponsorship" allowCookies="true"
             maxReceivedMessageSize="20000000"
             maxBufferSize="20000000"
             maxBufferPoolSize="20000000">
      <readerQuotas maxDepth="32"
           maxArrayLength="200000000"
           maxStringContentLength="200000000"/>
      <security mode="Transport">
        <transport clientCredentialType="None"/>
      </security>
    </binding>
    
  2. 如果您希望浏览器在浏览服务时显示https。您的服务行为应如下所示。

    <behaviors>
    <serviceBehaviors>
       <behavior>
         <serviceMetadata httpsGetEnabled="True" httpsGetBinding="mexHttpsBinding"/>
       </behavior>
    </serviceBehaviors>
    </behaviors>
    
  3. 如果您收到错误&#34;无法与服务器建立安全连接......&#34;如上所述,这意味着您已经以需要客户端证书的方式配置服务。我想你只需要启用HTTPS。在这种情况下,您不需要在IIS中配置客户端证书要求。 您的应用程序的SSL设置应如下所示。 enter image description here