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

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

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

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

备注

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

自定义域后缀定义了应用服务环境使用的根域。 在 Azure 应用服务的公共变体中,所有 Web 应用的默认根域均为 azurewebsites.net。 对于 ILB 应用服务环境,默认根域是 appserviceenvironment.net。 但是,由于 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 变体。
  • 有效的 SSL/TLS 证书必须以 .PFX 格式存储在 Azure Key Vault 中。 有关在应用服务中使用证书的详细信息,请参阅在 Azure 应用服务中添加 TLS/SSL 证书
  • 证书大小必须小于 20 KB。

托管的标识

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

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

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

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

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

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

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

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

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

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

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

证书

自定义域后缀的证书必须存储在 Azure 密钥保管库中。 证书必须以 .PFX 格式上传并且大小必须小于 20 KB。 目前不支持 .PEM 格式的证书。 应用服务环境使用你选择的托管标识来获取证书。

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

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

对密钥保管库的网络访问

可以公开访问密钥保管库,也可以通过专用终结点从应用服务环境部署到的子网进行访问。 如需了解如何配置专用终结点,请参阅将密钥保管库与 Azure 专用链接集成。 如果使用公共访问,则可以保护密钥保管库,使其仅接受来自应用服务环境的出站 IP 地址的流量。 访问密钥保管库时,应用服务环境使用平台出站 IP 地址作为源地址。 可以在 Azure 门户中的“IP 地址”页找到 IP 地址。

Azure 门户中“IP 地址”页的屏幕截图。

使用 Azure 门户配置自定义域后缀

  1. Azure 门户中,导航到你的应用服务环境的“自定义域后缀”页。
  2. 输入自定义域名。
  3. 选择你为应用服务环境定义的托管标识。 可以使用系统分配的或用户分配的托管标识。 如果尚未配置托管标识,则可以配置托管标识。 可以直接在自定义域后缀页上使用托管标识选择框中的“添加标识”选项来配置托管标识。 用于选择和更新应用服务环境托管标识的配置窗格的屏幕截图。
  4. 选择自定义域后缀的证书。
    1. 如果你使用专用终结点访问密钥保管库,因为网络访问仅限于专用终结点,因此无法使用门户界面来选择证书。 必须手动输入证书 URL。
  5. 在页面顶部选择“保存”。 若要查看最新的配置更新,请刷新页面。 自定义域后缀门户体验的概述的屏幕截图。
  6. 设置自定义域后缀配置需要几分钟时间。 通过选择页面顶部的“刷新”来检查状态。 横幅中会更新最新进度。 完成后,横幅将指出自定义域后缀已配置。 示例自定义域后缀成功页的屏幕截图。

使用 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.net/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.net/secrets/wildcard-antares-test-net",
            "keyVaultReferenceIdentity": "systemassigned"
        },
        "internalLoadBalancingMode": "Web, Publishing",
        etc...
    }
}

使用 Azure 资源浏览器配置自定义域后缀

或者,可以使用 Azure 资源浏览器更新现有的 ILB 应用服务环境。

  1. 在资源浏览器中,转到应用服务环境的节点(“订阅”>{你的订阅}>“resourceGroups”>{你的资源组}>“提供程序”>“Microsoft.Web”>“hostingEnvironments”) 。 然后选择要更新的特定应用服务环境。
  2. 选择上方工具栏中的“读/写”,允许在资源浏览器中进行交互式编辑。
  3. 选择“编辑”按钮,使资源管理器模板可供编辑。
  4. 滚动到右窗格底部。 customDnsSuffixConfiguration 属性位于底部。
  5. 输入 dnsSuffix、certificateUrl 和 keyVaultReferenceIdentity 的值。
  6. 导航到 identity 属性并输入与所用托管标识关联的详细信息。
  7. 选择顶部的“PUT”按钮,以提交对应用服务环境的更改
  8. customDnsSuffixConfiguration 下的 provisioningState 将提供配置更新的状态。

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 外,还应考虑为默认域后缀配置 DNS,以确保所有应用服务功能都能按预期运行。

访问应用

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

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

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

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

故障排除

应用服务平台会定期检查应用服务环境是否可以访问密钥保管库,以及证书是否有效。 如果未正确设置托管标识、密钥保管库或应用服务环境的权限或网络设置,或者这些内容近期发生了更改,则将无法配置自定义域后缀, 并且会收到类似于以下屏幕截图所示的错误。 查看先决条件以确保配置了所需的权限。 如果应用服务平台检测到你的证书已降级或过期,则也会出现类似的错误消息。

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

后续步骤