应用服务环境的自定义域后缀

应用服务环境是一项 Azure 应用服务功能,可提供完全隔离和专用的环境,以便高度安全地运行应用服务应用。 应用服务环境的默认域后缀的 DNS 设置不会将你的应用限制为只能由这些名称访问。 自定义域后缀是一项内部负载均衡器 (ILB) 应用服务环境功能,可让你使用自己的域后缀来访问应用服务环境中的应用。

如果没有应用服务环境,请参阅如何创建应用服务环境 v3

备注

本文介绍了应用服务环境 v3 的特性、优点和用例,它与应用服务隔离 v2 计划一起使用。

自定义域后缀定义了可供应用服务环境使用的根域。 在 Azure 应用服务的公共变体中,所有 Web 应用的默认根域均为 chinacloudsites.cn。 对于 ILB 应用服务环境,默认根域是 appserviceenvironment.cn。 但是,由于 ILB 应用服务环境在客户的虚拟网络内部,因此客户可以使用根域,以及适合在公司内部虚拟网络中使用的默认域。 例如,对于只能在 Contoso 虚拟网络内解析和访问的应用,假定的 Contoso Corporation 可能会使用的默认根域 internal.contoso.com。 可以通过访问 APP-NAME.internal.contoso.com 来访问此虚拟网络中的应用。

自定义域后缀适用于应用服务环境。 此功能不同于应用服务上的自定义域绑定。 有关自定义域绑定的详细信息,请参阅将现有自定义 DNS 名称映射到 Azure 应用服务

如果用于自定义域后缀的证书包含 *.scm.CUSTOM-DOMAIN 的使用者备用名称 (SAN) 条目,则也可从 APP-NAME.scm.CUSTOM-DOMAIN 访问 scm 站点。 只能使用基本身份验证通过自定义域访问 scm。 只能通过默认根域使用单一登录。

与早期版本不同,只能使用默认域后缀访问应用服务环境 v3 上应用服务的 FTPS 终结点。

与自定义域后缀终结点的连接需要使用服务器名称指示 (SNI) 进行基于 TLS 的连接。

先决条件

  • 应用服务环境 v3 的 ILB 变体。
  • 若要提取证书,必须使具有证书的 Azure Key Vault 可供公开访问。
  • 有效的 SSL/TLS 证书必须以 .PFX 格式存储在 Azure Key Vault 中。 有关在应用服务中使用证书的详细信息,请参阅在 Azure 应用服务中添加 TLS/SSL 证书

托管标识

托管标识用于对存储 SSL/TLS 证书的 Azure 密钥保管库进行身份验证。 如果你当前没有与应用服务环境关联的托管标识,则需要配置一个。

可以使用系统分配的或用户分配的托管标识。 若要创建用户分配的托管标识,请参阅管理用户分配的托管标识。 如果你要使用系统分配的托管标识,但尚未向应用服务环境分配这种标识,自定义域后缀门户体验将指导你完成创建过程。 或者,可以转到应用服务环境的“标识”页,并在其中配置和分配托管标识。

若要启用系统分配的托管标识,请将“状态”设置为“打开”。

应用服务环境的示例系统分配的托管标识的屏幕截图。

若要分配用户分配的托管标识,请选择“添加”,然后找到要使用的托管标识。

应用服务环境的示例用户分配的托管标识的屏幕截图。

将托管标识分配到应用服务环境后,请确保该托管标识对 Azure 密钥保管库拥有足够的权限。 可以使用保管库访问策略或 Azure 基于角色的访问控制。

如果你使用保管库访问策略,则托管标识至少需要密钥保管库的“获取”机密权限。

托管标识的示例密钥保管库访问策略的屏幕截图。

如果你选择使用 Azure 基于角色的访问控制来管理对密钥保管库的访问,则至少需要为托管标识提供“密钥保管库机密用户”角色。

托管标识的示例密钥保管库基于角色的访问控制的屏幕截图。

证书

自定义域后缀的证书必须存储在 Azure 密钥保管库中。 证书必须以 .PFX 格式上传。 目前不支持 .PEM 格式的证书。 应用服务环境将使用你选择的托管标识来获取证书。 密钥保管库必须可公开访问,但你可以通过限制对应用服务环境的出站 IP 的访问来锁定密钥保管库。 可以在应用服务环境的“IP 地址”页上的“默认出站地址”下,找到应用服务环境的出站 IP。 需要将这两个 IP 添加到密钥保管库的防火墙规则中。 有关密钥保管库网络安全和防火墙规则的详细信息,请参阅配置 Azure 密钥保管库防火墙和虚拟网络。 密钥保管库也不得具有任何专用终结点连接

允许自定义域后缀功能的密钥保管库示例网络页的屏幕截图。

你的证书必须是所选自定义域名的通配符证书。 例如,internal.contoso.com 需要一个涵盖 *.internal.contoso.com 的证书。 如果自定义域后缀使用的证书包含 scm 的使用者备用名称 (SAN) 条目(例如 *.scm.internal.contoso.com),则也可使用自定义域后缀来访问 scm 站点。

如果你在 Azure Key Vault 中轮换证书,则应用服务环境将在 24 小时内获取更改。

使用 Azure 资源管理器配置自定义域后缀

若要使用 Azure 资源管理器模板为应用服务环境配置自定义域后缀,需要包含以下属性。 确保满足先决条件,托管标识和证书可供访问并且对 Azure 密钥保管库拥有适当的权限。

在模板中分配托管标识之前,需要配置该托管标识并确保它存在。 有关托管标识的详细信息,请参阅托管标识概述

使用用户分配的托管标识

"resources": [
{
    "apiVersion": "2022-03-01",
    "type": "Microsoft.Web/hostingEnvironments",
    "name": ...,
    "location": ...,
    "identity": {
        "type": "UserAssigned",
        "userAssignedIdentities": {
            "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/asev3-cdns-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ase-cdns-managed-identity"
        }
    },
    "properties": {
        "customDnsSuffixConfiguration": {
            "dnsSuffix": "antares-test.net",
            "certificateUrl": "https://kv-sample-key-vault.vault.azure.cn/secrets/wildcard-antares-test-net",
            "keyVaultReferenceIdentity": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/asev3-cdns-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ase-cdns-managed-identity"
        },
        "internalLoadBalancingMode": "Web, Publishing",
        etc...
    }
}

使用系统分配的托管标识

"resources": [
{
    "apiVersion": "2022-03-01",
    "type": "Microsoft.Web/hostingEnvironments",
    "name": ...,
    "location": ...,
    "identity": {
        "type": "SystemAssigned"
    }
    "properties": {
        "customDnsSuffixConfiguration": {
            "dnsSuffix": "antares-test.net",
            "certificateUrl": "https://kv-sample-key-vault.vault.azure.cn/secrets/wildcard-antares-test-net",
            "keyVaultReferenceIdentity": "systemassigned"
        },
        "internalLoadBalancingMode": "Web, Publishing",
        etc...
    }
}

DNS 配置

若要使用自定义域后缀访问应用服务环境中的应用,你需要配置自己的 DNS 服务器,或在自定义域的 Azure 专用 DNS 区域中配置 DNS。

如果要使用自己的 DNS 服务器,请添加以下记录:

  1. 为自定义域创建一个区域。
  2. 在该区域中创建 A 记录,该记录将 * 指向应用服务环境使用的入站 IP 地址。
  3. 在该区域中创建 A 记录,该记录将 @ 指向应用服务环境使用的入站 IP 地址。
  4. (可选)使用 * A 记录为 scm 子域创建一个区域,该记录指向应用服务环境所使用的入站 IP 地址

在 Azure DNS 专用区域中配置 DNS:

  1. 创建一个与自定义域同名的 Azure DNS 专用区域。 在以下示例中,自定义域是 internal.contoso.com。
  2. 在该区域中创建 A 记录,该记录将 * 指向应用服务环境使用的入站 IP 地址。
  3. 在该区域中创建 A 记录,该记录将 @ 指向应用服务环境使用的入站 IP 地址。 自定义域后缀的示例 DNS 配置的屏幕截图。
  4. 将 Azure DNS 专用区域链接到应用服务环境的虚拟网络。 专用 DNS 区域的示例虚拟网络链接的屏幕截图。
  5. (可选)在该区域中,创建一条将 *.scm 指向应用服务环境所用入站 IP 地址的 A 记录。

有关为域配置 DNS 的详细信息,请参阅使用应用服务环境

访问应用

为应用服务环境配置自定义域后缀和 DNS 后,可以转到应用服务环境中某个应用服务应用的“自定义域”页,并确认为该应用添加了分配的自定义域。

应用服务环境自定义域后缀功能创建的应用的示例自定义域的屏幕截图。

可以转到配置的自定义域或默认域 appserviceenvironment.cn,通过 HTTPS 安全访问 ILB 应用服务环境中的应用,如上图所示。 使用默认应用服务环境域和自定义域访问应用的功能是仅在应用服务环境 v3 上受支持的独特功能。

不过,与公共多租户服务上运行的应用一样,你也可以为单个应用配置自定义主机名,然后为单个应用配置唯一的 SNI TLS/SSL 证书绑定

故障排除

如果未正确设置托管标识、密钥保管库或应用服务环境的权限或网络设置,将无法配置自定义域后缀,并且会收到类似于以下示例的错误。 查看先决条件以确保设置了所需的权限。 如果应用服务平台检测到你的证书已降级或过期,则也会出现类似的错误消息。

示例自定义域后缀错误消息的屏幕截图。

后续步骤