15

我已使用有效的发布者代码签名证书进行签名。

当用户下载 setup.exe Windows 8 SmartScreen 时仍会提醒用户,尽管发布者是有效的。

现在,安装后。Windows 8 SmartSreen 将提示另一条消息“Windows SmartScreen 阻止了无法识别的应用程序启动。运行此应用程序可能会使您的 PC 面临风险。” 并且发布者是未知的发布者。

我也应该在大会上签名吗?为什么我有有效证书时 SmartScreen 仍然提示?

如何签署应用程序 exe,而不是安装程序 exe?

4

1 回答 1

3

我也应该在大会上签名吗?

我怀疑这是问题所在。ClickOnce 要求对其清单进行签名(您别无选择),但我认为不需要对程序集本身进行签名(正如您所暗示的那样),但 Windows 8 可能确实有此要求。

可以修改未签名的程序集,任何引用程序集都将尽职尽责地加载并执行其中的代码 - 不问任何问题,因此恶意实体可以替换磁盘上的一个或多个程序集并危及您的应用程序。ClickOnce 允许系统权限较低的用户执行他们原本不允许执行的任务,因为该权限已(隐式)通过数字证书授予(用于签署 ClickOnce 清单的证书,该证书预先存在于目标上机器,或通过目标机器上的根证书受信任)。因此,如果不对程序集进行签名,则安全链中存在一个薄弱环节,并且很可能在 Windows 8 中(默认情况下)已经加强了这一点。

要作为程序集签名,请参阅:如何:签署程序集 (Visual Studio)

注意。dotNet 程序集签名通常称为强命名(在这种情况下,术语“签名”和“强命名”似乎可以互换使用)。

注意。强命名程序集只能引用其他强命名程序集,尽管它们可以使用不同的证书进行签名。如果您引用了非强命名的第三方程序集,这可能会导致问题 - 这种情况很少见,因为发布未签名代码是一种不好的做法,一种选择是简单地使用sn.exe使用您自己的证书对程序集进行签名

于 2013-03-25T10:54:41.060 回答