在 Azure 应用服务中添加和管理 TLS/SSL 证书

注意

从 2024 年 6 月 1 日开始,所有新创建的应用服务应用都可以选择生成唯一的默认主机名,命名约定为 <app-name>-<random-hash>.<region>.chinacloudsites.cn。 现有应用名称将保持不变。

示例: myapp-ds27dh7271aah175.westus-01.chinacloudsites.cn

可以添加数字安全证书,以在应用程序代码中使用或在 Azure 应用服务帮助保护自定义 DNS 名称,该证书提供了高度可缩放、自我修补的 Web 托管服务。 目前称为传输层安全性 (TLS) 证书,以前也称为安全套接字层 (SSL) 证书,这些专用或公用证书通过加密浏览器、访问的网站和网站服务器之间发送的数据来帮助保护 Internet 连接。

下表列出了可用于在应用服务中添加证书的选项:

选项 说明
导入来自 Key Vault 的证书 如果使用 Azure Key Vault 管理 PKCS12 证书,则非常有用。 请参阅私有证书要求
上传私有证书 如果你已有第三方提供商提供的私有证书,则可以上传它。 请参阅私有证书要求
上传公用证书 公用证书不用于保护自定义域,但可以将其加载到代码中(如果需要它们来访问远程资源)。

先决条件

私有证书要求

如果选择将私有证书上传或导入到应用服务,则证书必须满足以下要求:

  • 导出为受密码保护的 PFX 文件(使用三重 DES 进行加密)
  • 包含长度至少为 2048 位的私钥
  • 包含证书链中的所有中间证书和根证书

如果要帮助保护 TLS 绑定中的自定义域,证书还必须满足以下额外要求:

  • 包含用于服务器身份验证的扩展密钥用法 (OID = 1.3.6.1.5.5.7.3.1)
  • 已由受信任的证书颁发机构签名

注意

椭圆曲线加密 (ECC) 证书适用于应用服务,但本文不予讨论。 有关创建 ECC 证书的具体步骤,请咨询证书颁发机构。

注意

将专用证书添加到应用后,证书将存储在与应用服务计划的资源组、区域和操作系统组合(在内部称为 Web 空间)绑定的部署单元中。 通过此操作,同一资源组、区域和操作系统组合中的其他应用也可以访问该证书。 上传或导入到应用服务的专用证书与同一部署单元中的应用服务共享。

每个 Web 空间最多可添加 1000 个专用证书。

导入来自 Key Vault 的证书

如果使用 Azure Key Vault 管理证书,则可以在满足要求的情况下将 PKCS12 证书从 Key Vault 导入应用服务。

授权应用服务读取保管库

默认情况下,应用服务资源提供程序无权访问密钥保管库。 若要将密钥保管库用于证书部署,必须授权资源提供程序(应用服务)对密钥保管库的读取访问权限。 可以使用访问策略或 RBAC 授予访问权限。

注意

目前,Azure 门户不允许在密钥保管库中配置应用服务证书来使用 RBAC 模型。 但是,你可以使用 Azure CLI、Azure PowerShell 或 ARM 模板部署来执行此配置。

将保管库中的证书导入到应用

  1. Azure 门户的左侧菜单中,选择“应用程序服务”>“<app-name>”。

  2. 从应用的导航菜单中,请选择“证书”>“自带证书(.pfx)”>“添加证书”。

  3. 在“源”中,选择“从密钥保管库导入”。

  4. 选择“选择密钥保管库证书”。

    应用管理页面的屏幕截图,其中选中了“证书”、“自带证书(.pfx)”和“从密钥保管库导入”。

  5. 若要帮助选择证书,请使用下表:

    设置 说明
    订阅 与密钥保管库关联的订阅。
    密钥保管库 具有要导入的证书的密钥保管库。
    证书 从此列表中,选择保管库中的 PKCS12 证书。 保管库中的所有 PKCS12 证书都已通过其指纹列出,但在应用服务中并非支持所有证书。
  6. 完成选择后,依次选择“选择”、“验证”和“添加”。

    操作完成后,证书会显示在“自带证书”列表中。 如果导入失败并出现错误,则证书不满足应用服务的要求

    “自带证书(.pfx)”窗格的屏幕截图,其中列出了已导入的证书。

    注意

    如果使用新证书更新 Key Vault 中的证书,应用服务会在 24 小时内自动同步证书。

  7. 若要使用此证书帮助保护自定义域,仍需要创建证书绑定。 在 Azure 应用服务中使用 TLS/SSL 绑定保护自定义 DNS 名称

上传私有证书

从证书提供程序处获取证书后,请按照本部分中的步骤为应用服务准备好证书。

合并中间证书

如果证书颁发机构在证书链中提供了多个证书,则必须按相同的顺序合并证书。

  1. 在文本编辑器中,打开收到的所有证书。

  2. 若要存储合并证书,请创建一个名为 mergedcertificate.crt 的文件。

  3. 将每个证书的内容复制到此文件中。 请确保遵循证书链指定的证书顺序,从你的证书开始,到根证书结束,例如:

    -----BEGIN CERTIFICATE-----
    <your entire Base64 encoded SSL certificate>
    -----END CERTIFICATE-----
    
    -----BEGIN CERTIFICATE-----
    <The entire Base64 encoded intermediate certificate 1>
    -----END CERTIFICATE-----
    
    -----BEGIN CERTIFICATE-----
    <The entire Base64 encoded intermediate certificate 2>
    -----END CERTIFICATE-----
    
    -----BEGIN CERTIFICATE-----
    <The entire Base64 encoded root certificate>
    -----END CERTIFICATE-----
    

将合并的专用证书导出为 PFX

现在,使用用于生成证书请求的私钥导出合并的 TLS/SSL 证书。 如果使用 OpenSSL 生成证书请求,则已创建私钥文件。

注意

OpenSSL v3 已将默认密码从 3DES 更改为 AES256,但这在命令行 -keypbe PBE-SHA1-3DES -certpbe PBE-SHA1-3DES -macalg SHA1 上是可以替代的。 OpenSSL v1 使用 3DES 作为默认密码,因此无需进行任何特殊修改即可支持生成的 PFX 文件。

  1. 若要将证书导出为 PFX 文件,请运行以下命令,但将占位符 <private-key-file> 和 <merged-certificate-file> 分别替换为私钥和合并证书文件的路径。

    openssl pkcs12 -export -out myserver.pfx -inkey <private-key-file> -in <merged-certificate-file>  
    
  2. 出现提示时,请指定导出操作的密码。 稍后将 TLS/SSL 证书上传到应用服务时,必须提供此密码。

  3. 如果使用 IIS 或 Certreq.exe 生成证书请求,请将证书安装到本地计算机,然后将证书导出为 PFX 文件

将证书上传到应用服务

现在可以将证书上传到应用服务了。

  1. Azure 门户的左侧菜单中,选择“应用程序服务”>“<app-name>”。

  2. 从应用的导航菜单中,请选择“证书”>“自带证书(.pfx)”>“上传证书”。

    应用管理页面的屏幕截图,其中选中了“证书”、“自带证书(.pfx)”和“上传证书”。

  3. 若要帮助上传 .pfx 证书,请使用下表:

    设置 说明
    PFX 证书文件 选择 .pfx 文件。
    证书密码 输入导出 PFX 文件时创建的密码。
    证书易记名称 将在 Web 应用中显示的证书名称。
  4. 完成选择后,依次选择“选择”、“验证”和“添加”。

    操作完成后,证书会显示在“自带证书”列表中。

    “自带证书”窗格的屏幕截图,其中列出了已上传的证书。

  5. 若要使用此证书为自定义域提供安全性,仍需要创建证书绑定。 在 Azure 应用服务中使用 TLS/SSL 绑定保护自定义 DNS 名称

上传公用证书

支持使用 .cer 格式的公用证书。

注意

将公共证书上传到应用后,该证书只能由它上传到的应用访问。 公共证书必须上传到需要访问的每个 Web 应用。 有关应用服务环境特定场景,请参阅证书和应用服务环境文档

每个应用服务计划最多可上传 1000 个公共证书。

  1. Azure 门户的左侧菜单中,选择“应用程序服务”>“<app-name>”。

  2. 从应用的导航菜单中,选择“证书”>“公钥证书(.cer)”>“添加证书”。

  3. 若要帮助上传 .cer 证书,请使用下表:

    设置 说明
    CER 证书文件 选择 .cer 文件。
    证书易记名称 将在 Web 应用中显示的证书名称。
  4. 完成后,选择“添加”。

    应用管理页的屏幕截图。它显示了要上传的公钥证书及其名称。

  5. 上传证书后,复制证书指纹,查看是否使证书可访问

续订即将到期的证书

在证书到期之前,请确保将续订的证书添加到应用服务,并更新进程依赖于证书类型的任何证书绑定。 例如,从 Key Vault 导入的证书(包括应用服务证书)每 24 小时自动同步到应用服务,并在你续订证书时更新 TLS/SSL 绑定。 对于上传的证书,没有自动绑定更新。 根据你的方案,查看相应的部分:

续订上传的证书

替换过期证书时,使用新证书更新证书绑定的方式可能会对用户体验产生不利影响。 例如,在删除某个绑定时,即使该绑定是基于 IP 的,入站 IP 地址也可能会更改。 在续订已进行基于 IP 的绑定的证书时,此结果尤其有影响。 若要避免应用的 IP 地址发生更改以及由于 HTTPS 错误而导致应用停机,请按指定顺序执行以下步骤:

  1. 上传新证书

  2. 转到应用的“自定义域”页,选择“...”按钮,然后选择“更新绑定”。

  3. 选择新证书,然后选择“更新”。

  4. 删除现有证书。

续订从 Key Vault 导入的证书

若要续订从 Key Vault 导入应用服务的证书,请参阅续订 Azure Key Vault 证书

在密钥保管库中续订证书后,应用服务会自动同步新证书并在 24 小时内更新任何适用的证书绑定。 若要手动同步,请执行以下步骤:

  1. 转到应用的“证书”页。

  2. 在“自带证书(.pfx)”下,为导入的密钥保管库证书选择“...”按钮,然后选择“同步”。

常见问题解答

如何自动将自带证书添加到应用?

是否可以对应用上的入站 TLS 使用专用 CA(证书颁发机构)证书?

可以在应用服务环境版本 3 中对入站 TLS 使用专用 CA 证书。 这在应用服务(多租户)中是不可能的。

更多资源