2012-11-22 35 views
15

我使用有效的發佈者代碼簽名證書進行簽名。將Clickonce應用程序分發到Windows 8

當用戶下載setup.exe時,Windows 8 SmartScreen仍會提醒用戶,儘管發佈者是有效的。

現在,安裝後。 Windows 8 SmartSreen會提示另一條消息「Windows SmartScreen阻止未啓動的應用程序啓動,運行此應用程序可能會使您的電腦面臨風險。」而發佈者是Unkown發佈者。

我是否也應該簽署該程序集?爲什麼SmartScreen在獲得有效證書時仍在提示?

我該如何簽署應用程序的exe,而不是安裝exe?

回答

3

我是否也應該簽署裝配?

我懷疑是這個問題。 ClickOnce要求它的清單已簽名(你別無選擇),但我認爲沒有要求自己簽署程序集的要求(正如你所暗示的那樣),但Windows 8確實有這個要求。

可以修改未簽名的程序集並且任何引用程序集都會盡職盡責地加載和執行其中的代碼 - 不要問任何問題,因此惡意實體可能會替換磁盤上的一個或多個程序集並危及應用程序。 ClickOnce允許具有較低系統權限的用戶執行他們不允許執行的任務,因爲許可已通過數字證書(隱式)授予(用於簽署目標上預先存在的ClickOnce清單的證書機器,或者通過目標機器上的根證書進行信任)。因此,通過不簽署程序集,安全鏈中存在一個薄弱環節,並且很可能在Windows 8中(默認情況下)收緊了這一點。

要註冊爲裝配看到:How to: Sign an Assembly (Visual Studio)

NB。 dotNet程序集簽名通常被稱爲強命名(術語「簽名」和「強命名」在這種情況下似乎可以互換使用)。

注意:強有名的程序集只能引用其他強有名的程序集,儘管它們可以使用不同的證書進行簽名。這可能會導致問題,如果你有第三方組件的名稱不強 - 這是罕見的,因爲它是不好的做法釋放未簽名的代碼,一個選項是簡單地使用您自己的certifciate使用sn.exe

相關問題