将ClickOnce应用程序分发到Windows 8

15

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

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

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

我是否也应该对程序集进行签名?为什么当我拥有有效证书时,SmartScreen仍在提示?

如何对应用程序exe进行签名,而不是setup exe?

1个回答

3
我应该也签名吗?
我怀疑这是问题所在。ClickOnce 要求签名其清单(你别无选择),但我认为没有必要签名程序集本身(正如你所提到的),但很可能 Windows 8 有此要求。
未签名的程序集可以被修改,任何引用它们的程序集都会毫不犹豫地加载和执行其中的代码 - 毫不犹豫地接受,因此恶意实体可以替换磁盘上的一个或多个程序集并破坏应用程序。ClickOnce 允许权限较低的用户执行他们原本无法执行的任务,因为数字证书(用于签署 ClickOnce 清单的证书,它在目标计算机上已经存在,或者通过根证书被信任)已经(隐式地)授予了权限。因此,如果不签名程序集,则安全链中存在一个薄弱环节,并且 Windows 8 可能已经加强了此方面的要求(默认情况下)。
要签名程序集,请参见:如何:对程序集进行签名 (Visual Studio) 注意,dotNet 程序集签名通常称为强命名(在这个上下文中,“签名”和“强命名”这两个术语似乎是可以互换使用的)。
注意,强名称程序集只能引用其他强名称程序集,尽管它们可以使用不同的证书进行签名。如果您引用了未经强名称的第三方程序集,则可能会出现问题 - 这很少见,因为发布未签名代码是不好的做法,一个解决办法是使用 sn.exe 使用自己的证书对程序集进行签名。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接