安装的时候出现“部署清单签名的证书或其位置不受信任”怎么解决

问题

2017年1月20日星期五 下午12:59

我用VS2010做了一个outlook插件,使用ClickOnce方式部署,在安装的时候出现“部署清单签名的证书或其位置不受信任”,见下图。找了好久才找到下面这篇文章来禁用 ClickOnce 信任提示:
https://technet.microsoft.com/zh-cn/library/ee308453?cs-save-lang=1&cs-lang=vb#code-snippet-2
但是用文章中的代码做了一个控制台应用程序运行再安装仍出现相同的问题。最后我在VS2010的签名处创建了一个测试证书并导入要安装的电脑才未出现以下的画面,但奇怪的是后来安装仍出现以下问题。
请教“部署清单签名的证书或其位置不受信任”正确的处理方式是什么?

全部回复 (10)

2017年1月25日星期三 上午1:18 ✅已答复 | 1 票

Hi,

在共享文件夹发布VSTO 程序应该是没有问题的。在这一步出现错误的根本原因就是因为计算机不能你的信任你的程序,MSDN 文档解释:对于 Office 解决方案,Internet 的默认;为 AuthenticodeRequired,而 UntrustedSites 的默认;为 Disabled。  对于所有其他应用程序,Internet 的默认;为 Enabled。

另外考虑一下会不会是文档级别的信任问题,如果文件仍保留在网络文件共享,必须将网络位置添加到Microsoft Office应用程序中的信任中心的受信任位置。 For more information, see Granting Trust to Documents (2007 System).

有关Office解决方案方面的文档,请参考:保护 Office 解决方案的安全

如何:安装 ClickOnce Office 解决方案

希望有帮助。

Best Regards,

Bob

MSDN Community Support
Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.


2017年1月23日星期一 上午10:11

你好,

出现这种画面的情况就是因为你的程序文件没有被签名,文件通过证书来签名是保护软件的一种安全方式,证书有效的防止你的程序代码被恶意篡改。

你不应该禁用ClickOnce 信任提示,因为这样你不知道哪些ClickOnce应用是不受信用的。

你可以使用MakeCert这个工具来创建证书,产生私钥和公钥,使用SignTool工具通过证书(私钥)来对你的文件签名,在发布的时候提前在目标用户的机器上安装这个证书(公钥)。然后就不会有这个提示了,因为目标机器上已经信任了这个发布者,clickonce就只用点击一次,直接安装。

但是在每个用户的机器上都要提前安装一次证书,显然很麻烦。可以从证书认证中心来购买证书对你的程序进行签名,由于证书认证中心是比较权威的,在大部分的机器上已经信任过这些权威机构,所以你在安装ClickOnce应用的时候也不会出现这个提示,直接安装。

希望有帮助。

Best Regards,

Bob

MSDN Community Support
Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.


2017年1月24日星期二 上午2:55

你可以使用MakeCert这个工具来创建证书,产生私钥和公钥,通过证书(私钥)来对你的文件签名,在发布的时候提前在目标用户的机器上安装这个证书(公钥)。然后就不会有这个提示了,因为目标机器上已经信任了这个发布者,clickonce就只用点击一次,直接安装。

Hi Bob,

按照你的建议,
首先,我使用以下命令行产生了一个证书:
makecert -r -pe -n "cn=DHCA" -$ commercial -a sha1 -b 01/24/2017 -e 01/01/2039 -cy authority -ss my -sr currentuser
并在控制台导出该证书
然后,在VS2010签名选项卡中点击“从文件中选择”选择该证书对ClickOnce清单进行签名
接着,我在目标机器上安装此证书并存储在受限制的根证书颁发机构
再接着,在我的机器上点击立即发布
最后,在目标机器上点击setup.exe安装,但仍然出现以前述画面,这是为何?

其实我还试过很多方法,由于是通过共享文件夹发布的,因此我将其加受信任站点,或者将Clickonce安装的整个文件夹拷贝到本地硬盘,但是所有的尝试都失败了。为了一个安装,一个;拜没有搞定,都快崩溃了。


2017年1月24日星期二 上午3:15

你好,

在Visual Studio进行签名的时候,需要生成.pfx 后缀的个人信息交换文件(Personal Information Exchange (.pfx) Files),请参考以下步骤:

1. 通过命令行工具makecert.exe来创建一个私钥文件(.pvk)和公钥文件(.cer)

makecert -r -pe -n "CN= CertificateName " -b 01/01/2005 -e 01/01/2010 -sky exchange -sv testCert.pvk  testCert.cer

2.通过命令行工具cert2spc.exe将公钥文件(.cer)转化成软件发行者证书文件(.spc)

cert2spc testCert.cer testCert.spc   

3.通过命令行工具Pvk2Pfx.exe将私钥文件和.spc文件转化为.pfx文件

Pvk2pfx -pvk testCert.pvk -spc testCert.spc -pfx testCert.pfx

希望有帮助!

Best Regards,

Bob

MSDN Community Support
Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.


2017年1月24日星期二 上午6:17

在Visual Studio进行签名的时候,需要生成.pfx 后缀的个人信息交换文件(Personal Information Exchange (.pfx) Files),请参考以下步骤:

Hi Bob,

我使用C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin文件夹下面的3个命令行工具分别执行以下三条命令、然后按你的上述步骤操作后仍出现相同的提示,请问是哪里出错了?

makecert -r -pe -n "CN=DHCA01242" -b 01/01/2017 -e 01/01/2039 -sky exchange -sv DHCert01242.pvk  DHCert01242.cer
cert2spc DHCert01242.cer DHCert01242.spc
Pvk2pfx -pvk DHCert01242.pvk -spc DHCert01242.spc -pfx DHCert01242.pfx

我用的是Win7;VS2010


2017年1月24日星期二 上午6:30

你好,

你有没有将生成的证书提前安装到你的机器上?然后再安装这个clickonce程序.

这里有一篇很好的文章解释了这个问题。请参考:The Phases of the ClickOnce Trust Prompt (Mary Lee)

Configuring ClickOnce Trusted Publishers:这篇文章可以让我们很好的理解怎么配置ClickOnce信任的发布商

Best Regards,

Bob

MSDN Community Support
Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.


2017年1月24日星期二 上午6:51

你有没有将生成的证书提前安装到你的机器上?然后再安装这个clickonce程序.

Hi Bob,

我有将证书.pfx安装在目标机器上再安装ClickOnce程序。

即使不装这个证书,按理说我修改注册表也可以避免此提示。


2017年1月24日星期二 上午8:32

你好,

禁用 ClickOnce 信任提示不是表示就没有不提示了,如果你的程序不被信任,这个程序就直接不能安装。

你的情况是没有证书就压根就安装不了这个Clickonce程序吗?在我所用的机器上,无论是否有证书,这个程序都是可以安装的,所以我断定出现这个情况的问题可能和你的.NET Framework版本和项目类型有关系。

参考这篇文章:Certificate Expiration in ClickOnce Deployment

我建议提升你的.NET Framework版本和Visual Studio 版本。

Best Regards,

Bob

MSDN Community Support
Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.


2017年1月25日星期三 上午12:17

你的情况是没有证书就压根就安装不了这个Clickonce程序吗?在我所用的机器上,无论是否有证书,这个程序都是可以安装的,所以我断定出现这个情况的问题可能和你的.NET Framework版本和项目类型有关系。

Hi Bob,

是的,我现就是根本安装不了,而不是仅仅提示程序不受信任。

我分别写了个窗体应用程序和outlook外接程序,里面都只放了一句"Hello,World",用ClickOnce方式发布到共享文件夹,结果发现窗体应用程序可以正常安装和自动更新,而outlook外接程序根本就装不了,我怀疑可能是共享文件夹的问题,


2017年1月25日星期三 上午7:47

在网上找了一个现成的工具(.exe)后修改注册表后可以安装,虽然仍提示信任问题,但相信按上面Bob的建议应该可以解决!网上那个修改注册表工具应该是与下面这篇文章中说的一致的。但是奇怪的是为何我的控制台程序分别按32位和64位修改了注册表后只成功安装过一次,后面怎么也无法安装。

https://technet.microsoft.com/zh-cn/library/ee308453?cs-save-lang=1&cs-lang=vb#code-snippet-2