次の方法で共有

Azure 容器应用中的自定义域名和自带证书

Azure 容器应用允许将一个或多个自定义域绑定到容器应用。

  • 每个域名都必须与一个 TLS/SSL 证书相关联。 你可以上传自己的证书,或使用免费的托管证书
  • 证书应用于容器应用环境,并绑定到单个容器应用。 必须对环境具有基于角色的访问权限才能添加证书。
  • 需要 SNI 域证书。
  • 必须为容器应用启用 Ingress。

注意事项

如果配置 自定义环境 DNS(域名系统)后缀,则无法向容器应用添加包含此后缀的自定义域。

添加自定义域和证书

重要

如果使用新证书,则必须有一个现有的 SNI 域证书 文件可供上传到 Azure。

  1. Azure 门户中访问你的容器应用。

  2. 通过在左窗格中的“网络”部分选择“入口”来验证应用是否已启用入口。 如果未启用入口,请通过完成以下步骤来启用它:

    1. 将 HTTP 入口设置为“已启用”。
    2. 选择所需的 入口流量 设置。
    3. 入口类型 设置为 HTTP
    4. 输入目标端口。
    5. 选择“保存” 。
  3. 在“ 网络 ”部分中,选择“ 自定义域”。

  4. 选择“添加自定义域”。

  5. “添加自定义域和证书 ”窗格中的 TLS/SSL 证书下,选择“ 自带证书”。

  6. “域 ”框中,输入要添加的域。

  7. 选择“添加证书”。

  8. “添加证书 ”窗格中的 “源 ”框中,选择“ 上传证书”(.pfx), 然后浏览要上传的证书文件。

  9. 选择“验证”。

  10. 验证成功后,选择“ 添加”。

  11. “添加自定义域和证书 ”窗格中的 “证书”中,选择刚刚添加的证书。

  12. 根据域 的类型选择主机名记录类型

    域类型 记录类型 说明
    Apex 域 A 记录 顶级域是域根级别的域。 例如,如果 DNS 区域是 contoso.com,则 contoso.com 为顶点域。
    子域 CNAME 子域是属于另一个域的域。 例如,如果 DNS 区域为 contoso.com,则 www.contoso.com 是可在该区域中配置的子域的示例。
  13. 使用托管域的 DNS 提供程序,使用“域验证”部分中显示的值根据所选的主机名记录类型创建 DNS 记录。 记录将域指向容器应用,并验证你是否拥有它。 设置取决于你是否在使用专用终结点功能时使用自定义域:

    • 如果选择“A 记录”,请创建以下 DNS 记录:

      记录类型 主机
      A @ 容器应用环境的 IP 地址。
      TXT asuid 域验证码。
    • 如果选择“CNAME”,请创建以下 DNS 记录:

      记录类型 主机
      CNAME 子域(例如,www 你的容器应用所生成的域。
      TXT asuid. 后跟子域(例如,asuid.www 域验证码。
  14. 选择“验证”。

  15. 验证成功后,选择“ 添加”。

  16. 作完成后,将在状态为 “安全”的自定义域列表中看到域名。 转到你的域以验证它是否可访问。

注意事项

对于内部容器应用环境中的容器应用,使用具有 VNET 范围的入口的自定义域需要 额外的配置

容器应用支持顶点域和子域。 每个域类型都需要不同的 DNS 记录类型和验证方法:

域类型 记录类型 验证方法 说明
Apex 域 A 记录 HTTP 顶级域是域根级别的域。 例如,如果 DNS 区域是 contoso.com,则 contoso.com 为顶点域。
子域 CNAME CNAME 子域是属于另一个域的域。 例如,如果 DNS 区域为 contoso.com,则 www.contoso.com 是可在该区域中配置的子域的示例。
  1. 使用 Azure CLI 登录到 Azure:

    az login
    
  2. 安装 CLI 的 Azure 容器应用扩展:

    az extension add --name containerapp --upgrade
    
  3. 设置以下环境变量。 将 <PLACEHOLDERS> 替换为你的值。

    RESOURCE_GROUP = "<RESOURCE_GROUP>"
    CONTAINER_APP = "<CONTAINER_APP>"
    ENVIRONMENT = "<ENVIRONMENT>"
    TARGET_PORT = "<TARGET_PORT>"
    DOMAIN_NAME = "<DOMAIN_NAME>"
    CERTIFICATE_LOWERCASE_NAME = "<CERTIFICATE_LOWERCASE_NAME>"
    CERTIFICATE_LOCAL_PATH = "<CERTIFICATE_LOCAL_PATH>"
    CERTIFICATE_PASSWORD = "<CERTIFICATE_PASSWORD>"
    
    • <CERTIFICATE_LOCAL_PATH> 替换为你的证书文件的本地路径。
    • 用环境中唯一的小写证书名称替换 <CERTIFICATE_LOWERCASE_NAME>
    • <TARGET_PORT> 替换为你的容器应用正在侦听的端口。
  4. 验证容器应用是否已启用 HTTP 入口:

    az containerapp ingress show \
        -n $CONTAINER_APP \
        -g $RESOURCE_GROUP
    

    如果未启用入口,请启用它:

    az containerapp ingress enable \
        -n $CONTAINER_APP \
        -g $RESOURCE_GROUP \
        --type external \
        --target-port $TARGET_PORT \
        --transport auto
    
  5. 如果要配置顶点域,请获取容器应用环境的 IP 地址:

    az containerapp env show \
        -n $ENVIRONMENT \
        -g $RESOURCE_GROUP \
        -o tsv \
        --query "properties.staticIp"
    
  6. 如果要配置子域,请获取容器应用的自动生成域:

    az containerapp show \
        -n $CONTAINER_APP \
        -g $RESOURCE_GROUP \
        -o tsv \
        --query "properties.configuration.ingress.fqdn"
    
  7. 获取域验证码:

    az containerapp show \
        -n $CONTAINER_APP \
        -g $RESOURCE_GROUP \
        -o tsv \
        --query "properties.customDomainVerificationId"
    
  8. 使用托管域的 DNS 提供程序,使用 “域验证 ”部分中显示的值根据所选记录类型创建 DNS 记录。 记录将域指向容器应用,并验证你是否拥有它。 设置取决于你是否在使用专用终结点功能时使用自定义域:

    • 如果选择“A 记录”,请创建以下 DNS 记录:

      记录类型 主机
      A @ 容器应用环境的 IP 地址。
      TXT asuid 域验证码。
    • 如果选择“CNAME”,请创建以下 DNS 记录:

      记录类型 主机
      CNAME 子域(例如,www 你的容器应用所生成的域。
      TXT asuid. 后跟子域(例如,asuid.www 域验证码。
  9. 将证书上传到环境:

    az containerapp env certificate upload \
        -g $RESOURCE_GROUP \
        --name $ENVIRONMENT \
        --certificate-file $CERTIFICATE_LOCAL_PATH \
        --password $CERTIFICATE_PASSWORD \
        --certificate-name $CERTIFICATE_LOWERCASE_NAME
    
  10. 将证书和域绑定到容器应用:

    az containerapp hostname bind \
        --hostname $DOMAIN_NAME \
        -g $RESOURCE_GROUP \
        -n $CONTAINER_APP \
        --environment $ENVIRONMENT \
        --certificate $CERTIFICATE_LOWERCASE_NAME \
        --validation-method <VALIDATION_METHOD>
    
    • 如果要配置 A 记录,请将 <VALIDATION_METHOD> 替换为 HTTP

    • 如果要配置 CNAME,请将 <VALIDATION_METHOD> 替换为 CNAME

    颁发证书并将域添加到你的容器应用可能需要几分钟时间。

  11. 在操作完成后,转到您的域以检查它是否可访问。

管理证书

可以通过容器应用环境或通过单个容器应用管理证书。

环境

容器应用环境的 “证书 ”窗格显示一个表,其中包含与环境关联的所有证书。 转到环境,然后在“设置”下选择“证书”。

可以通过执行以下作来管理证书:

动作 描述
添加 选择 “添加证书 ”以添加新证书。
删除 选择回收站图标以删除证书。
更新 表的“运行状况”字段指示证书在到期日期后的 60 天内即将过期。 若要续订证书,请选择“续订证书”链接,并上传新的证书。

容器应用

容器应用的 “自定义域 ”窗格显示与容器应用关联的自定义域列表。 在左窗格中的 “网络”下,选择“ 自定义域”。

可以通过选择省略号 (...) 按钮来管理单个域名的证书,这将打开证书绑定窗口。 在以下窗口中,可以选择要绑定到所选域名的证书。

后续步骤