你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure 容器应用中的自定义域名和自带证书
Azure 容器应用允许将一个或多个自定义域绑定到容器应用。
- 每个域名都必须与一个 TLS/SSL 证书相关联。 你可以上传自己的证书,或使用免费的托管证书。
- 证书应用于容器应用环境,并绑定到单个容器应用。 必须对环境具有基于角色的访问权限才能添加证书。
- 需要 SNI(服务器名称标识)域证书。
- 必须为容器应用启用入口。
注意
如果你配置自定义环境 DNS(域名系统)后缀,则无法将包含此后缀的自定义域添加到容器应用。
添加自定义域和证书
重要
如果使用新证书,则必须有一个现有的 SNI 域证书 文件可供上传到 Azure。
在 Azure 门户中导航到你的容器应用
通过选择“设置”部分中的“入口”,验证应用是否启用了入口。 如果未启用流入量,请使用以下步骤启用它:
- 将 HTTP 入口设置为“已启用”。
- 选择所需的“入口流量”设置。
- 输入目标端口。
- 选择“保存” 。
在“设置”部分下,选择“自定义域”。
选择“添加自定义域”按钮。
在“添加自定义域和证书”窗口中,在“TLS/SSL 证书”中,选择“自带证书”。
在“域”中,输入要添加的域。
选择“添加证书”。
在“添加证书”窗口的“证书名称”中,输入此证书的名称。
在“证书文件”部分,浏览要上传的证书文件。
选择“验证”。
验证成功后,选择“添加”。
在“添加自定义域和证书”窗口的“证书”中,选择刚刚添加的证书。
根据域的类型选择“主机名记录类型”。
域类型 记录类型 说明 Apex 域 A 记录 顶点域是域根级别的域。 例如,如果你的 DNS(域名系统)区域为 contoso.com
,则顶点域为contoso.com
。子域 CNAME 子域是属于另一个域的域。 例如,如果 DNS 区域为 contoso.com
,则www.contoso.com
是可在该区域中配置的子域的示例。使用托管域的 DNS 提供程序,根据所选“主机名记录类型”使用“域验证”部分中显示的值创建 DNS 记录。 记录将域指向容器应用,并验证你是否拥有它。 安装程序取决于是否在专用终结点(预览版)功能中使用自定义域:
选择“验证”按钮。
验证成功后,选择“添加”按钮。
操作完成后,将在自定义域列表中看到域名,其状态为“受保护”。 导航到你的域以验证它是否可访问。
注意
对于内部容器应用环境中的容器应用,需要进行其他配置才能使用具有 VNET 范围入口的自定义域。
容器应用支持顶点域和子域。 每个域类型都需要不同的 DNS 记录类型和验证方法。
域类型 | 记录类型 | 验证方法 | 说明 |
---|---|---|---|
Apex 域 | A 记录 | HTTP | 顶点域是域根级别的域。 例如,如果 DNS 区域是 contoso.com ,则 contoso.com 为顶点域。 |
子域 | CNAME | CNAME | 子域是属于另一个域的域。 例如,如果 DNS 区域为 contoso.com ,则 www.contoso.com 是可在该区域中配置的子域的示例。 |
使用 Azure CLI 登录 Azure。
az login
接下来,安装适用于 CLI 的 Azure 容器应用扩展。
az extension add --name containerapp --upgrade
设置以下环境变量。 将
<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>
替换为你的容器应用正在侦听的端口。
- 将
验证容器应用是否已启用 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
如果要配置顶点域,请获取容器应用环境的 IP 地址。
az containerapp env show \ -n $ENVIRONMENT \ -g $RESOURCE_GROUP \ -o tsv \ --query "properties.staticIp"
如果要配置子域,请获取容器应用的自动生成域。
az containerapp show \ -n $CONTAINER_APP \ -g $RESOURCE_GROUP \ -o tsv \ --query "properties.configuration.ingress.fqdn"
获取域验证码。
az containerapp show \ -n $CONTAINER_APP \ -g $RESOURCE_GROUP \ -o tsv \ --query "properties.customDomainVerificationId"
使用托管域的 DNS 提供程序,根据所选记录类型使用“域验证”部分中显示的值创建 DNS 记录。 记录将域指向容器应用,并验证你是否拥有它。 安装程序取决于是否在专用终结点(预览版)功能中使用自定义域:
将证书上传到环境。
az containerapp env certificate upload \ -g $RESOURCE_GROUP \ --name $ENVIRONMENT \ --certificate-file $CERTIFICATE_LOCAL_PATH \ --password $CERTIFICATE_PASSWORD \ --certificate-name $CERTIFICATE_LOWERCASE_NAME
将证书和域绑定到容器应用。
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
。
颁发证书并将域添加到你的容器应用可能需要几分钟时间。
操作完成后,请导航到域以验证它是否可访问。
管理证书
可以通过容器应用环境或通过单个容器应用来管理证书。
环境
容器应用环境的“证书”窗口显示一个表,其中包含与环境关联的所有证书。
可以通过以下操作管理证书:
操作 | 描述 |
---|---|
添加 | 选择“添加证书”链接以添加新证书。 |
删除 | 选择回收站图标以删除证书。 |
续订 | 表的“运行状况”字段指示证书在到期日期后的 60 天内即将过期。 若要续订证书,请选择“续订证书”链接以上传新证书。 |
容器应用
容器应用的“自定义域”窗口显示与容器应用关联的自定义域列表。
可以通过选择省略号 (...) 按钮来管理单个域名的证书,这将打开证书绑定窗口。 在以下窗口中,可以选择要绑定到所选域名的证书。