2009-09-01 96 views
0

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

但是,我现在试图让我们的远程测试服务器上工作。在远程服务器上运行时,本地主机证书显然不再起作用。所以我使用IIS7为服务器机器创建了一个自签名测试证书,并设置IIS将该证书用于网站上的https通信。我也将其添加到服务器的信任根证书颁发机构存储中。然后,我改变WCFserver行为的配置到现在找本地主机证书了,但找到一个绑在机器的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> 

当我使用服务器机器本身的完全限定的域名从浏览器运行测试时,everyting可以正常工作。 Fiddler显示正在进行登录Web服务调用的HTTPS连接。但是,只要我尝试使用来自远程计算机的完全限定域名运行相同的测试,就会收到通常的“尝试向URI发出请求的错误https://myserver/Services/Logon.svc ..检查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。然而,我需要在我们的测试和分段环境中测试我们的应用程序。

感谢 卡雷尔

回答

1

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

+0

谢谢埃里克,那是我错过的作品。我还发现防火墙阻止了传入连接,所以我不得不在机器上打开端口443。再次感谢。 – Carel 2009-09-02 07:15:58