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

可以添加数字安全证书以用于应用程序代码,或帮助保护 Azure 应用服务中的自定义域名系统(DNS)名称。 应用服务提供高度可缩放的、可自我修补的 Web 托管服务。 证书当前称为传输层安全性(TLS)证书。 它们以前称为安全套接字层(SSL)证书。 这些专用或公共证书可帮助你保护 Internet 连接。 证书对浏览器、访问的网站和网站服务器之间发送的数据进行加密。

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

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

先决条件

私有证书要求

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

  • 作为 受密码保护的 .pfx 文件导出,使用三重 DES 进行加密。
  • 包含至少 2,048 位长的私钥。
  • 包含证书链中的所有中间证书和根证书。

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

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

备注

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

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

每个 Web 空间最多可添加 1,000 个专用证书。

导入来自 Key Vault 的证书

如果使用 Key Vault 管理证书,则可以从 Key Vault 将 PKCS12 证书导入应用服务(如果满足 要求)。

授权应用服务读取保管库

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

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

  1. Azure 门户中的左窗格中,选择 “应用服务><”应用名称>

  2. 在应用的左窗格中,选择“ 证书>自带证书”(.pfx)>添加证书

  3. “源”下,选择 “从 Key Vault 导入”。

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

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

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

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

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

    显示“自带证书 (.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 门户中的左窗格中,选择 “应用服务><”应用名称>

  2. 在应用的左窗格中,选择“证书>自带证书”(.pfx)>上传证书(.pfx)。

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

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

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

    作完成后,证书会显示在 “自带证书”(.pfx) 列表中。

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

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

上传公用证书

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

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

每个应用服务计划最多可以上传 1,000 个公共证书。

  1. Azure 门户中的左窗格中,选择 “应用服务><”应用名称>

  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)”下,为导入的密钥保管库证书选择“...”按钮,然后选择“同步”。

常见问题解答

如何自动执行向应用添加自带证书的过程?

是否可以在应用中将专用 CA 证书用于入站 TLS?

可以将专用证书颁发机构 (CA) 证书用于 应用服务环境版本 3 中的入站 TLS。 在应用服务(多租户)中无法执行此操作。 有关应用服务多租户与单租户的详细信息,请参阅 应用服务环境 v3 和应用服务公共多租户比较