首页
学习
活动
专区
工具
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

Stack Overflow用户

回答已采纳

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

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

票数 1
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28720277

复制
相关文章

相似问题

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