首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用ClickOnce VSTO解决方案签名的mage.exe -证书不可信错误

使用ClickOnce VSTO解决方案签名的mage.exe -证书不可信错误
EN

Stack Overflow用户
提问于 2015-02-25 13:29:18
回答 4查看 14.3K关注 0票数 9

我正在尝试使用ClickOnce部署一个VSTO解决方案,它是Word和Outlook的两个加载项。由于我们的部署基础结构/实践,我无法使用Visual发布它,而是在构建服务器上构建并通过部署服务器进行部署。

对于本地开发,使用自签名证书。该部署使用此自签名证书(如果计算机上安装了自签名证书),但现在我想添加一个真正的公司证书,以便将应用程序部署到用户。

在部署期间,配置文件被戳入后,它们将被更新,并使用真正的证书重新签名。但是,这会在安装过程中产生以下错误:

代码语言:javascript
复制
System.Security.SecurityException: Customized functionality in this application will not work because the certificate used to sign the deployment manifest for <app name> or its location is not trusted. Contact your administrator for further assistance.
       at Microsoft.VisualStudio.Tools.Applications.Deployment.ClickOnceAddInTrustEvaluator.VerifyTrustPromptKeyInternal(ClickOnceTrustPromptKeyValue promptKeyValue, DeploymentSignatureInformation signatureInformation, String productName, TrustStatus status)
       at Microsoft.VisualStudio.Tools.Applications.Deployment.ClickOnceAddInTrustEvaluator.VerifyTrustUsingPromptKey(Uri manifest, DeploymentSignatureInformation signatureInformation, String productName, TrustStatus status)
       at Microsoft.VisualStudio.Tools.Applications.Deployment.ClickOnceAddInTrustEvaluator.VerifyTrustUsingPromptKey(Uri manifest, DeploymentSignatureInformation signatureInformation, String productName)
       at Microsoft.VisualStudio.Tools.Applications.Deployment.ClickOnceAddInDeploymentManager.ProcessSHA1Manifest(ActivationContext context, DeploymentSignatureInformation signatureInformation, PermissionSet permissionsRequested, Uri manifest, ManifestSignatureInformationCollection signatures, AddInInstallationStatus installState)
       at Microsoft.VisualStudio.Tools.Applications.Deployment.ClickOnceAddInDeploymentManager.VerifySecurity(ActivationContext context, Uri manifest, AddInInstallationStatus installState)
       at Microsoft.VisualStudio.Tools.Applications.Deployment.ClickOnceAddInDeploymentManager.InstallAddIn()
    The Zone of the assembly that failed was:
    MyComputer

我唯一的线索是,在重新签名之后,publisherIdentity元素中的值不会被更改( .vsto和.manifest),只有签名元素有对应于新证书的值。

下面的命令用于对.vsto和.manifest文件进行签名(据我从部署脚本中看到的):

代码语言:javascript
复制
mage.exe -Update "[path to .vsto/.manifest]"
mage.exe -Sign "[path to .vsto/.manifest]" -CertHash [certificateHash]

其中,certificateHash是真实证书的指纹,用于在证书存储中查找证书。有人告诉我,这是一种安全措施,这样证书文件就不必与部署包一起分发。

签名后,文件的签名值会发生更改,但publisherIdentity仍然具有自签名证书的名称和issuerKeyHash。

在重新签名之前,我尝试过查看这两个值,但我不知道如何计算issuerKeyHash。

任何关于如何进行的建议将不胜感激!

编辑:

我正在尝试其他mage.exe参数,比如'-TrustLevel FullTrust‘(没有任何效果)或'-UseManifestForTrust True’以及名称和发布者参数,这会产生这个错误消息(与上面提到的错误消息不同)。

代码语言:javascript
复制
************** Exception Text **************
System.InvalidOperationException: You cannot specify a <useManifestForTrust> element for a ClickOnce application that specifies a custom host.
   at Microsoft.VisualStudio.Tools.Applications.Deployment.ClickOnceAddInDeploymentManager.GetManifests(TimeSpan timeout)
   at Microsoft.VisualStudio.Tools.Applications.Deployment.ClickOnceAddInDeploymentManager.InstallAddIn()

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-02-27 16:22:47

我们已经找到了问题所在。我们使用了Windows中一个名为7A的文件夹中的mage.exe工具(对不起,我不记得完整的路径)。然后,一位同事找到了另一个带有7A、8和8A版本的文件夹。一旦我们从8A文件夹中获取.exe,安装就像预期的那样工作。

票数 1
EN

Stack Overflow用户

发布于 2015-06-30 12:29:08

该应用程序使用的证书不受Windows的信任。作为一项工作,

  1. 右键单击setup.exe
  2. 选择properties,然后选择Digital Signatures选项卡
  3. 选择Vellaichamy/user,然后单击Details
  4. 单击View Certificate并单击Install Certificate

不要让它自动选择存储插入的位置,请将证书安装在受信任的根证书颁发机构存储区中。一旦安装了证书,应用程序应该安装.

票数 21
EN

Stack Overflow用户

发布于 2015-02-25 14:10:18

请看一看授予Office解决方案信任文章,其中声明如下:

如果使用已知的可信证书对解决方案进行签名,则解决方案将自动安装,而不会提示最终用户作出信任决定。在获得证书后,必须通过将证书添加到受信任的发布服务器列表中来显式信任证书。

有关更多信息,请参见如何:为ClickOnce应用程序向客户端计算机添加受信任的发布服务器

此外,您可能会发现使用ClickOnce部署Office解决方案的文章很有帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28720277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档