从 2025 年 7 月 28 日起,由于 DigiCert 迁移到新的验证平台,Azure 应用服务托管证书(ASMC)会受到新的颁发和续订要求。 这种变化是由行业范围的符合多透视颁发证明(MPIC)推动的。
有关 DigiCert 中基础更改的详细说明,请参阅 托管传输层安全性 (TLS) 功能的更改。
正在更改的内容
验证方法更新:ASMC 现在对顶点和子域使用 HTTP 令牌验证。 以前,子域是使用 CNAME 记录进行验证的,该记录不需要公共访问。 使用 HTTP 令牌,DigiCert 必须访问应用上的特定终结点才能验证域所有权。
应用服务会自动将所需的令牌置于正确的路径进行验证。 此过程适用于初始证书颁发和续订,这意味着:
- 请求 ASMC 或证明域所有权的客户体验保持不变。
- ASMC 创建或续订的所有 API 和 CLI 请求有效负载都不受影响。
- 无需客户作即可放置或管理令牌。
重要
虽然应用服务在续订期间继续自动处理令牌放置,但 DigiCert 仍必须访问应用上的验证终结点。 续订时仍需要公共访问。 如果应用不可公开访问,即使令牌正确放置,续订也会失败。
受影响的方案
如果无法创建或续订 ASMC,则无法:
网站不可公开访问:
- 需要应用的公共辅助功能。 如果应用只能通过专用配置进行访问,例如需要客户端证书、禁用公用网络访问、使用专用终结点或应用 IP 限制,则无法创建或续订托管证书。
- 限制公共访问的其他配置(例如防火墙、身份验证网关或自定义访问策略)也可能会影响托管证书颁发或续订的资格。
站点是 Azure 流量管理器“嵌套”或“外部”终结点:
- 证书创建和续订仅支持流量管理器上的“Azure 终结点”。
- 不支持“嵌套终结点”和“外部终结点”。
站点依赖于 *.trafficmanager.cn 域:
- 不支持创建或续订 *.trafficmanager.cn 域的证书。
现有证书在到期前保持有效(最长六个月),但如果配置不受支持,则不会自动续订。
注释
除了新更改之外,所有现有的 ASMC 要求仍适用。
确定受影响的资源
可以使用 Azure Resource Graph (ARG) 查询来帮助识别每个方案中可能受影响的资源。 这些查询作为起点提供,可能无法捕获每个配置。 查看环境,了解任何唯一的设置或自定义配置。
方案 1:网站不可公开访问
此 ARG 查询检索已禁用公用网络访问属性或配置为使用客户端证书的站点列表。 然后,它会针对使用应用服务托管证书(ASMC)的站点筛选其自定义主机名 SSL 绑定。 这些证书受即将到来的更改影响。 但是,此查询不提供完整的覆盖范围,因为可能有其他配置影响对应用的公共访问,而此处未包含这些配置。 最终,此查询充当用户的有用指南,但建议全面审查环境。 可以复制此查询,将其粘贴到 ARG 资源管理器中,然后单击“运行查询”以查看环境的结果。
// ARG Query: Identify App Service sites that commonly restrict public access and use ASMC for custom hostname SSL bindings
resources
| where type == "microsoft.web/sites"
// Extract relevant properties for public access and client certificate settings
| extend
publicNetworkAccess = tolower(tostring(properties.publicNetworkAccess)),
clientCertEnabled = tolower(tostring(properties.clientCertEnabled))
// Filter for sites that either have public network access disabled
// or have client certificates enabled (both can restrict public access)
| where publicNetworkAccess == "disabled"
or clientCertEnabled != "false"
// Expand the list of SSL bindings for each site
| mv-expand hostNameSslState = properties.hostNameSslStates
| extend
hostName = tostring(hostNameSslState.name),
thumbprint = tostring(hostNameSslState.thumbprint)
// Only consider custom domains (exclude default *.chinacloudsites.cn) and sites with an SSL certificate bound
| where tolower(hostName) !endswith "chinacloudsites.cn" and isnotempty(thumbprint)
// Select key site properties for output
| project siteName = name, siteId = id, siteResourceGroup = resourceGroup, thumbprint, publicNetworkAccess, clientCertEnabled
// Join with certificates to find only those using App Service Managed Certificates (ASMC)
// ASMCs are identified by the presence of the "canonicalName" property
| join kind=inner (
resources
| where type == "microsoft.web/certificates"
| extend
certThumbprint = tostring(properties.thumbprint),
canonicalName = tostring(properties.canonicalName) // Only ASMC uses the "canonicalName" property
| where isnotempty(canonicalName)
| project certName = name, certId = id, certResourceGroup = tostring(properties.resourceGroup), certExpiration = properties.expirationDate, certThumbprint, canonicalName
) on $left.thumbprint == $right.certThumbprint
// Final output: sites with restricted public access and using ASMC for custom hostname SSL bindings
| project siteName, siteId, siteResourceGroup, publicNetworkAccess, clientCertEnabled, thumbprint, certName, certId, certResourceGroup, certExpiration, canonicalName
方案 2:站点是 Azure 流量管理器“嵌套”或“外部”终结点
如果应用服务使用通过 Azure 流量管理器路由的自定义域,则配置文件包含 外部 或 嵌套终结点时,可能会受到影响。 在新的验证下,证书颁发或续订不支持这些终结点类型。
为了帮助识别订阅中受影响的流量管理器配置文件,我们建议使用此由Microsoft团队开发的 PowerShell 脚本 。 它会扫描包含非 Azure 终结点的配置文件,并输出可能受影响的资源列表。
注释
至少需要读者访问所有订阅才能成功运行脚本。
若要运行该脚本,请执行以下操作:
- 从 GitHub 下载 PowerShell 脚本。
- 打开 PowerShell 并导航到脚本位置。
- 运行脚本。
.\TrafficManagerNonAzureEndpoints.ps1
方案 3:站点依赖于 *.trafficmanager.cn 域
此 ARG 查询可帮助你识别颁发给 *.trafficmanager.cn 域的应用服务托管证书(ASMC)。 此外,它还检查任何 Web 应用当前是否使用这些证书进行自定义域 SSL 绑定。 可以复制此查询,将其粘贴到 ARG 资源管理器中,然后单击“运行查询”以查看环境的结果。
// ARG Query: Identify App Service Managed Certificates (ASMC) issued to *.trafficmanager.cn domains
// Also checks if any web apps are currently using those certificates for custom domain SSL bindings
resources
| where type == "microsoft.web/certificates"
// Extract the certificate thumbprint and canonicalName (ASMCs have a canonicalName property)
| extend
certThumbprint = tostring(properties.thumbprint),
canonicalName = tostring(properties.canonicalName) // Only ASMC uses the "canonicalName" property
// Filter for certificates issued to *.trafficmanager.cn domains
| where canonicalName endswith "trafficmanager.cn"
// Select key certificate properties for output
| project certName = name, certId = id, certResourceGroup = tostring(properties.resourceGroup), certExpiration = properties.expirationDate, certThumbprint, canonicalName
// Join with web apps to see if any are using these certificates for SSL bindings
| join kind=leftouter (
resources
| where type == "microsoft.web/sites"
// Expand the list of SSL bindings for each site
| mv-expand hostNameSslState = properties.hostNameSslStates
| extend
hostName = tostring(hostNameSslState.name),
thumbprint = tostring(hostNameSslState.thumbprint)
// Only consider bindings for *.trafficmanager.cn custom domains with a certificate bound
| where tolower(hostName) endswith "trafficmanager.cn" and isnotempty(thumbprint)
// Select key site properties for output
| project siteName = name, siteId = id, siteResourceGroup = resourceGroup, thumbprint
) on $left.certThumbprint == $right.thumbprint
// Final output: ASMCs for *.trafficmanager.cn domains and any web apps using them
| project certName, certId, certResourceGroup, certExpiration, canonicalName, siteName, siteId, siteResourceGroup
缓解指南
方案 1:网站不可公开访问
无法从公共 Internet 访问的应用无法创建或续订 ASMC。 这些配置可能包括通过专用终结点、防火墙、IP 筛选、客户端证书、身份验证网关或自定义访问策略强制实施的限制。
我们认识到,使应用程序可公开访问可能与客户安全策略冲突或带来风险。 建议的缓解措施是将 ASMC 替换为自定义证书并更新自定义域的 TLS/SSL 绑定。
建议的步骤:
获取自定义域的证书
可以使用满足安全性和作要求的任何证书提供程序。 证书应与 Azure 应用服务兼容,理想情况下存储在 Azure Key Vault 中,以便更轻松地管理。将证书添加到站点
获取自定义域的证书后,需要将其上传到应用服务应用并将其配置为使用。 获取自定义域的证书后,需要将其上传到应用服务应用并将其配置为使用。小窍门
确保 授权应用服务从 Key Vault 读取证书。 使用文档中列出的特定标识,而不是站点的托管标识。
更新自定义域绑定
重要
为了避免任何服务停机,请不要删除 TLS/SSL 绑定。 可以使用添加到 Web 应用的新证书指纹或名称更新绑定,而无需删除当前绑定。
删除 ASMC 上的其他依赖项
自定义域 TLS/SSL 绑定
确定 ASMC 是否主动用于 Web 应用的自定义域配置中的 TLS/SSL 绑定。 如果是,请按照上述步骤替换证书并更新绑定。应用程序代码中使用的证书
证书可用于应用程序代码中用于身份验证等任务。 如果应用使用WEBSITE_LOAD_CERTIFICATES
设置来加载 ASMC,请更新代码以改用新证书。
删除 ASMC 资源
确认环境或服务不再依赖于 ASMC 后,请删除与站点关联的 ASMC。
删除 ASMC 有助于防止意外重复使用,这可能会导致证书无法续订时服务停机。
临时缓解:DigiCert IP 允许列表
某些客户可以选择将 DigiCert 的域验证 IP 列为短期解决方法。 这可能有助于在从使用 ASMC 过渡到不可公开访问的网站时维护证书颁发。
注释
允许列表 DigiCert 的 IP 不是官方或受支持的长期解决方案。 Microsoft的立场仍然是 ,需要公共访问 以避免潜在的服务中断。 请记住:
- DigiCert 管理自己的 IP,并可能会更改它们而不通知。
- Microsoft无法控制 DigiCert 的基础结构,无法保证文档保持最新状态。
- 如果 DigiCert 更新其 IP,Microsoft不提供警报。
- 如果使用此方法,需自行承担风险。
有关配置访问限制的指导,请参阅 设置 Azure 应用服务访问限制。
方案 2:站点是 Azure 流量管理器“嵌套”或“外部”终结点
仅支持“Azure 终结点”。 ASMC 验证不支持“嵌套”和“外部”终结点。
建议的缓解措施:
- 切换到 Azure 终结点或使用受自定义证书保护的自定义域。
- 有关将应用服务用作 Azure 流量管理器终结点的指导,请参阅 应用服务和流量管理器配置文件。
方案 3:站点依赖于 *.trafficmanager.cn 域
不支持域 *.trafficmanager.cn
证书。 如果应用依赖于此域并使用 ASMC,则需要使用自定义域和证书删除该依赖项并保护应用。
建议的步骤:
将自定义域添加到网站
可以配置指向终结点的自定义域trafficmanager.cn
,并使用自己的证书对其进行保护。- 如果自定义域尚未推出或当前未提供流量,请参阅 为应用设置自定义域名。
- 如果域已处于活动状态且为流量提供服务,请参阅 迁移活动域。
重要
如果站点限制公共访问,请不要使用 ASMC 来保护自定义域。 此方案受验证更改影响,将导致证书颁发或续订失败。
获取自定义域的证书
可以使用满足安全性和作要求的任何证书提供程序。 证书应与 Azure 应用服务兼容,理想情况下存储在 Azure Key Vault 中,以便更轻松地管理。将证书添加到站点
小窍门
确保 授权应用服务从 Key Vault 读取证书。 使用文档中列出的特定标识,而不是站点的托管标识。
创建自定义域绑定
删除 ASMC 上的其他依赖项
自定义域 TLS/SSL 绑定
确定 ASMC 是否主动用于 Web 应用的自定义域配置中的 TLS/SSL 绑定。 如果是,请按照上述步骤替换证书并更新绑定。应用程序代码中使用的证书
证书可用于应用程序代码中用于身份验证等任务。 如果应用使用WEBSITE_LOAD_CERTIFICATES
设置来加载 ASMC,请更新代码以改用新证书。
删除 ASMC 资源
确认环境或服务不再依赖于 ASMC 后,请删除与站点关联的 ASMC。
删除 ASMC 有助于防止意外重复使用,这可能会导致证书无法续订时服务停机。
常见问题 (FAQ)
为什么现在需要公共访问?
由于 MPIC 符合性,应用服务将迁移到 Http 令牌验证,以便所有 ASMC 创建和续订请求。 DigiCert 必须通过访问应用上的特定终结点来验证域所有权。 仅当应用可公开访问时,才能使用 Http 令牌成功验证。
我仍然可以使用 CNAME 记录吗?
是的,你仍然可以将 CNAME 记录用于域名系统(DNS)路由和验证域所有权。
如果我允许列出 DigiCert IP 地址,该怎么办?
允许列出 DigiCert 的域验证 IP 可以作为临时解决方法。 但是,Microsoft无法保证这些 IP 不会更改。 DigiCert 可能会在没有通知的情况下更新它们,Microsoft不维护这些 IP 的文档。 客户负责监视和维护此配置。
*.chinacloudsites.cn 的证书是否受影响?
否,这些更改不适用于 *.chinacloudsites.cn 证书。 ASMC 仅颁发给客户的自定义域,而不是默认主机名。