我使用有效的发布商代码签名证书进行签名。
当用户下载setup.exe时,Windows 8 SmartScreen仍会提醒用户,尽管发布者是有效的。
现在,安装完成后。 Windows 8 SmartSreen将提示另一条消息“Windows SmartScreen阻止无法识别的应用程序启动。运行此应用程序可能会使您的PC面临风险。”发布者是Unkown发布者。
我也应该签署组装吗?当我拥有有效证书时,为什么SmartScreen仍在提示?
如何签署应用程序exe,而不是设置exe?
答案 0 :(得分:3)
我是否也应该签署集会?
我怀疑这是问题所在。 ClickOnce要求其清单已签名(您别无选择),但我认为不需要自己签署程序集(如您所说),但Windows 8可能确实有此要求。
可以修改未签名的程序集,任何引用程序集都将尽职尽责地加载和执行其中的代码 - 不会有任何问题,因此恶意实体可能会替换磁盘上的一个或多个程序集并危及您的应用程序。 ClickOnce允许具有较低系统权限的用户执行他们原本不允许执行的任务,因为该权限已经(隐式)通过数字证书授予(用于签署目标上预先存在的ClickOnce清单的证书)机器,或通过目标机器上的根证书受信任。因此,通过不签署程序集,安全链中存在一个薄弱环节,并且可能在Windows 8中已经收紧(默认情况下)。
要作为装配进行签名,请参阅:How to: Sign an Assembly (Visual Studio)
NB。 dotNet程序集签名通常被称为强命名(术语'签名'和'强命名'似乎在此上下文中可互换使用)。
NB。强名称程序集只能引用其他强名称程序集,尽管它们可以使用不同的证书进行签名。如果您引用了非强名称的第三方程序集,这可能会导致问题 - 这种情况很少见,因为发布未签名的代码是不好的做法,只需使用{{3}用自己的证书对程序集进行签名即可。 }