证书和应用服务环境 v2

重要

本文介绍用于独立应用服务计划的应用服务环境 v2。 应用服务环境 v1 和 v2 于 2024 年 8 月 31 日停用。 应用服务环境有新版本,此版本更易于使用并在更强大的基础结构上运行。 若要详细了解该新版本,请先参阅应用服务环境简介。 如果你当前正在使用应用服务环境 v1,请按照本文中的步骤迁移到新版本。

从 2024 年 8 月 31 日开始,服务级别协议 (SLA) 和服务额度不再适用于继续投入生产的应用服务环境 v1 和 v2 工作负载,因为这些产品已经停用。 应用服务环境 v1 和 v2 硬件已开始停用,这可能会影响你的应用和数据的可用性和性能。

必须立即完成到应用服务环境 v3 的迁移,否则你的应用和资源可能会被删除。 我们将使用就地迁移功能在最大程度上努力尝试自动迁移任何剩余的应用服务环境 v1 和 v2,但 Microsoft 对自动迁移后的应用程序可用性不作任何声明或保证。 你可能需要执行手动配置来完成迁移,并优化应用服务计划 SKU 选项来满足需求。 如果无法进行自动迁移,你的资源和关联的应用数据会被删除。 我们强烈建议你立即采取行动,以避免发生这两种极端情况之一。

如果你需要更多时间,我们可以提供一次性的 30 天宽限期,以便你完成迁移。 如需了解更多信息并申请此宽限期,请查看宽限期概述,然后转到 Azure 门户并访问每个应用服务环境的“迁移”窗格。

有关应用服务环境 v1/v2 停用的最新信息,请参阅应用服务环境 v1 和 v2 停用更新

应用服务环境 (ASE) 是在 Azure 虚拟网络 (VNet) 中运行的 Azure 应用服务的部署。 可以使用能够通过 Internet 访问的应用程序终结点或者虚拟网络中的应用程序终结点来部署 ASE。 如果使用可通过 Internet 访问的终结点部署 ASE,则该部署称为外部 ASE。 如果使用虚拟网络中的终结点部署 ASE,则该部署称为 ILB ASE。 可以在创建和使用 ILB ASE 文档中详细了解 ILB ASE。

ASE 是单租户系统。 由于它是单一租户,因此某些只能在 ASE 中使用的功能不能在多租户应用服务中使用。

ILB ASE 证书

如果使用的是外部 ASE,则可以通过 <appname>.<asename>.p.chinacloudsites.cn 访问应用。 默认情况下,所有 ASE 甚至 ILB ASE,都是使用遵循该格式的证书创建的。 创建 ILB ASE 后,可以基于创建 ILB ASE 时指定的域名来访问应用。 为使应用支持 TLS,需要上传证书。 可通过三种方式获取有效的 TLS/SSL 证书:使用内部证书颁发机构、向外部颁发者购买证书或使用自签名证书。

可以使用两个选项配置 ILB ASE 的证书。 可为 ILB ASE 设置通配符默认证书,或者在 ASE 中的单个 Web 应用上设置证书。 无论做出哪种选择,都必须正确配置以下证书属性:

  • 使用者: 对于通配符 ILB ASE 证书,此属性必须设置为 *.[根域]。 如果为应用创建证书,则此属性应是 [应用名称].[根域]
  • 使用者可选名称:此属性必须同时包含通配符 ILB ASE 证书的 .[your-root-domain-here] 和 .scm.[your-root-domain-here]。 如果为应用创建证书,则此属性应是 [应用名称].[根域] 和 [应用名称].scm.[根域]

作为第三种变体,可以创建在证书 SAN 中包含所有应用名称的 ILB ASE 证书,而不使用通配符引用。 此方法的问题在于,需要事先知道要放入 ASE 的应用名称,或者需要不断更新 ILB ASE 证书。

将证书上传到 ILB ASE

在门户中创建 ILB ASE 之后,必须为 ILB ASE 设置证书。 在设置证书之前,ASE 会显示一个横幅,指出未设置证书。

上传的证书必须是 .pfx 文件。 上传证书后,大约有 20 分钟的时间延迟,然后才能使用证书。

无法在门户中一次性创建 ASE 并上传证书,即使在一个模板中也无法做到这一点。 作为单独的操作,可以使用从模板创建 ASE 文档中所述的模板上传证书。

若要快速创建自签名证书用于测试,可以使用以下 PowerShell 代码:

$certificate = New-SelfSignedCertificate -certstorelocation cert:\localmachine\my -dnsname "*.internal.contoso.com","*.scm.internal.contoso.com"

$certThumbprint = "cert:\localMachine\my\" + $certificate.Thumbprint
$password = ConvertTo-SecureString -String "CHANGETHISPASSWORD" -Force -AsPlainText

$fileName = "exportedcert.pfx"
Export-PfxCertificate -cert $certThumbprint -FilePath $fileName -Password $password

创建自签名证书时,需确保使用者名称的格式为 CN={ASE_NAME_HERE}_InternalLoadBalancingASE。

应用程序证书

在 ASE 中托管的应用可以使用多租户应用服务中提供的以应用为中心的证书功能。 这些功能包括:

  • SNI 证书
  • 基于 IP 的 SSL,仅在外部 ASE 中受支持。 ILB ASE 不支持基于 IP 的 SSL。
  • KeyVault 托管的证书

在 Azure 应用服务中添加 TLS/SSL 证书中提供了有关上传和管理这些证书的说明。 如果只需将证书配置为与已分配到 Web 应用的自定义域名相匹配,则遵照这些说明操作即可。 若要上传使用默认域名的 ILB ASE Web 应用的证书,则需要根据前文所述,在证书的 SAN 中指定 scm 站点。

TLS 设置

可在应用级别配置 TLS 设置。

专用客户端证书

一个常见用例是将应用配置为客户端-服务器模型中的客户端。 如果使用专用 CA 证书保护服务器,则需要将客户端证书上传到应用。 以下说明介绍如何将证书加载到运行应用的辅助角色的信任存储中。 如果将证书加载到一个应用,则可以将其用于同一应用服务计划中的其他应用,而无需再次上传该证书。

将证书上传到 ASE 中的应用:

  1. 生成证书的 .cer 文件。
  2. 在 Azure 门户中转到需要该证书的应用
  3. 转到该应用中的 SSL 设置。 单击“上传证书”。 选择“公共”。 选择“本地计算机”。 提供一个名称。 浏览并选择你的 .cer 文件。 选择“上传”。
  4. 复制指纹。
  5. 转到“应用程序设置”。 创建应用设置 WEBSITE_LOAD_ROOT_CERTIFICATES,并使用指纹作为值。 如果有多个证书,可将其放到同一个设置中,并用逗号分隔(不要包含空格),例如

84EC242A4EC7957817B8E48913E50953552DAFA6,6A5C65DC9247F762FE17BF8D4906E04FE6B31819

配置了该设置的应用所在的同一个应用服务计划中的所有应用都可以使用该证书。 如果需要将该证书提供给另一应用服务计划中的应用使用,则需要在该应用服务计划的应用中重复完成应用设置操作。 若要检查是否设置了证书,请转到 Kudu 控制台,并在 PowerShell 调试控制台中发出以下命令:

dir cert:\localmachine\root

若要执行测试,可以创建自签名证书,并使用以下 PowerShell 命令生成 .cer 文件:

$certificate = New-SelfSignedCertificate -certstorelocation cert:\localmachine\my -dnsname "*.internal.contoso.com","*.scm.internal.contoso.com"

$certThumbprint = "cert:\localMachine\my\" + $certificate.Thumbprint
$password = ConvertTo-SecureString -String "CHANGETHISPASSWORD" -Force -AsPlainText

$fileName = "exportedcert.cer"
export-certificate -Cert $certThumbprint -FilePath $fileName -Type CERT