将容器化应用程序部署到 Azure 时配置 HTTPS

部署容器化应用程序时,通常使用 HTTPS 协议进行加密的安全通信。 安全通信由传输层安全性(TLS)实现,后者使用安全套接字层(SSL)替换了先前的方法。 在开发过程中,Visual Studio 使用自签名证书,有时称为 开发测试 证书。 首次在本地计算机上启动应用程序时,系统会提示你信任证书。 这适用于开发和测试,但在部署到 Azure 并在自定义域中公开应用程序时,需要切换到证书颁发机构(CA)颁发的证书(Azure 或第三方 CA)。

Azure 中的部署选项的安全性

许多 Azure 服务通过自动处理证书管理来简化配置和管理负担。 在 Azure 中为容器设置 TLS 的配置和过程取决于要部署到的服务。

通常,Azure 服务可以支持多种获取和存储证书的方法。 可以从 Azure 自己的证书颁发机构(CA)获取受信任的证书,也可以上传第三方 CA 颁发的专用受信任证书。 可以使用服务自己的证书存储,也可以使用 Azure Key Vault 来存储证书和其他机密。

下表显示了这些服务,并包含链接,说明在部署到这些服务时 HTTPS 安全性的工作原理以及管理证书的操作指南。

Azure 服务 笔记
Azure 应用服务 Azure 应用服务是一种适用于单个容器的合适部署服务,可提供默认体验,这意味着可以使用 Azure 提供的受信任证书获得安全终结点,而不会造成任何额外的开销。 为了更好地控制,可以从多个选项中进行选择来获取和存储证书。 可以使用从第三方 CA 获取的受信任证书,而不是 Azure 提供的默认受信任证书。 (可选)可以在 Azure Key Vault 中存储证书。 请参阅 应用服务 TLS 概述
Azure 容器应用 Azure 容器应用是一种适合使用一个或多个容器的容器化应用的托管服务。 与 Azure 应用服务一样,它提供默认体验,它自动使用受信任的 Azure 提供的证书,但也提供了一系列网络体系结构选项来支持不同的方案。 请参阅 Azure 容器应用 中的网络。
Azure 容器实例 若要为 Azure 容器实例中托管的容器配置 HTTPS 公共终结点,请参阅 在 sidecar 容器中启用 TLS 终结点。 此选项将最大程度地减少对容器本身的影响。
Service Fabric 请参阅 Service Fabric 应用程序和服务安全性。 通常设置反向代理来处理传入请求的安全性。 请参阅 Azure Service Fabric 中的反向代理。
Azure Kubernetes 服务 (AKS) 请参阅 AKS 文档中的 指南,了解如何为集群的入口配置 TLS。 AKS 提供最先进的管理功能,可灵活处理证书轮换和续订。

多个容器的网络安全选项

如果方案涉及多个容器,可以选择仅保护入口流量(即,在面向外部的负载均衡器或反向代理),也可以应用应用程序中每个容器之间的安全通信。 后一个选项为系统的更深层层提供安全性,即使外部层存在漏洞也是如此。 使用 HTTPS 进行所有容器到容器通信超出了本文的范围。

对于 Azure 容器应用,可以配置对外部调用方使用 HTTPS 的入口,并在多个容器的网络中使用 HTTP 或 TCP。 对于容器之间的安全通信,可以使用 mTLS(相互 TLS),这需要在请求、客户端和服务器两端或微服务之间使用证书。 请参阅 Azure 容器应用中的入口配置 Azure 容器应用中的客户端证书身份验证