【问题标题】:Testing WCF Transport Security from a remote machine for a Silverlight app从远程计算机测试 Silverlight 应用程序的 WCF 传输安全性
【发布时间】:2009-09-01 12:40:08
【问题描述】:

我已经使用针对本地主机颁发的自签名证书成功地为我们的登录 Web 服务获取 WCF 传输安全性。我将自签名证书添加为受信任的根证书颁发机构,以防止 IE 抱怨不受信任的证书。当针对 localhost 进行测试时,一切正常,因为我们使用的是 localhost,它还允许所有开发人员从他们自己的机器上测试服务而没有任何问题。

但是,我现在正尝试在我们的远程测试服务器上运行它。在远程服务器上运行时,本地主机证书显然不再起作用。因此,我使用 IIS7 为服务器计算机创建了一个自签名测试证书,并设置 IIS 以将此证书用于网站上的 https 通信。我还将它添加到服务器的信任根证书颁发机构存储中。然后,我将 WCFserver 行为配置更改为现在不再查找 localhost 证书,而是查找与机器的 DNS 名称相关联的证书,如下所示:

<behavior name="SSL">
  <serviceCredentials>
    <serviceCertificate
      findValue="prods-build.mydomain.co.za"
      storeLocation="LocalMachine"
      storeName="My"
      x509FindType="FindBySubjectName" />
  </serviceCredentials>
</behavior>

此行为随后会链接到 web.config 文件中的登录服务:

  <service behaviorConfiguration="SSL" name="Pragma.OnKey.Services.Common.LogonService">
    <endpoint address="" bindingConfiguration="pragmaSSL" binding="basicHttpBinding" name="Silverlight" contract="Pragma.OnKey.Services.Common.ILogonService" />
  </service>

作为参考,我还包括使用的绑定配置:

   <binding name="pragmaSSL">
      <security mode="Transport"/>
    </binding>

当我使用服务器机器本身的完全限定域名从浏览器运行测试时,一切正常。 Fiddler 显示为 Logon Web 服务调用建立的 HTTPS 连接。但是,一旦我尝试使用远程机器上的完全限定域名运行相同的测试,我就会收到通常的“Error trying to make request to URI https://myserver/Services/Logon.svc ..check the clientaccesspolicy.xml”错误。 clientaccesspolicy.xml(见下文)位于网站的根文件夹中,请记住,这一切正常直到我尝试使用完全限定的 DNS 名称远程访问服务。

<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from http-request-headers="SOAPACTION">      
        <domain uri="http://*"/>  
        <domain uri="https://*"/>
      </allow-from>
      <grant-to>
        <resource path="/" include-subpaths="true"/>
      </grant-to>
    </policy>
  </cross-domain-access>
</access-policy>

所以我的问题是,我做错了什么?我错过了这个难题的哪一部分?如何使用自签名测试证书和 Silverlight 客户端在远程机器上测试 SSL 实现?

请记住,使用针对 localhost 的自签名证书可以正常工作。但是,我需要运行它以在我们的测试和暂存环境中测试我们的应用程序。

谢谢 卡雷尔

【问题讨论】:

    标签: wcf silverlight security


    【解决方案1】:

    您在客户端计算机上做了什么来告诉它信任来自服务器的自签名(因此,本质上是不受信任的)证书?您是否将服务器的证书添加到 CLIENT 的受信任存储区?

    【讨论】:

    • 谢谢 Eric,那是我错过的部分。我还发现防火墙阻止了传入连接,所以我也必须打开机器上的 443 端口。再次感谢。
    猜你喜欢
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 2016-11-11
    • 1970-01-01
    • 2017-12-09
    • 2016-02-10
    • 1970-01-01
    • 2021-03-02
    相关资源
    最近更新 更多