0

我创建了一个带有多个调用的 WCF,我想用传输安全性来保护它,这样它就会通过 SSL。

所以我在 webmatrix 中配置了 SSL,因为我使用的是 VS2012 + IIS Express,如下所示。 在Webmatrix在 Webmatrix 中的端口 44330 上配置的 HTTPs 中的端口 44330 上配置的 HTTPs 。

我更新了我的 Web.config 以支持一个带有 HTTPS 和传输安全元数据的端点。

<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 工作,但 HTTPs 失败 HTTP 工作,但 HTTPs 失败。

这就是问题所在,它不使用任何证书,我什么也看不到。 没有使用任何证书的 “此页面无法显示” 。

我该如何解决这个问题或我做错了什么?

4

2 回答 2

4

我发现我的问题不在我的 WCF 配置中,因为它在前一天工作。在喝了很多咖啡、上网和命令行之后,我注意到问题出在 IIS Express 上,它是 SSL 与netsh http ssl.

我使用的是默认的 IIS Express 证书 (CN=localhost),因为我没有像 Sam Vanhoutte 建议的那样包含任何 serviceCertificate。即使指定证书 IIS Express 也仅使用CN=localhost ,启动 IIS Express 时需要位于LocalMachine > Personal中。

如果这不能解决您的问题,请尝试重新安装 IIS Express。(它将在正确的位置重新安装 CN=localhost 证书 - 不要忘记在 Webmatrix 中重新启用 SSL)

于 2013-05-23T12:48:17.843 回答
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>
于 2013-05-23T10:40:51.793 回答