【问题标题】:Why do I still see publisher unknown with the UAC prompt?为什么在 UAC 提示中我仍然看到发布者未知?
【发布时间】:2016-08-13 02:33:54
【问题描述】:

我已经创建了自己的 CA,然后是 .pfx 文件。我正在使用 Wix 工具集来构建安装程序。

在 wix 项目文件中,我使用以下内容对其进行了编辑;

<PropertyGroup>
    <SignOutput>true</SignOutput>
</PropertyGroup> 

<PropertyGroup>
    <sourceRoot>$(OutputPath)..\..</sourceRoot>
</PropertyGroup>


<Target Name="SignMsi">
     <Exec Command='"$(sourceRoot)\Keys\signtool.exe" sign /v /f "$(sourceRoot)\Keys\myCA.pfx" /t http://timestamp.verisign.com/scripts/timstamp.dll /v /d "%(SignMsi.Filename)" "@(SignMsi)"' />
</Target>

<Target Name="SignCabs">
    <Exec Command='"$(sourceRoot)\Keys\signtool.exe" sign /v /f "$(sourceRoot)\Keys\myCA.pfx" /t http://timestamp.verisign.com/scripts/timstamp.dll /v /d "%(SignCabs.Filename)" "@(SignCabs)"' />
</Target>

然后我在 Visual Studio 中构建它,它构建成功,甚至签名显示成功。

但是在 UAC 提示中它仍然是发布者未知的。

【问题讨论】:

  • 您是否将自己的 CA 添加到受信任的根证书颁发机构?
  • 是的,我有 - 我的 CA 已添加到受信任的根证书颁发机构。但据我了解,这不是我的问题。 Publisher 和 Trust 是两个不同的东西。我不是在问为什么我的 UAC 提示没有显示信任,我是在问为什么它没有显示发布者。
  • 好的,它真的“表现出信任”吗?因为如果没有,它就不会显示发布者。
  • 不,它也不显示信任。
  • 那么,如果您右键单击输出文件并选择“属性”,它会显示数字签名选项卡吗?如果是,它会显示什么?

标签: .net wix windows-installer


【解决方案1】:

根据之前的讨论,您似乎正在尝试签署安装程序,将其分发给您的用户,并希望 UAC 显示您的发布者名称。

这仅在您使用来自受信任的证书颁发机构的代码签名证书对安装程序包进行签名时才有效。您不能使用自己的 CA 来创建证书,因为您的 CA 在您的用户系统上不被认为是可信的。如果每个人都可以简单地创建自己的 CA,那么就没有人对签名代码有任何信任。您可能只将其视为一种产生收入的方法,但证书确实并不那么昂贵(

延伸阅读:http://www.codeproject.com/Articles/325833/Basics-of-Signing-and-Verifying-code

【讨论】:

  • “这仅在您使用来自受信任的证书颁发机构的代码签名证书对安装程序包进行签名时才有效”,这是什么意思?听起来这意味着与微软有某种联系的权威?听起来我错误地认为任何 CA 证书都可以添加到操作系统证书存储中并为计算机用户信任,然后 UAC 将反映它。
  • 所以“未知发布者”是指微软的未知发布者及其向 MS 权威机构注册的操作系统过程??
  • 理论上,如果您的 CA 在您的计算机上受信任,它应该可以工作,但我不确定您是否正确地这样做了。您是否在 certmgr 中检查您的 CA 在受信任的根 CA 中?但是,即使您这样做,它也不会帮助您的用户。 “这听起来像是一个与微软有某种联系的权威?”:有点。如果您查看 certmgr 中的列表,您会发现像 Verisign 和 Thawte 这样的公司。您需要来自这些受信任机构之一的证书。谷歌“代码签名证书”以获取更多购买选项。关于你的第二条评论:有点,是的。
  • 我的目标是让我的安装和更新“干净”在一个小型办公环境中,我不赚钱所以不打算花任何钱。我的小应用程序会自行更新,我想要的只是用户确实看到它来自我。看起来很简单,但是当它说 UNKNOWN PUBLISHER 时人们会犹豫,而且我不能用我的名字填写这似乎很愚蠢。所以“理论上”我应该能够将我的 CA 添加到任何带有 certmgr 的计算机到受信任的根 CA 中,这应该可以完成这项工作吗?在这种情况下,人们会比一些 MS 证书更信任我 :-)
  • 是的,理论上可行,但我不确定 UAC 是否对“自定义”根证书感兴趣。也许有一个标志可以识别手动添加的任何证书,以防止操纵。我还没有尝试过,所以我不能确定它是否有效。
【解决方案2】:

我想自己回答这个问题,因为我认为这里存在一些相当大的误解。您可以制作自己的证书并将其添加到您自己的商店中,然后 UAC 将显示为蓝/绿并显示发布者。 100% 信任。当然关键是你制作的 CA 证书必须在商店里。这是导致部署问题的一点,但我希望如果我将我的证书带到其他计算机上,我可以将它添加到存储中,然后我将显示为发布者。

我的证书有一些问题需要修复。我知道我在使用时遇到了问题

signtool verify /v /pa mysigned.exe

这告诉我事情不正确以及要解决的问题。

【讨论】:

    【解决方案3】:

    如果计算机上的时间关闭,我也会发生这种情况。您可以通过右键单击查看安装程序属性并查看证书来判断是否是这种情况。如果它说时间戳可能无效,请检查计算机上的时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-21
      相关资源
      最近更新 更多