在 Azure Spring Apps 的应用程序中使用 TLS/SSL 证书

注意

基本、标准和企业计划将从 2025 年 3 月中旬开始弃用,停用期为 3 年。 建议转换到 Azure 容器应用。 有关详细信息,请参阅 Azure Spring Apps 停用公告

标准消耗和专用计划将于 2024 年 9 月 30 日开始弃用,并在六个月后完全关闭。 建议转换到 Azure 容器应用。

本文介绍如何在 Azure Spring Apps 中为应用程序使用公共证书。 应用可以充当客户端并可访问需要证书身份验证的外部服务,否则可能需要执行加密任务。

让 Azure Spring Apps 管理 TLS/SSL 证书时,可以分开维护证书和应用程序代码,以保护敏感数据。 应用代码可以访问添加到 Azure Spring Apps 实例的公共证书。

先决条件

导入证书

可以选择将证书从 Key Vault 导入到 Azure Spring Apps 实例,也可以使用本地证书文件。

导入来自 Key Vault 的证书

在导入证书之前,需要授予 Azure Spring Apps 对密钥保管库的访问权限。

Azure Key Vault 提供了两个授权系统:在 Azure 的控制平面和数据平面上运行的 Azure 基于角色的访问控制 (Azure RBAC) 和只在数据平面上运行的访问策略模型。

使用以下步骤授予访问权限:

  1. 登录到 Azure 门户

  2. 选择“密钥保管库”,然后选择要从中导入证书的密钥保管库。

  3. 在导航窗格中,选择“访问策略”,然后选择“创建

  4. 选择“证书权限”,然后选择“获取”和“列出” 。

    Azure 门户中显示“创建访问策略”页的屏幕截图,其中显示了“权限”窗格并突出显示了“获取”和“列出”权限。

  5. 在“主体”下,选择“Azure Spring Cloud 资源提供程序”。

    Azure 门户中显示“创建访问策略”页“主体”选项卡的屏幕截图,其中突出显示了 Azure Spring Cloud 资源提供程序。

  6. 依次选择“查看 + 创建”、“创建” 。

授予密钥保管库访问权限后,可以使用以下步骤导入证书:

  1. 转到你的服务实例。

  2. 在实例的左侧导航窗格中,选择“TLS/SSL 设置”。

  3. 选择“公钥证书”部分中的“导入 Key Vault 证书”部分。

  4. 在“密钥保管库”部分中选择你的密钥保管库,在“证书”部分中选择你的证书,然后选择“选择”

  5. 提供“证书名称”值,根据需要选择“启用自动同步”,然后选择“应用”。 有关详细信息,请参阅将现有的自定义域映射到 Azure Spring Apps自动同步证书部分。

成功导入证书后,可在“公钥证书”列表中看到它。

注意

Azure Key Vault 和 Azure Spring Apps 实例应位于同一租户中。

导入本地证书文件

可以使用以下步骤导入本地存储的证书文件:

  1. 转到你的服务实例。
  2. 在实例的左侧导航窗格中,选择“TLS/SSL 设置”。
  3. 选择“公钥证书”部分中的“上传公用证书”部分。

成功导入证书后,可在“公钥证书”列表中看到它。

加载证书

若要将证书加载到 Azure Spring Apps 中的应用程序,请先执行以下步骤:

  1. 转到应用程序实例。
  2. 在你的应用的左侧导航窗格中,选择“证书管理”。
  3. 选择“添加证书”,为应用选择可访问的证书。

Azure 门户中显示“证书管理”页的屏幕截图,其中突出显示了“添加证书”按钮。

从代码加载证书

加载的证书在 /etc/azure-spring-cloud/certs/public 文件夹中提供。 使用以下 Java 代码在 Azure Spring Apps 的应用程序中加载公共证书。

CertificateFactory factory = CertificateFactory.getInstance("X509");
FileInputStream is = new FileInputStream("/etc/azure-spring-cloud/certs/public/<certificate name>");
X509Certificate cert = (X509Certificate) factory.generateCertificate(is);

// use the loaded certificate

将证书加载到信任存储区

对于 Java 应用程序,可以对所选证书选择“加载到信任存储区”。 此证书会自动添加到 Java 默认 TrustStores 中,以便在 TLS/SSL 身份验证中对服务器进行身份验证。

应用中的以下日志显示证书已成功加载。

Load certificate from specific path. alias = <certificate alias>, thumbprint = <certificate thumbprint>, file = <certificate name>

后续步骤