我们开发了一个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。我需要改变/添加什么特别的东西?
答案 0 :(得分: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>
如果您希望浏览器在浏览服务时显示https。您的服务行为应如下所示。
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpsGetEnabled="True" httpsGetBinding="mexHttpsBinding"/>
</behavior>
</serviceBehaviors>
</behaviors>
如果您收到错误&#34;无法与服务器建立安全连接......&#34;如上所述,这意味着您已经以需要客户端证书的方式配置服务。我想你只需要启用HTTPS。在这种情况下,您不需要在IIS中配置客户端证书要求。 您的应用程序的SSL设置应如下所示。