【问题标题】:ClickOnce: Do I have to sign the ClickOnce manifest and assembly?ClickOnce:我必须签署 ClickOnce 清单和程序集吗?
【发布时间】:2010-12-23 09:18:19
【问题描述】:

我即将部署一个 ClickOnce 应用程序供内部使用。我将亲自将应用程序分发给一组受信任的用户。我知道可以对 ClickOnce 清单进行签名,但是当用户信任来源时是否需要?

不签署清单或程序集有什么缺点?

【问题讨论】:

    标签: clickonce


    【解决方案1】:

    您需要签署清单,但无需签署程序集。您需要对清单进行签名,以便 ClickOnce 可以唯一标识安装(您可以通过使用两个不同的密钥对应用程序进行签名来安装应用程序两次)。

    如果您只是在做一个内部应用程序,您的证书可以只是您创建的证书,它不必被信任。

    签署任何程序集的唯一好处是 ClickOnce 可以优化下载并在应用程序隔离存储之外存储强签名程序集,并在多个应用程序之间共享程序集。例如,如果您有两个应用程序都使用相同版本的NHibernate,那么 ClickOnce 只会下载一次程序集。

    【讨论】:

    • 感谢您的信息。大概“创建测试证书”的选项将是用来创建我自己的选项?
    • 应该可以。如果您不使用 .net 4.0,要记住的一件事是,如果您每次更改证书,您将无法升级现有安装,ClickOnce 会将其视为新安装。
    • 严格来说并非如此。如果您使用 .NET 3.5 或 .NET 2.0 w/SP-1,并且使用自动更新,则可以不受惩罚地更改证书。签署部署的另一个原因是在更新完成时和安装时检查签名,如果它不正确,它可以告诉文件已经被弄乱了。因此它不会安装已被他人劫持或替换的更新(例如恶意软件)。
    • 此外,ClickOnce 会缓存部署中的所有程序集,如果它们没有更改,则不会再次下载它们。显然,如果您正在为发布构建 dll,它会发生变化,但如果您有任何 3rd 方 dll 或您在另一个解决方案中创建并添加到项目中的 dll,它们只会在第一次下载。之后,它们将从本地缓存中使用。
    • 使用 makecert.exe 创建一个过期日期远在未来的证书,以避免出现自动更新问题。 VS生成的测试证书有效期只有一年。
    猜你喜欢
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 2010-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多