签名的 ClickOnce 应用程序给出“无法验证发布者”

Posted

技术标签:

【中文标题】签名的 ClickOnce 应用程序给出“无法验证发布者”【英文标题】:Signed ClickOnce app gives "Publisher could not be verified" 【发布时间】:2018-06-11 13:14:23 【问题描述】:

我正在我们公司网络上部署一个签名的 ClickOnce 应用程序。该应用程序是由构建服务器构建并部署到共享驱动器位置的桌面应用程序。它使用我们为组织购买的赛门铁克代码签名证书进行签名。每个开发人员都已将证书安装到他们的个人存储中,构建服务器也是如此。 个人商店是 VS 中唯一可用于签名的位置。

当我尝试在非开发机器上安装应用程序时,我收到“无法验证发布者”警告。 即使根证书存在于计算机上的 CA 证书存储中,并且代码签名证书存在于受信任的发布者存储中,也会发生这种情况。两个证书都显示为“OK”,并且在机器上具有可追踪的路径。

但是,如果我将代码签名证书安装到 Personal 商店(与 dev pc 上的相同),警告就会消失。相反,我会得到一个更友好的对话框,询问是否应该安装该应用程序。

证书与“Symantec Enterprise Mobile CA for Microsoft”和“Symantec Enterprise Mobile Root for Microsoft”一起出现在个人文件夹中。

该应用使用 .NET 4.71 和 Visual Studio 2017 构建,目标计算机运行 Windows 10。

问题:

    为什么我需要在目标电脑的个人存储中安装证书才能使警告消失? 文档https://msdn.microsoft.com/en-us/library/ms996418.aspx 说,在“受信任的根证书颁发机构”中拥有根证书就足够了

    为什么我不能通过在“受信任的发布者”商店中安装代码签名证书来实现静默安装? 这样做会使警告再次出现。

    如果两个中间证书和根证书也出现在 Personal 和 Trusted Publishers 文件夹中,是否有问题? 它们与代码签名证书一起安装。

【问题讨论】:

【参考方案1】:

实现静默安装不需要时间戳 URL。

解决方案是将 3 个证书(一次一个)安装在目标计算机上证书存储区的正确文件夹中。 根证书应在“受信任的根证书颁发机构”下,中间证书应在“中间证书颁发机构”下。

最后,代码签名证书应该放在“受信任的发布者”下。

https://knowledge.digicert.com/solution/SO20770.html

【讨论】:

【参考方案2】:

我通过这些操作解决了这个问题。我为认证创建了密钥文件。您按照以下步骤操作。 转到项目属性,然后将打开上面的窗口。然后单击签名。然后单击新建。通过单击新建,您将能够创建密钥文件。像这样。

然后输入你想要的文件名。然后输入至少6个字符长的密码。然后输入确认密码。然后单击确定。像这样。

文件名应该显示在这里。我已经提到了。

然后点击从文件中选择。应该会出现下面的窗口。然后选择密钥创建的文件。然后最后一步构建解决方案。然后发布应用程序,警告将得到解决。

【讨论】:

以上是关于签名的 ClickOnce 应用程序给出“无法验证发布者”的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft Clickonce 应用程序的代码签名证书消失

ClickOnce 代码签名:“从商店中选择”还是“从文件中选择”?

使用 makecert/pvk2pfx 时,ClickOnce 签名者的证书对签名无效

.NET 4 ClickOnce 过期证书

C# clickonce用处

ClickOnce应用程序已签名,证书位于适当的用户存储中,但仍显示“ Unknown Publisher”