我可以使用受信任的代码签名证书对 Windows Store 应用程序进行代码签名吗?

Can I code sign a Windows Store App with a trusted code signing certificate?

我们有一个 Windows UWP 应用程序目前在 Microsoft 商店中。该项目包括一个商店关联文件,其中包含发布者属性,其中之一是通用名称。我们的商店帐户将 CN 显示为类似于 GUID 的字符串值。它将显示名称显示为我们的公司名称。在 Visual Studio 中,我们可以使用自签名证书构建用于侧载和代码签名的应用程序,其中证书的 CN 与 Store CN 相同(GUID 类似字符串)。这使我们能够通过商店版本旁加载应用程序的新版本,以便快速测试并为特定客户提供新功能。然后侧载版本最终可以更新为更新的已发布商店版本。

我的问题是:我们想使用从受信任的证书颁发机构购买的代码签名证书对应用程序进行签名。问题是受信任的代码签名证书必须将 Common Name 作为公司名称。我们似乎只能使用通用名称等于商店关联文件中的 CN(GUID 字符串)的证书对应用程序进行签名。这是存储关联应用程序的已知限制还是我们遗漏了什么?

TLDR;在 MS Store 中发布的任何应用程序都将仅使用 Microsoft 的证书进行签名。您不能使用自己的证书在商店中发布应用程序。

如果您使用自己的证书对程序包进行签名,则需要为用户提供外部 link 以获取您的应用程序。您可以为此使用 AppInstaller protocol

你在CN中看到的GUID(VS自动生成的证书)实际上是MSFT用来确保商店中发布的应用程序实际上是由其真实提交的类似“私钥”的机制所有者(即我假设要避免某种中间人攻击,攻击者可能会以某种方式上传您的应用程序的损坏版本)。

一旦您的应用进入商店并通过所有验证,MSFT 将使用他们自己的证书对其进行签名。我想这就是 AppInstaller 服务(或来自 Windows 10 的商店应用程序)将知道可以信任任何使用其证书签名的应用程序的方式。