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

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

自定义域后缀定义了应用服务环境使用的根域。 在 Azure 应用服务的公共版本中,所有 Web 应用的默认根域为 chinacloudsites.cn。 对于 ILB 应用服务环境,默认根域为 appserviceenvironment.cn。 由于 ILB 应用服务环境是组织虚拟网络的内部环境,因此用户可以使用与组织内部虚拟网络对应的默认域和根域。 例如,名为 Zava 的组织可能会对仅可在 Zava 虚拟网络中解析和访问的应用使用默认根域 internal.zava.com 。 可以通过访问 APP-NAME.internal.zava.com URL 访问此虚拟网络中的应用。

本文介绍如何在 Azure 门户中为应用服务环境配置自定义域后缀。 还提供了用于使用 Azure 资源管理器模板(ARM 模板)的 JSON 代码片段。

先决条件

  • 应用服务环境 v3 的 ILB 变体。 如果没有应用服务环境,请参阅 “创建应用服务环境 v3”。

  • 满足以下条件的有效 SSL/TLS 证书:

    • 证书必须存储在 Azure Key Vault 中。

    • 证书必须小于 20 kb。

    • 证书必须使用个人信息交换(.pfx)格式。 有关将证书与应用服务配合使用的详细信息,请参阅 在 Azure 应用服务中添加和管理 TLS/SSL 证书。 目前不支持隐私增强邮件(.pem)格式的证书。

  • 对于基于 TLS 的连接,与自定义域后缀终结点的连接必须使用服务器名称指示(SNI)。

重要注意事项

查看以下使用自定义域后缀的重要注意事项:

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

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

  • 自定义域后缀适用于应用服务环境。 此功能不同于 Azure 应用服务应用中的 自定义域绑定 。 有关自定义域绑定的详细信息,请参阅 在 Azure 应用服务中设置现有自定义域

配置托管标识

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

可以使用系统分配的或用户分配的托管标识。 若要创建用户分配的托管标识,请参阅 Azure 门户中管理用户分配的托管标识。 如果想要使用系统分配的托管标识,并且尚未向应用服务环境分配托管标识,自定义域后缀门户体验将指导你完成创建过程。

Tip

可以在 创建自定义域后缀的同时创建托管标识。

使用系统分配的托管标识

若要为应用服务环境使用系统分配的托管标识,请执行以下操作:

  1. Azure 门户中,转到应用服务环境资源。

  2. 在左侧菜单中,选择“设置”>“标识”

  3. “系统分配 ”选项卡上,将 “状态 ”设置为 “开”:

    显示 Azure 门户中应用服务环境的系统分配托管标识的屏幕截图。

添加用户分配的托管标识

若要将用户分配的托管标识添加到应用服务环境,请执行以下操作:

  1. 在“用户分配”选项卡上,选择“+ 添加”

  2. “添加用户分配的托管标识 ”窗格中,选择 订阅

  3. 搜索并选择要使用的用户分配的托管标识,然后选择“ 添加

    显示如何在 Azure 门户中为应用服务环境添加用户分配的托管标识的屏幕截图。

确保访问 Azure Key Vault

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

使用保管库访问策略

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

检查资源的分配:

  1. Azure 门户中,转到 Azure 密钥保管库资源。

  2. 在左侧菜单中,选择 “访问策略”。

  3. 在右窗格中,在结果列表中找到分配的托管标识:

    屏幕截图显示在 Azure 密钥保管库上分配了“获取”密钥权限访问策略的托管标识。

使用 Azure 基于角色的访问控制

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

检查资源的分配:

  1. Azure 门户中,转到 Azure 密钥保管库资源。

  2. 在左侧菜单中,选择“访问控制 (IAM)”。

  3. “角色分配 ”选项卡上,将搜索 的角色 筛选器设置为 Key Vault 机密用户

  4. 在结果列表中找到分配的托管标识:

    显示 Azure 密钥保管库上分配了“Key Vault 机密用户”角色的托管标识的屏幕截图。

检查托管标识证书

应用服务环境从分配的托管标识中获取自定义域后缀的证书。

  • 证书必须满足 先决条件中所述的条件。

  • 证书必须是所选自定义域名的通配符证书。 例如,域 internal.contoso.com 需要允许所有可能的连接的 *.internal.contoso.com证书。

  • 如果证书包含 SAN *.scm.CUSTOM-DOMAIN条目,则还可以从 APP-NAME.scm.CUSTOM-DOMAIN URL 访问 scm 站点。 只能使用基本身份验证通过自定义域访问 scm。 只能通过默认根域使用单一登录。

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

配置对 Azure Key Vault 的网络访问

密钥保管库可以被公开访问,或者通过部署有应用服务环境的子网中可访问的专用终结点进行访问。

若要配置专用终结点,请参阅 将 Key Vault 与 Azure 专用链接集成

如果使用公共访问,则可以保护密钥保管库,使其仅接受来自应用服务环境的出站 IP 地址的流量。 访问密钥保管库时,应用服务环境使用平台出站 IP 地址作为源地址。

找到平台出站 IP 地址:

  1. Azure 门户中,转到应用服务环境资源。

  2. 在左侧菜单中,选择 “设置>IP 地址”。

  3. 在右侧窗格的 “出站 ”部分下,检查 “平台出站地址 ”值:

    显示如何在 Azure 门户中查找应用服务环境的平台出站地址的屏幕截图。

配置自定义域后缀

使用以下过程在 Azure 门户中为应用服务环境创建和配置自定义域后缀。 如果需要,可以使用 ARM 模板

  1. Azure 门户中,导航到你的应用服务环境。

  2. 在左侧菜单中,选择 “设置>自定义域”后缀

  3. 选择 “添加自定义域后缀”。

    显示如何在 Azure 门户中为应用服务环境添加自定义域后缀的屏幕截图。

  4. 输入 自定义域名,例如 zava.com

  5. 为应用服务环境选择 托管标识

    选择现有的系统分配或用户分配的托管标识,或通过选择 “添加标识”来配置新的托管标识:

    显示配置自定义域后缀时如何为应用服务环境添加托管标识的屏幕截图。

  6. 通过选择“选择证书”识别自定义域名后缀的证书

    显示如何在 Azure 门户中选择要用于自定义域后缀的证书的屏幕截图。

    “选择证书 ”窗格中,选择订阅、密钥保管库和证书。 若要应用更改,请选择 “选择”。

    备注

    如果使用专用终结点访问密钥保管库,则无法使用门户界面选择证书。 由于网络访问仅限于专用终结点,因此必须手动输入证书 URL。

  7. 在主菜单栏中,选择“ 保存

    显示如何在 Azure 门户中保存自定义域后缀更改的屏幕截图。

    系统可能需要几分钟才能传播自定义域后缀更改。

    通过选择“ 刷新”检查配置状态。 页面顶部的横幅会更新最新进度。

    更新完成后,横幅指示已配置自定义域后缀:

    Azure 门户页面横幅的屏幕截图,其中显示了对自定义域后缀的成功更改。

使用 ARM 模板配置后缀

作为 Azure 门户的替代方法,可以使用 ARM 模板为应用服务环境配置自定义域后缀。 在模板文件中,指定自定义 DNS 后缀配置、ILB 模式和托管标识的属性。

若要使用 ARM 模板,请准备配置:

使用用户分配的托管标识

以下代码片段显示了一个缩写的 ARM 模板,其中包含用户分配的托管标识设置的配置。 在模板 JSON(.json) 文件中,设置以下属性:

财产 价值
identity > type UserAssigned
identity > userAssignedIdentities 用户分配的 ID。
customDnsSuffixConfiguration > dnsSuffix DNS 后缀。
customDnsSuffixConfiguration > certificateUrl 证书的 URL。
customDnsSuffixConfiguration > keyVaultReferenceIdentity Azure 密钥保管库的 ID。
internalLoadBalancingMode ILB 应用服务环境的模式:WebPublishing或两者兼有。
"resources": [
{
    "apiVersion": "2022-03-01",
    "type": "Microsoft.Web/hostingEnvironments",
    "name": ...,
    "location": ...,
    "identity": {
        "type": "UserAssigned",
        "userAssignedIdentities": {
            "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/asev3-cdns-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ase-cdns-managed-identity"
        },
        "internalLoadBalancingMode": "Web, Publishing",
        etc...
    }
}

使用系统分配的托管标识

以下代码片段显示了一个缩写的 ARM 模板,其中包含系统分配的托管标识设置的配置。 在模板 JSON(.json) 文件中,设置以下属性:

财产 价值
identity > type SystemAssigned
customDnsSuffixConfiguration > dnsSuffix DNS 后缀。
customDnsSuffixConfiguration > certificateUrl 证书的 URL。
customDnsSuffixConfiguration > keyVaultReferenceIdentity systemassigned
internalLoadBalancingMode ILB 应用服务环境的模式:WebPublishing或两者兼有。
"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 服务器

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

  1. 为自定义域创建一个区域。

  2. 在该区域中创建一条 A 记录,该记录将 * (星号通配符)指向应用服务环境使用的入站 IP 地址。

  3. 在同一区域中创建一条 A 记录,该记录将(at 符号)指向 @ 应用服务环境使用的入站 IP 地址。

  4. (可选)为 scm 子域创建一个区域,并使用 *(星号通配符)记录,将该记录指向应用服务环境使用的入站 IP 地址。

配置专用 DNS 区域

若要配置 Azure 专用 DNS 区域,请执行以下步骤:

  1. 为自定义域创建一个专用 DNS 区域,例如 internal-zava.com

  2. 在区域中创建一条 A 记录,该记录将 * (星号通配符)指向应用服务环境使用的入站 IP 地址。

  3. 在区域中创建一条 A 记录,将 @(@ 符号)指向应用服务环境使用的入站 IP 地址:

    Azure 门户中,可以通过选择 DNS 管理>记录集来查看专用 DNS 区域记录:

    显示 Azure 门户中的专用 DNS 区域记录集的屏幕截图。

  4. 将专用 DNS 区域链接到应用服务环境的虚拟网络:

    Azure 门户中,可以通过选择 DNS 管理>虚拟网络链接来检查虚拟网络链接

    显示 Azure 门户中专用 DNS 区域与应用服务环境之间的虚拟网络链接的屏幕截图。

  5. (可选)在区域中创建一条 A 记录,该记录将 *.scm (位于 scm)指向应用服务环境使用的入站 IP 地址。

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

备注

为自定义域后缀配置 DNS 时,最佳做法是为 默认域后缀配置 DNS。 此操作有助于确保所有应用服务功能按预期运行。

检查应用的域访问权限

为应用服务环境配置自定义域后缀和 DNS 后,可以检查 Web 应用并确认添加分配的自定义域。

  1. Azure 门户中,转到应用服务环境中的应用。

  2. 在左侧菜单中,选择 “设置>自定义域”。

显示 Azure 门户中应用服务环境应用可用的自定义域后缀的屏幕截图。

通过 HTTPS 安全地访问 ILB 应用服务环境中的应用,方法是转到配置的自定义域或默认域 appserviceenvironment.cn,如下图所示。 使用默认应用服务环境域访问应用的功能,自定义域是应用服务环境 v3 的独特功能。

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

故障排除

应用服务平台会定期检查应用服务环境是否可以访问 Azure 密钥保管库,以及证书是否有效。 如果托管标识、密钥保管库或应用服务环境的权限或网络设置未正确设置或最近更改,则无法配置后缀。 在 Azure 门户中,横幅显示类似于以下示例的错误:

Azure 门户中自定义域后缀的配置错误的屏幕截图。

查看先决条件以确保配置了所需的权限。 如果应用服务平台检测到你的证书已降级或过期,则也会出现类似的错误消息。