我创建了一个带有多个调用的WCF,我想用传输安全保护它,所以它将通过SSL。
所以我在webmatrix中配置了SSL,因为我正在使用VS2012 + IIS Express,如下所示。 在端口 44330 上的Webmatrix中配置的 HTTP。
我更新了我的Web.config以支持一个端点,其中包含有关HTTPS和transportsecurity的元数据。
<system.serviceModel>
<services>
<service name="Counter" behaviorConfiguration="Behavior">
<endpoint address="https://localhost:44330/Counter.svc"
binding="wsHttpBinding"
bindingConfiguration="HTTPsBinding"
contract="ICounter">
</endpoint>
</service>
</services>
<bindings>
<wsHttpBinding>
<binding name="HTTPsBinding">
<security mode="Transport">
<transport clientCredentialType="None" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="Behavior">
<serviceMetadata
httpGetEnabled="false"
httpsGetEnabled="true"
httpsGetUrl="" />
</behavior>
</serviceBehaviors>
</behaviors>
现在,当我在浏览器中运行它时,它会指向HTTPS地址的元数据,如下所示。 HTTP有效,但HTTP失败。
这是问题,它没有使用任何证书,我什么都没看到。 “此页面无法显示”没有正在使用的任何证书。
如何解决这个问题或我做错了什么?
答案 0 :(得分:4)
我发现我的问题不在我的WCF配置中,因为它在前一天工作。经过大量的咖啡,冲浪和指挥衬里,我注意到问题是IIS Express,它是与netsh http ssl
的SSL绑定。
我使用的是默认的IIS Express证书(CN = localhost),因为我没有像Sam Vanhoutte建议的那样包含任何serviceCertificate。 即使指定证书,IIS Express也只使用需要位于 LocalMachine&gt;中的 CN = localhost 。启动IIS Express时的“个人”。
如果这不能解决您的问题,请尝试重新安装IIS Express。 (它将在正确的位置重新安装CN = localhost证书 - 不要忘记在Webmatrix中重新启用SSL)
答案 1 :(得分:3)
我认为您需要在web.config中指定服务器证书
<behaviors>
<behavior name="wsHttpCertificateBehavior">
<serviceMetadata httpGetEnabled="false" httpsGetEnabled="true"/>
<serviceCredentials>
<clientCertificate>
<authentication
certificateValidationMode="PeerOrChainTrust"
revocationMode="NoCheck"/>
</clientCertificate>
<serverCertificate findValue="CN=SSLCert"/>
</serviceCredentials>
</behavior>
</behaviors>