2012-05-14 19 views
1

我有一個應用程序,最初將由用戶下載和安裝。 更新應用程序的應用程序本身將簽名自動下載的exe

  1. 檢查是否有新版本存在
  2. 如果是下載新版本(由樂的InstallShield創建的setup.exe文件與VS2010捆綁)
  3. 應用然後開始一個新的System.Diagnostics.Process安裝新軟件(當前正在運行的軟件是由Installshield安裝的關機,卸載和新版本)

我希望能夠確保exe是可信任的以防止任何webservice黑客。
達到此目的的最佳方法是什麼?我需要在我的c#.net wpf應用程序中進行驗證。

回答

3

你需要從一個值得信賴的機構購買的驗證碼代碼簽名證書(我們使用GoDaddy的,但有其他那裏的負載),並用它來簽署所有executables in your installer (作爲signtool.exe的後期構建任務) see here的詳細信息)和the installshield generated installer生成安裝程序包時。

當您的更新過程下載新的安裝程序包時,您可以在部署之前選擇check that the signature is trusted

+0

謝謝Spender,這似乎是我需要的正確路線。我快速查看了DSACryptoServiceProvider.Is它是安全的,如果我用這個創建一個pub/priv鍵,然後在我的初始安裝程序中包含pub key用私鑰簽名所有更新的可執行文件。試圖讓我的頭腦對這種方法進行簽名和驗證。 – Oli

+0

當然,你可以這樣做,但在用戶眼中,這是一個不可覈實的信任鏈。從授權機構購買證書意味着存在可驗證的信任鏈(來自Windows證書存儲) – spender

1

請參閱http://msdn.microsoft.com/en-us/library/xc31ft41.aspx瞭解有關簽署裝配的信息。

這篇文章會爲你有用的:http://www.c-sharpcorner.com/uploadfile/puranindia/signing-an-assembly-in-C-Sharp/

讓你使用簽署集會的安全私鑰。另見C#: why sign an assembly?

+0

謝謝肖恩。這是有用的,但如果我錯了,請糾正我的錯誤......在我目前的情況下,上述內容無法幫助我?完整的應用程序將被刪除,然後由msiexec取代,我認爲我無法查看新程序集,因此請檢查它的簽名,直到它被安裝後,這太遲了。也許我正在以完全錯誤的方式進行更新? – Oli

1

從已知的HTTPS位置下載可能就足夠了。您可以檢查服務器證書以確保您是否正確地說話。

考慮使用ClickOnce deployment,而不是做一個自定義...

+1

每次我提到自動更新我總是指向clickonce ;-)不是在這個例子中,雖然我很欣賞它的功能,因爲我目前正在使用它來部署到我的Alpha測試人員。此外,我試圖防範網絡服務器黑客攻擊,因此在這種情況下,已知的https位置仍然是相同的,但其中的exe可能不會。 – Oli