【问题标题】:How to avoid warning on AssemblyName.vsto when setup.exe is signed via EV certificate (SHA2)setup.exe 通过 EV 证书 (SHA2) 签名时如何避免在 AssemblyName.vsto 上出现警告
【发布时间】:2019-10-20 21:21:25
【问题描述】:

我刚刚获得了 EV 代码签名证书。

我通过我的项目属性(从商店选择)的 ClickOnce 签名选项卡/页面使用证书。我将文件部署在远程公共 FTP 上,客户可以在其中下载 setup.exe 引导程序。这工作正常,我在运行 setup.exe 时收到绿灯提示,但随后我收到第二个提示 - Microsoft Office 自定义安装程序 - 这表明

发布者已通过验证

但一直显示黄色警告盾,以及以下详细信息:

虽然来自 Internet 的 Office 自定义项很有用,但它们可能会损害您的计算机。如果您不信任来源,请不要安装此软件。

我怎样才能变绿?

我确实检查了发布文件夹中的文件:只有setup.exe 被视为由DigiCert Certificate Utility 签名。其他文件要么未被识别为可签名(AssemblyName.vsto 和 FileName.dll.manifest),要么显示为未签名(FileName.dll.deploy)。我猜这是因为这些文件是通过 Mage ClickOnce 实用程序签名的,这与 signtool 或任何 Authenticode 签名技术不同?

这是否与签名有关,或者是 Office 解决方案的设计,除非我在受信任的发布者列表中,否则我无法实现绿色环保?就像this article 似乎在暗示。

【问题讨论】:

    标签: .net vsto clickonce office-addins


    【解决方案1】:

    第一次加载 VSTO(但现在不是原始 COM)插件时,VSTO 运行时会检查插件是否在 HKCU\Software\Microsoft\VSTO\Security\Inclusion 中列出。

    所有参数都可以从插件的 .manifest 文件中提取。

    您可以通过客户安装程序创建该密钥。我不认为你可以从 ClickOnce 安装程序中做到这一点。

    【讨论】:

    • 嗨 Dmitry,您是说自定义安装程序将 VSTO 包含在受信任列表中没有问题(也没有警告)吗?有趣..
    • 是的,它只是一个注册表项。只要它具有正确的值...
    【解决方案2】:

    我猜这是因为这些文件是通过 Mage ClickOnce 实用程序签名的,这与 signtool 或任何 Authenticode 签名技术不同?

    你在正确的道路上。签署 setup.exe 文件是不够的。您必须签署应用程序和部署清单,有关详细信息,请参阅 How to: Sign application and deployment manifests。它声明如下:

    如果您想使用 ClickOnce 部署发布应用程序,则应用程序和部署清单必须使用公钥/私钥对进行签名,并使用 Authenticode 技术进行签名。您可以使用来自 Windows 证书存储的证书或密钥文件对清单进行签名。有关ClickOnce deployment, see ClickOnce security and deployment 的更多信息。对于基于 .exe 的应用程序,签署 ClickOnce 清单是可选的。

    对 Windows 窗体应用程序、Windows Presentation Foundation 应用程序 (xbap) 或 Office 解决方案的应用程序清单中的部署属性进行更改后,您必须使用证书重新签署应用程序和部署清单。此过程有助于确保未在最终用户计算机上安装被篡改的文件。您可能会重新签署清单的另一种情况是当您的客户想要使用他们自己的证书签署应用程序和部署清单时。

    How to: Re-sign application and deployment manifests 文章中了解更多信息。

    基本上,您的代码/解决方案签名自定义操作可能如下所示:

    - "signtool.exe" sign /f $(SolutionDir)certificate.pfx /p myPwd$(TargetPath)
    
    - "mage.exe" -sign $(TargetPath).manifest -CertFile $(SolutionDir)certificate.pfx -Password myPwd
    
    - "mage.exe" -sign $(TargetDir)$(TargetName).vsto -CertFile $(SolutionDir)certificate.pfx -Password myPwd
    

    【讨论】:

    • 谢谢尤金。我相信这一切都是通过我的项目属性的“签名”选项卡中的“签署 ClickOnce 清单”选项自动完成的。至少这是他们在您的链接中所说的,这是我已经做过的。我猜想(希望!)如果清单未签名,ClickOnce 将发送红色警告/不允许继续,而不是黄色警告/允许继续。
    猜你喜欢
    • 1970-01-01
    • 2019-02-24
    • 1970-01-01
    • 2019-04-14
    • 1970-01-01
    • 1970-01-01
    • 2019-02-21
    • 2021-02-07
    相关资源
    最近更新 更多