你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

受信任签名常见问题解答

获取有关受信任签名服务的常见问题的解答。

开始使用

受信任签名支持哪些 Windows 版本?

受信任签名服务支持所有支持常规用户模式代码完整性 (UMCI) 安全策略的 Windows 版本。

在适用于 Windows 的 2021 年 7 月证书信任列表 (CTL) 更新中添加了对已签名二进制文件的支持。 一种经典的情况,当计算机上遇到来自链的终端实体证书时,系统会检索根证书颁发机构 (CA) 证书并将其添加到信任根存储中。

有关受信任签名的 Windows 支持的详细信息,请参阅 受信任的签名计划 Windows 支持

如何向 API 授予对 Microsoft Entra 中受信任登录的访问权限?

向 Microsoft Entra 管理员请求批准访问权限。 有关权限的详细信息,请参阅以下文章:

如果看不到 Microsoft.CodeSigning 作为资源提供程序,该怎么办?

若要注册 Microsoft.CodeSigning 应用,请转到订阅“资源提供程序”窗格,如以下示例所示:

注册 Microsoft.CodeSigning 资源提供程序的屏幕截图。

使用受信任签名的成本是多少?

设置受信任签名时,我的支持选项有哪些?

  • 可以在 Azure 门户中创建支持票证以获取 Azure 支持。 此外,还可以在 Microsoft问答 (使用标记 Azure 受信任签名)或 Stack Overflow (使用标记 受信任签名)上发布问题或搜索相关问题。

标识验证

如果受信任签名使用者名称与证书中的名称不同,并且 MSIX 包名称现在不同,该怎么办?

是否可以将自定义 CN 或自定义 O 与受信任签名配合使用?

  • 否,不可以将自定义公用名 (CN) 或自定义组织 (O) 与受信任签名配合使用。 受信任签名服务当前不支持自定义。 此外,请记住,根据证书颁发机构浏览器论坛(CA/浏览器论坛)代码签名基线要求 (CSBR),对于公开信任的代码签名证书,CN 值必须始终是法律实体的验证名称(例如,Microsoft Corporation)。

如果 Azure 门户上的“新标识验证”按钮处于非活动状态,该怎么办?

  • 如果 Azure 门户上的“新标识验证”按钮处于非活动状态,并且无法将其选中,则不会为帐户分配受信任签名标识验证程序角色。 若要为自己分配角色,请完成 “在受信任签名中分配角色”中的步骤。

如果我的标识验证过期了,该怎么办?

  • 如果未在过期日期之前续订标识验证,证书续订将停止。 与特定证书配置文件关联的所有签名过程都会停止。 若要继续使用受信任签名服务进行签名,请创建另一个标识验证并将其与相关的证书配置文件相关联。 我们会从标识验证到期日期 60 天前开始发送多封提醒邮件,帮助你开启续订标识验证的过程。

如果组织标识验证失败怎么办?

  • 目前无法载入成立时间不到三年的组织,并且标识验证失败。
  • 无法加入基于美国或加拿大的组织。
  • 如果组织已成立三年以上,请检查并确保没有遗漏电子邮件验证链接,该链接会发送到你在创建标识验证请求时输入的主要电子邮件地址。 链接在七天后过期。 如果错过了电子邮件,或者在七天内未选择电子邮件中的链接,请创建新的标识验证请求。
  • 如果标识验证失败,并且原因不在于未及时进行电子邮件验证,则表明 Microsoft 验证团队无法根据你提供的信息确定请求。 即使你在我们请求时提供了更多的文档,但如果我们无法对相关信息进行验证,你也无法加入受信任签名计划。 在此方案中,我们建议删除受信任签名帐户,以便不会为未使用的资源付费。
  • 如果需要其他文档,则已用尽所有 3 次尝试。 因此,我们不能继续加入。

如果需要有关标识验证的帮助,该怎么办?

  • 有关受信任签名中的标识验证的问题,请通过 Azure 支持部门或通过 Microsoft Q&A (使用 标记 Azure 受信任签名)与我们联系。
  • 注意:为正在进行的同一实体创建其他标识验证请求无济于事。 无法加快标识验证请求。

如果电子邮件验证链接已过期,该怎么办?

  • 如果错过了在 7 个动态内单击电子邮件验证,则需要启动新的标识验证请求。 不能在同一请求上重新发送新链接。

如果电子邮件验证显示“失败”,并且你认为你从未收到电子邮件验证链接,该怎么办?

  • 创建另一个标识验证请求。 确保使用的电子邮件地址不是通讯组列表,电子邮件地址可以从外部电子邮件地址接收链接。

证书配置文件

如果受信任签名使用者名称与证书中的名称不同,并且 MSIX 包名称现在不同,该怎么办?

删除证书配置文件是否会撤销证书?

  • 删除证书配置文件不会撤销任何以前颁发的证书或使其签名失效;它们仍然有效。

是否可以将 OU 字段添加到公共信任或公共信任测试或 VBS enclave 证书配置文件?

  • 否。 OU 仅适用于专用信任和专用信任 CI 策略证书。

签名

使用受信任签名可以对哪些类型的文件进行签名?

什么是受信任签名符合性级别?

FIPS 140-2 级别 3 (mHSMs)。

如何在 ELAM 驱动程序资源中包含适用于证书的相应 EKU?

有关用于保护反恶意软件用户模式服务的开机初期启动的反恶意软件 (ELAM) 驱动程序配置的信息,请参阅以下指南:

“从 2022 年开始,所有用户模式反恶意软件服务二进制文件都必须由 Microsoft 受信任签名的签名服务进行签名。 为了安全起见,用于签署反恶意软件二进制文件的受信任签名颁发的验证码证书每 30 天更新一次。 为了避免每次更新证书时都需要更新 ELAM 驱动程序,我们建议反恶意软件供应商在 ELAM 驱动程序资源文件信息的 CertHash 部分中包含受信任签名 PCA 证书 TBS 哈希。 此外,反恶意软件供应商必须在资源文件信息的 EKU 字段中包含其唯一的受信任签名 EKU 标识。 EKU 标识以前缀 1.3.6.1.4.1.311.97.* 开头。”

有关Microsoft ID 验证代码签名 PCA 2021 证书,请参阅 Microsoft PKI 服务存储库

如果在没有受信任签名更新的计算机上运行使用受信任签名进行签名的二进制文件(尤其是标记为 /INTEGRITYCHECK 的二进制文件),会发生什么情况?

  • 如果设置了 /INTEGRITYCHECK 标志,则不会在运行时验证用户的签名,并且不会使用 /INTEGRITYCHECK 运行。
  • 若要检查是否安装了受信任签名更新,建议针对其中一个打包的 /INTEGRITYCHECK 链接 DLL 进行检查。 可以使用测试版本。 这样,就可以在平台外完成检查并确定 /INTEGRITYCHECK 链接的二进制文件的可用性。

我的 Sectigo 证书即将过期。 是否可以获取新签名,或者是否必须使用受信任签名?

目前,我们不会扩展交叉签名证书。 必须使用受信任签名服务进行签名。

受信任签名与合作伙伴中心签署的签名有何不同?

使用合作伙伴中心进行签名是内核模式签名(引入受信任签名时不会更改)。 使用受信任签名对用户模式二进制文件进行签名。 对于与 Windows 安全中心 (WSC) 服务交互的应用程序,必须包含代码完整性位 (/INTEGRITYCHECK)。 如果没有受信任签名进行的签名,则无法向 WSC 注册,并且 Windows Defender 会并行运行。

如何获取验证码证书?

用于使用配置文件签名的 Authenticode 证书永远不会提供给你。 所有证书都安全地存储在服务中,只能在签名时访问。 公共证书始终包含在服务签名的任何二进制文件中。

如何检查时间戳服务是否正常?

运行以下命令:curl http://timestamp.acs.microsoft.com。 如果返回状态代码 200,时间戳服务正常且正在运行。

我在执行专用信任签名时遇到错误。 应采取何种操作?

如果出现内部错误,请检查使用的 CN 名称是否与证书名称匹配。 验证包名称,并将使用者的完整值从 Azure 门户复制到签名过程中的清单文件。

我看到了 SignTool 的状态为“命令成功”,但在检查数字签名时,该文件似乎未签名。 应采取何种操作?

如果签名未显示在数字签名属性中,请运行以下命令:.\signtool.exe verify /v /debug /pa fileName。 并非所有文件类型在“属性”中都有“签名”选项卡。

运行 SignTool + dlib 命令时,如何修复 Azure 虚拟机中的弹出窗口凭据?

  1. 创建 用户分配的托管标识
  2. 将用户分配的托管标识添加到 VM 中:
    1. 选择 VM。
    2. 在左侧菜单上,选择“标识”,然后选择“用户分配”
    3. 选择“添加”以添加托管标识。
  3. 在具有受信任签名证书配置文件签名者角色的资源组(或订阅)中,将用户分配的托管标识添加到该角色。 若要分配正确的角色,请转到“访问控制 (IAM)”>“角色分配”

如何使用 Google Cloud Platform 修复弹出窗口凭据?

  • 由于 Google Cloud Platform (GCP) 默认没有 Azure 托管标识资源,因此请设置 环境凭据。 使用 EnvironmentCredential 类 设置凭据。 建议使用以下变量:

    • AZURE_TENANT_ID Microsoft Entra 租户(目录)ID。
    • AZURE_CLIENT_ID 租户中应用注册的客户端(应用程序)ID。
    • 应用注册生成的客户端密码AZURE_CLIENT_SECRET。
  • 若要创建客户端 ID 和机密,请按照 创建服务主体中的指南进行作。

  • 创建客户端 ID 和机密后,转到具有受信任签名证书配置文件签名者角色的资源组(或订阅),并将此应用添加到该角色。

如果受信任签名帐户已暂停,该怎么办?

如果根据服务的使用条款不当使用或滥用证书,受信任签名会暂停帐户或撤销签名证书或同时撤销签名证书。 在此方案中,我们直接与你互动,并遵循 CA/浏览器论坛 CSBR 中的准则。

如果我更改订阅 ID 或租户 ID,会怎么样?

目前,不能跨订阅、租户、资源组或资源迁移受信任签名资源。 如果要对租户 ID 或订阅 ID 进行任何更改,则必须再次创建所有受信任签名资源。

受信任签名是否颁发 EV 证书?

否,受信任签名不会颁发扩展验证 (EV) 证书。 我们未来不打算颁发 EV 证书。

为什么 SignTool 在对 MSIX 包进行签名时保持循环?

MSIX 签名需要循环多次,因为会对包中的每个应用程序文件和清单文件进行签名。

常见错误代码和缓解措施

错误 详细信息
400 Azure 身份验证错误。 此错误是由于证书高速缓存造成的。 将 "ExcludeCredentials": ["<include list of credentials to be excluded>"] 添加到 JSON 文件。 有关详细信息,请参阅 DefaultAzureCredential 类(Azure.Identity)。
401 未进行身份验证。 注销后再次登录。
404 确保未对配置或防火墙规则进行更改。
"MsalUiRequiredException" 此错误通常由于本地缓存而发生。 从 Azure 刷新缓存后,将解决此错误。
未找到满足所有给定条件的证书。 检查 dlib 路径、dlib 版本、dlib 名称、文件名和 SignTool 版本。 此错误指示 SignTool 正在尝试从本地计算机拉取证书,而不是使用受信任签名证书。
错误:"SignerSign() failed." (-2147024846/0x80070032) 确保使用的是最新版本的 SignTool。
错误代码 (-2147024885/0x8007000b) 对于 MSIX 签名,此错误指示清单文件中的发布者与证书使用者不匹配。 检查清单文件中列出的发布者。
错误代码 (-2147467259/0x80004005) 如果使用服务主体 + 基于证书的身份验证,请检查表下列出的环境变量,了解“具有证书的服务主体”。
无错误代码,SignTool 无提示失败 确保已安装相关的 .NET 运行时版本。
Azure.Identity.CredentialUnavailableException 可能会在 Azure 外部的环境中看到此错误。 如果在 Azure 外部工作,建议将“排除 ManagedIdentity”添加到清单文件中。
403 - 检查“受信任签名”角色。
- 检查 metadata.json 文件中受信任签名帐户名和受信任签名证书配置文件名称。
- 检查 dlib 和 dlib 路径。
- 从 https://docs.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170 安装 C++ Redistributable。
- 检查 .NET 版本、dlib 版本和 Windows SDK 版本。
- 检查是否向尝试对文件进行签名的标识分配了“受信任签名”角色。
- 检查相应的标识验证是否处于“已完成”状态。
- 验证是否从此虚拟机或计算机访问受信任签名终结点。 尝试在不同的虚拟机或计算机上执行该操作。 此错误可能指示网络问题。
- 对于专用信任场景下的 403:执行签名的用户对象 ID 与调用 Get-azCodeSigningRootCert 的用户对象 ID 不同。 相应的对象 ID 必须具有“受信任签名证书配置文件签名者”角色。

成本管理和计费

如何查看受信任签名资源的使用情况成本和计费信息?

若要查看成本信息,请在 Azure 门户中转到订阅概述。 在左侧菜单中,选择“成本管理”。 有关详细信息,请参阅 成本管理

若要查看账单信息,请转到订阅概述。 在左侧菜单中,选择“ 计费”。 有关详细信息,请参阅 计费

定价是按比例的还是无论何时开始使用服务都是全额的?

定价不按比例计算。 无论创建帐户后何时开始使用该服务,都会生成发票,其中包含在创建帐户时所选择的 SKU 全额。

签名配额包括哪些内容?

签名配额包含受信任签名帐户中任何证书配置文件中的所有签名活动。

从受信任签名服务取消注册

如何从受信任签名取消注册?

若要从受信任签名取消注册,请删除受信任签名帐户。 删除帐户还会删除关联的标识验证和证书配置文件。 这会停止证书续订,从而有效停止与这些特定证书配置文件关联的签名过程。 但是,删除帐户不会影响已用于对文件进行签名的证书。