【问题标题】:visual studio signing error: this certificate is not trusted on this PCVisual Studio 签名错误:此证书在此 PC 上不受信任
【发布时间】:2021-01-30 16:59:29
【问题描述】:

我正在尝试签署 UWP 应用程序,无论是调试版还是发布版,以便在其他一些设备上进行测试。我的证书似乎无效。

这是我的步骤:

  • 我右键单击我的 UWP 项目,选择“发布”,然后选择“创建应用程序包”。
  • 在弹出窗口中,我选择“sideloading”。
  • 然后我会询问我是否要签署包裹。
  • 我想选择“是”。我有一个证书,其中 subject 与清单中的 publisher 匹配。但是,就在下方,它显示一条消息“此证书在此 PC 上不受信任”。

如果我继续,VS 将创建一个包含一些安装文件的文件夹。如果我单击“...x64.msixbundle”,它会显示一个对话框,上面写着“更新...?”,并带有注释“不受信任的应用程序”和“此应用程序包未使用受信任的证书签名”下方的消息。 ..”(或者,我可以在 powershell 中运行 Install.ps1 脚本,得到相同的结果。)我不能再进一步了。而且,这是在我正在开发的同一台 PC 上。

我已尝试按照Create a certificate for package signing 和一些相邻页面上的说明进行操作。他们推断使用 VS 向导应该很简单。

附:我以前从未签署过 Windows 应用程序。也许我应该以完全不同的方式来做这件事?

【问题讨论】:

  • “此证书在此 PC 上不受信任” - 您可能需要将此证书添加到您的 PC 中的受信任以进行 Visual Studio 签名过程。

标签: windows visual-studio certificate publish


【解决方案1】:

主题与发布者匹配的证书需要被信任。

那该怎么办:

a) 证书是自签名的(颁发者与主题相同)

  • 运行 certlm.msc(用于机器范围的信任)或 certmgr.msc 用于当前用户信任。
  • 将证书导入Trusted Root Certificate Authorities

b) 证书不是自签名的(颁发者与主体不同)

如果您购买了真正的代码签名证书,您应该不需要做任何事情,因为您支付的正是我们正在建立的信任......

  • 获取根/颁发者证书
    • *有一个.cer
      • 双击cer文件
      • 点击Certificate Path 标签。
      • 双击树中的第一个证书 - 如果只有一个,请询问您从哪里获得证书!
      • 在新打开的窗口中点击Details 标签
      • 点击Copy to file按钮保存根证书。
    • 有一个 *.pfx 导入它
      • 运行certmgr.msc
      • 右击Personal并选择Advanced Tasks | Import导入pfx文件。
      • 识别导入的证书并导出根证书(请参阅拥有 *.cer)
  • 运行 certlm.msc(用于机器范围的信任)或 certmgr.msc 用于当前用户信任。
  • 将根证书导入Trusted Root Certificate Authorities

对于包签名,证书有额外的要求:

您用于签署应用包的证书必须满足以下条件:

  • 证书的主题名称必须与存储在包中的 AppxManifest.xml 文件的 Identity 元素中包含的 Publisher 属性相匹配。发布者名称是打包的 Windows 应用程序标识的一部分,因此您必须使证书的主题名称与应用程序的发布者名称匹配。这允许根据数字签名检查签名包的身份。有关使用 SignTool 对应用程序包进行签名时可能出现的签名错误的信息,请参阅 How to create an app package signing certificate 的备注部分。
  • 证书必须对代码签名有效。这意味着这两项都必须为真:
    • 证书的扩展密钥用法 (EKU) 字段必须未设置或包含代码签名的 EKU 值 (1.3.6.1.5.5.7.3.3)。
    • 证书的密钥使用 (KU) 字段必须未设置或包含数字签名的使用位 (0x80)。
  • 证书包含私钥。
  • 证书有效。它处于活动状态、尚未过期且未被撤销。

来源:https://docs.microsoft.com/en-us/windows/win32/appxpkg/how-to-sign-a-package-using-signtool

【讨论】:

  • 感谢您的回答。不幸的是,我仍然被困住了。我有一个自签名证书。我按照您的步骤进行:首先安装它,然后在 certlm.msc 中。我找到了它并将其移至“受信任的根...”。然后我尝试重新安装该应用程序。收到相同的错误“此应用程序包未使用受信任的证书签名...”。也许我需要采取另一个步骤来出示证书?我真的很困惑为什么这么难。
  • 明确地说,“颁发者”和“颁发者”是相同的(我的名字)。 VS 发布操作将证书放在与 msix 文件相同的文件夹中。
  • 任何可能让你再看看这个。我跳过的一定很简单。肯定有数以百万计的开发人员一直在这样做!
  • 您能否检查您的证书是否符合所列条件:docs.microsoft.com/en-us/windows/win32/appxpkg/…
  • 你好。我正在查看您引用的页面上的标准。当我选择发布者 == 主题的证书时,我从 VS 中知道。如果我运行 ceretlm,它会显示从 == 到,我认为这是同一件事。它还显示“预期目的”是“代码签名”,但数字系列不同。我不知道如何检查其他标准。我安装的唯一工具是 VS 附带的工具。例如,我没有signtool,也看不到独立安装它的方法。如果可能的话,你能解释一下我如何检查其余的标准吗?非常感谢。
【解决方案2】:

将 VS 配置为使用签署您要使用的证书的客户 CA(证书颁发机构)。

此 CA 应该是根 CA,因此任何中间 CA 也将受到信任。

此问题的一般原因是缺少根 CA 并且无法完成信任链,这意味着您可能只安装了中间 CA。

【讨论】:

  • 他说“issued by”和“issued to”是一样的——所以好像是自签的。
猜你喜欢
  • 2012-07-05
  • 1970-01-01
  • 2018-04-16
  • 2023-03-05
  • 2012-07-03
  • 2018-08-12
  • 1970-01-01
  • 1970-01-01
  • 2012-04-23
相关资源
最近更新 更多