SSL/TLS 是互联网上使用最广泛的加密协议。从技术层面来说,TLS 是 SSL 的后继者,但这两个术语有时可以互换使用,本文档中就是这样。
传输层安全协议 (TLS) 用于对通过网络发送的信息进行加密,从而在客户端与服务器或负载均衡器之间提供隐私权。Google Cloud 代理负载均衡器的转发规则引用目标 HTTPS 代理,或者目标 SSL 代理需要私钥和 SSL 证书作为负载均衡器的目标代理配置的一部分。
证书配置方法
Google Cloud 提供了两种为 HTTP(S) 和 SSL 代理负载均衡器配置 SSL 证书的方法。这两种方法都支持自行管理和 Google 管理的 SSL 证书。
Compute Engine SSL 证书资源:通过此方法,全球外部应用负载均衡器、传统应用负载均衡器、外部代理网络负载均衡器、区域级外部应用负载均衡器或内部应用负载均衡器的目标代理配置为引用 Compute Engine SSL 证书资源。SSL 证书资源包含私钥、相应的证书和(可选)CA 证书。此方法支持负载均衡器支持的所有 Network Service Tiers。
Certificate Manager:使用此方法,将全球外部应用负载均衡器、传统应用负载均衡器或外部代理网络负载均衡器的目标代理配置为引用证书映射。证书映射包含一个或多个证书条目。每个证书条目都引用一个 Certificate Manager 证书资源,而每个证书资源都包含一个私钥和证书。借助 Certificate Manager,目标 HTTPS 代理或目标 SSL 代理可以引用具有数千个 SSL 证书条目的证书映射。只有在负载均衡器使用 Network Service Tiers 优质层级时,此方法才可用。
对于跨区域内部应用负载均衡器、区域级内部应用负载均衡器和区域级外部应用负载均衡器,Certificate Manager 证书会附加到目标代理。不支持证书映射。
如需了解详情,请参阅以下文档:
下表显示了可附加到 Google Cloud 代理负载平衡器的目标 HTTPS 代理或目标 SSL 代理的不同类型的证书资源。Compute Engine SSL 证书会直接附加到目标代理,而 Certificate Manager SSL 证书可以直接附加到目标代理,也可以通过证书映射附加。
代理负载均衡器 | Compute Engine SSL 证书 | Certificate Manager SSL 证书 | |
---|---|---|---|
通过证书映射附加到目标代理 | 直接附加到目标代理 | ||
全球外部应用负载平衡器(使用 HTTPS 代理) | |||
传统版应用负载平衡器(使用 HTTPS 代理) | |||
全球外部代理网络负载平衡器(使用 SSL 代理) | |||
传统代理网络负载平衡器(使用 SSL 代理) | |||
跨区域内部应用负载平衡器(使用 HTTPS 代理) | |||
区域级外部应用负载平衡器(使用 HTTPS 代理) | |||
区域级内部应用负载平衡器(使用 HTTPS 代理) |
证书类型
您可以创建专属证书,也可以让 Google 为您管理:自行管理的 SSL 证书是您自行获取、预配和续订的证书。自行管理的证书可以是以下任何公钥证书类型:
- 网域验证 (DV)
- 组织验证 (OV)
- 扩展验证 (EV) 证书
如需详细了解自行管理的 Compute Engine SSL 证书,请参阅使用自行管理的 SSL 证书。
如需详细了解自行管理的 SSL 证书和 Certificate Manager,请参阅 Certificate Manager 文档中的上传自行管理的证书或参阅部署自行管理的证书以获得端到端教程。
Google 管理的 SSL 证书是 Google Cloud 自动获取、管理和续订的证书。由 Google 管理的证书一律为网域验证 (DV) 证书。这类证书不会显示与证书相关联的组织或个人的身份,也不支持通配符公用名。
如需详细了解 Google 管理的 Compute Engine SSL 证书,请参阅使用 Google 管理的 SSL 证书。
Certificate Manager 使用负载均衡器授权、DNS 授权以及与 Certificate Authority Service 的集成来支持 Google 管理的 SSL 证书。如需详细了解 Google 管理的 SSL 证书 Certificate Manager,请参阅 Certificate Manager 文档中的部署概览。
证书和 Google Cloud 负载均衡器
以下部分介绍了每个应用负载均衡器如何支持不同的证书配置方法。
Compute Engine SSL 证书
下表显示了哪些 Google Cloud 负载均衡器支持自行管理的 Compute Engine SSL 证书和/或 Google 管理的 Compute Engine SSL 证书:
Compute Engine SSL 证书支持 | ||
---|---|---|
负载均衡器 | 自行管理 | 由 Google 管理 |
全球外部应用负载均衡器 * | sslCertificates |
sslCertificates |
传统应用负载均衡器 * | sslCertificates |
sslCertificates |
区域级外部应用负载均衡器 † | regionSslCertificates |
|
区域级内部应用负载均衡器 † | regionSslCertificates |
|
跨区域内部应用负载均衡器 * | ||
外部代理网络负载均衡器(使用 SSL 代理) ‡ | sslCertificates |
sslCertificates |
* 全球外部应用负载均衡器、跨区域内部应用负载均衡器和传统应用负载均衡器使用全球目标 HTTPS 代理,即使传统应用负载均衡器使用标准层级时也是如此。
† 区域级外部应用负载均衡器和内部应用负载均衡器使用区域级目标 HTTPS 代理。
‡ 外部代理网络负载均衡器使用全球目标 SSL 代理,即使在标准层级中也是如此。
Certificate Manager SSL 证书
下表展示了哪些 Google Cloud 负载均衡器支持 Certificate Manager 自行管理的证书和/或 Google 管理的证书。
负载平衡器 | Google 管理的证书 | 自行管理的证书 | ||
---|---|---|---|---|
DNS 授权 | 负载均衡器授权 | Certificate Authority Service (CA Service) | ||
全球外部应用负载均衡器 | info |
info |
info |
info |
传统应用负载均衡器 | info |
info |
info |
info |
全局外部代理网络负载均衡器 | info |
info |
info |
info |
跨区域内部应用负载均衡器 | info |
info |
info |
|
区域级外部应用负载均衡器 | info |
info |
info |
|
区域级内部应用负载均衡器 | info |
info |
info |
多个 SSL 证书
您可以使用相同的目标 HTTPS 代理或目标 SSL 代理来托管多个证书(当负载均衡器支持多个域名时,这很常见)。您可以配置单个转发规则(单个 IP 地址和端口)来引用公共目标代理,也可以配置多个转发规则(不同的 IP 地址和端口)以引用通用目标代理。
多个 Compute Engine SSL 证书资源
使用 Compute Engine SSL 证书资源时,每个目标代理资源最多可以引用“每个目标 HTTPS 或目标 SSL 代理的 SSL 证书数量上限”。如需了解详情,请参阅负载均衡配额和限制文档中的目标池和目标代理。
负载均衡器的目标代理引用的第一个 Compute Engine SSL 证书资源被视为负载均衡器的默认(主要)证书。
使用 Certificate Manager 的多个 SSL 证书
将 Certificate Manager 与负载均衡器上的证书映射搭配使用时,每个目标代理资源都会引用一个证书映射。 证书映射会引用一个或多个证书条目,您可以配置哪个证书条目是映射的默认(主要)证书。映射、条目和 Certificate Manager 证书的数量是可配置的每项目配额。如需了解详情,请参阅 Certificate Manager 文档中的资源配额。
如果您使用的是支持 Certificate Manager 的负载均衡器,并且需要为每个目标代理托管多个 SSL 证书,请确保您使用的是 Certificate Manager 而不是 Compute Engine SSL 证书资源。
证书选择方法
客户端连接到 HTTP(S) 或 SSL 代理负载均衡器后,客户端和负载均衡器会协商 TLS 会话。在 TLS 会话协商期间,客户端向负载均衡器发送其支持的 TLS 加密列表(在 ClientHello
中)。负载均衡器选择其公钥算法与客户端兼容的证书。作为此协商的一部分,客户端还可以向负载均衡器发送服务器名称指示 (SNI) 主机名。SNI 主机名数据有时用于帮助负载均衡器选择应发送到客户端的证书。
Google Cloud 代理负载平衡器会按照本部分中列出的步骤选择证书并将其发送给客户端。在以下步骤中,术语“默认(主要)SSL 证书”是指目标代理引用的第一个 Compute Engine SSL 证书。
负载均衡器选择一个候选证书:
如果负载均衡器的目标代理仅引用一个 Compute Engine SSL 证书资源,则负载均衡器会将唯一配置的证书用作证书候选证书。SNI 主机名的值(如果提供的话)完全不会影响负载均衡器。继续执行步骤 2。
如果负载均衡器的目标代理引用两个或更多 Compute Engine SSL 证书资源,负载均衡器会使用以下流程选择单个证书候选项:
如果客户端未在其
ClientHello
中发送任何 SNI 主机名,则负载均衡器使用默认(主要)SSL 证书作为候选证书。继续执行步骤 2。如果客户端发送的 SNI 主机名与任何证书通用名称 (CN) 不匹配,且与任何证书主题备用名称 (SAN) 都不匹配,则负载均衡器使用默认(主要)SSL 证书作为候选证书。继续执行步骤 2。
负载均衡器选择与客户端发送的 SNI 主机名匹配的候选证书。通过通用名称 (CN) 和主题备用名称 (SAN) 证书特性的最长前缀完成匹配,优先选择 ECDSA 证书而非 RSA 证书。为了说明匹配的方法,设想目标代理引用一个其 CN 为
cats.pets.example.com
的证书以及另一个其 CN 为dogs.pets.example.com
的证书。除了在其 SAN 中包含每个 CN 值之外,每个证书还在其 SAN 中包含*.pets.example.com
和*.example.com
。- 如果提供的 SNI 主机名是
cats.pets.example.com
,则负载均衡器使用 CN 为cats.pets.example.com
的证书作为候选证书。继续执行步骤 2。 - 如果提供的 SNI 主机名是
ferrets.pets.example.com
,则负载均衡器使用两个中的一个证书作为证书候选证书,因为两个已配置的证书的 SAN 都包含*.pets.example.com
。在这种情况下,您无法控制两个证书中的哪个证书成为候选证书。继续执行步骤 2。
- 如果提供的 SNI 主机名是
如果候选证书使用的公钥算法与客户端声明的任一加密兼容,则将向客户端发送候选证书。
- 如果客户端不支持包含证书公钥算法(ECDSA 或 RSA)的加密套件,则 TLS 协商可能会失败。
- 负载均衡器不使用证书的
notValidBefore
和notValidAfter
特性作为候选证书选择方法的任何部分。例如,如果选择了过期证书作为候选证书,则负载均衡器可以提供过期的证书。
价格
使用 Google Cloud 负载均衡器时,会产生网络费用。如需了解详情,请参阅所有网络流量价格。 如需了解 Certificate Manager 的价格,请参阅 Certificate Manager 文档中的价格。使用 Compute Engine SSL 证书资源无需额外费用。
后续步骤
如需详细了解 Compute Engine SSL 证书,请参阅以下页面:
- 如需详细了解自行管理的 Compute Engine SSL 证书,请参阅使用自行管理的 SSL 证书。
- 如需详细了解 Google 管理的 Compute Engine SSL 证书,请参阅使用 Google 管理的 SSL 证书。
如需详细了解 Certificate Manager,请参阅以下页面:
- Certificate Manager 概览。
- 如需详细了解自行管理的 SSL 证书和 Certificate Manager,请参阅 Certificate Manager 文档中的上传自行管理的证书或参阅部署自行管理的证书以获得端到端教程。
- 如需详细了解 Google 管理的 SSL 证书和 Certificate Manager,请参阅 Certificate Manager 文档中的管理证书。
- 如需了解 Certificate Manager 的配额和限制,请参阅 Certificate Manager 文档中的资源配额。
如需详细了解如何为 GKE 管理的代理负载均衡器配置 SSL 证书,请参阅适用于 HTTP(S) 负载均衡的 GKE Ingress、GKE Gateway API 文档以及通过独立可用区级 NEG 实现容器原生负载均衡。
如需详细了解负载均衡器和传输加密,请参阅后端加密和 Google Cloud 中的传输加密白色书。