windows-store-apps - 我可以使用受信任的代码签名证书对 Windows 应用商店应用程序进行代码签名吗?
问题描述
我们有一个 Windows UWP 应用程序,目前在 Microsoft 商店中。该项目包括一个商店关联文件,其中包含发布者属性,其中之一是通用名称。我们的商店帐户将 CN 显示为类似于 GUID 的字符串值。它将显示名称显示为我们的公司名称。在 Visual Studio 中,我们可以使用自签名证书构建应用程序以进行旁加载和代码签名,其中证书的 CN 与 Store CN 相同(GUID 类似字符串)。这使我们能够在商店版本上加载应用程序的新版本,以便快速为特定客户测试和获取新功能。然后,最终可以使用更新的已发布商店版本来更新侧载版本。
我的问题是:我们想使用从受信任的证书颁发机构购买的代码签名证书对应用程序进行签名。问题是受信任的代码签名证书必须将通用名称作为公司名称。我们似乎只能使用通用名称等于商店关联文件中的 CN 的证书(类似于字符串的 GUID)对应用程序进行签名。这是存储相关应用程序的已知限制还是我们遗漏了什么?
解决方案
TLDR;在 MS Store 中发布的任何应用程序都将仅使用 Microsoft 的证书进行签名。您不能使用自己的证书在商店中发布应用程序。
如果您使用自己的证书对包进行签名,则需要为用户提供外部链接以获取您的应用程序。您可以为此使用AppInstaller 协议。
您在 CN 中看到的 GUID(用于 VS 自动生成的证书)实际上是一种类似“私钥”的机制,MSFT 使用它来确保在商店中发布的应用程序实际上是由其真实所有者提交的(即我假设以避免某种中间人攻击,攻击者可能会以某种方式上传您的应用程序的损坏版本)。
一旦您的应用程序进入商店并通过所有验证,MSFT 将使用他们自己的证书对其进行签名。我想这就是 AppInstaller 服务(或 Windows 10 中的 Store 应用程序)如何知道可以信任任何使用其证书签名的应用程序。
推荐阅读
- javascript - 在页面重新加载时将选择值标记为选中
- python - 如何在情节中更改直方图的边缘颜色?
- oracle - Oracle DB 的 ODBC 登录失败
- javascript - 如何在 VUE2 中选择多个(骰子)按钮
- javascript - 如何为嵌套在 React js 列表中的字典设置状态
- javascript - Javascript:选择 2 个选项以同时显示测量类型和时间间隔
- python - 将绘图图形放入传单
- javascript - 仅将唯一值推送到数组中
- javascript - Discord.js setStatus() 和 setPresence() 不起作用
- intellij-idea - 在 IntelliJ 中跳转到实现而不是声明