1

我在兩種情況下使用silverlight 4應用程序。Silverlight安全問題:自簽名證書

方案1:Silverlight和RPC同一臺機器

  1. 中運行託管的文件系統上的網頁上,Silverlight的XAP也是文件系統:

    C:\Silverlight\FSSilverlightApp\bin\Debug\SilverlightApplication2TestPage.html 
    
  2. 連接到本地主機上正在訪問的網站:

    https://localhost/rpc/someMethod 
    
  3. 這是兩個獨立的URI所以瀏覽器檢測並立即請求(通過提琴手曲目):

    https://lcoalhost/clientaccesspolicy.xml 
    

    成功地返回:

    <?xml version="1.0" encoding="utf-8"?> 
    <access-policy> 
        <cross-domain-access> 
         <policy> 
          <allow-from http-request-headers="*"> 
          <domain uri="http://*"/>   
          <domain uri="https://*" /> 
          </allow-from> 
          <grant-to> 
          <resource path="/" include-subpaths="true"/> 
          </grant-to> 
         </policy> 
        </cross-domain-access> 
    </access-policy> 
    
  4. 該應用程序就能夠使RPC請求(通過小提琴手觀察)

    一切都很好。如果我將遠程主機更改爲本地計算機名稱而不是本地主機,則工作正常。

方案2:Silverlight的本地機器上的RPC是遠程

  1. 在這種情況下,我使用的是不同的桌面訪問方案中使用的相同的RPC服務器1.
  2. Silverlight啓動,並且沒有請求:clientaccesspolicy.xml被製作
  3. Fiddler顯示大量的https隧道正在建立,但是我的機器和遠程服務器之間沒有通信。

以下安全異常返回:

System.Security.SecurityException ---> System.Security.SecurityException: Security error. 
    at System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse(IAsyncResultasyncResult) 
    at System.Net.Browser.ClientHttpWebRequest.<>c__DisplayClass5.<EndGetResponse>b__4(ObjectsendState) 
    at System.Net.Browser.AsyncHelper.<>c__DisplayClass2.<BeginOnUI>b__0(Object sendState) 
    --- End of inner exception stack trace --- 
    at [email protected]nvoke(Exception _arg1023) 
    at [email protected](AsyncParams`1 args) 

我想這是一個IE瀏覽器配置問題。我嘗試在場景1中設置機器,作爲Internet Explorer中的受信任站點,似乎沒有工作......這必須是自簽名或不匹配的證書問題。有什麼想法嗎?

使用方法:IE 8和Windows 7

想法?

回答

0

我使用Fiddler坐在sliverlight客戶端和服務器之間。爲了使其正常工作,我需要導出小提琴手證書(tools \ fiddlerOptions \ https)並將其作爲根證書頒發機構本地安裝。