![](/img/trans.png)
[英]NetTcpBinding wcf service with remote access AND transport security?
[英]Testing WCF Transport Security from a remote machine for a Silverlight app
我已經使用針對本地主機簽發的自簽名證書成功獲得了用於登錄Web服務的WCF傳輸安全性。 我添加了自簽名證書作為受信任的根證書頒發機構,以防止IE抱怨不信任的證書。 在對localhost進行測試時,一切正常,並且因為我們使用的是localhost,所以它還允許所有開發人員從自己的計算機上測試服務,而不會出現任何問題。
但是,我現在正在嘗試在我們的遠程測試服務器上運行它。 在遠程服務器上運行時,本地證書顯然將不再起作用。 因此,我使用IIS7為服務器計算機創建了自簽名測試證書,並將IIS設置為將該證書用於網站上的https comms。 我還將此添加到服務器的信任根證書頒發機構存儲中。 然后,我將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顯示為登錄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的自簽名證書可以使所有這些工作正常 。 但是,我需要運行它以在測試和登台環境中測試我們的應用程序。
謝謝卡雷爾
您在客戶端計算機上做了什么操作以告訴它信任來自服務器的自簽名(因此,本質上不受信任)證書? 您是否已將服務器的證書添加到CLIENT的受信任存儲中?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.