SSL/TLS 是互联网上使用最广泛的加密协议。从技术上讲,TLS 是 SSL 的后继技术,但这两个术语有时可以互换使用,本文档中就是如此。
传输层安全协议 (TLS) 用于对通过网络发送的信息进行加密,从而在客户端与服务器或负载均衡器之间提供隐私权。使用 SSL 的应用负载均衡器或代理网络负载均衡器需要至少一个私钥和 SSL 证书。
证书配置方法
对于使用目标 HTTPS 代理的应用负载均衡器,负载均衡器的目标代理必须引用 1 到 15 个 Compute Engine SSL 证书。每个 Compute Engine SSL 证书资源都包含私钥、相应的证书和(可选)CA 证书。
负载均衡器支持
下表列出了每个负载均衡器支持的证书配置方法。
负载均衡器 | 证书配置方法:目标代理引用... | |||
---|---|---|---|---|
Compute Engine SSL 证书 | Certificate Manager 证书映射 | 直接使用 Certificate Manager 证书 | ||
应用负载均衡器(目标 HTTPS 代理) | ||||
区域级外部应用负载均衡器 | 支持区域证书 自行管理 Google 管理 |
自行管理 Google 管理 |
||
区域级内部应用负载均衡器 | 支持区域证书 自行管理 Google 管理 |
自行管理 Google 管理 |
证书类型
您可以为负载均衡器创建自行管理的 SSL 证书。
自行管理的 SSL 证书
自行管理的 SSL 证书是您自行获取、预配和续订的证书。自行管理的证书可以是以下任何公钥证书类型:
- 网域验证 (DV)
- 组织验证 (OV)
- 扩展验证 (EV) 证书
您可以使用 Compute Engine SSL 证书资源创建自行管理的 SSL 证书。如需了解详情,请参阅使用自行管理的 SSL 证书。
多个 SSL 证书
应用负载均衡器的目标代理最多可引用 15 个 Compute Engine SSL 证书。第一个引用的 Compute Engine SSL 证书资源是目标代理的默认(主要)证书。
如需了解详情,请参阅负载均衡文档中的目标代理和SSL 证书。
证书选择流程
以下证书选择流程适用于目标代理引用多个 Compute Engine SSL 证书的负载均衡器。
客户端连接到负载均衡器后,客户端和负载均衡器会协商 TLS 会话。在 TLS 会话协商期间,客户端向负载均衡器发送其支持的 TLS 加密列表(在 ClientHello
中)。负载均衡器选择其公钥算法与客户端兼容的证书。作为此协商的一部分,客户端还可以向负载均衡器发送服务器名称指示 (SNI) 主机名。SNI 主机名数据有时用于帮助负载均衡器选择应发送到客户端的证书。
如果负载均衡器的目标代理仅引用一个证书,则会使用该证书,而客户端发送的 SNI 主机名的值则无关紧要。
如果负载均衡器的目标代理引用两个或更多证书,负载均衡器会使用以下流程来选择一个证书:
如果客户端未在其
ClientHello
中发送任何 SNI 主机名,则负载均衡器会使用其证书列表中的第一个证书。如果客户端发送的 SNI 主机名与任何证书通用名称 (CN) 不匹配,且与任何证书主题备用名称 (SAN) 都不匹配,则负载均衡器使用其证书列表中的第一个证书。
在其他所有情况下:负载均衡器会使用以下匹配流程选择证书:
通过通用名称 (CN) 和主题备用名称 (SAN) 证书特性的最长后缀完成匹配,优先选择 ECDSA 证书而非 RSA 证书。
为了说明匹配的方法,设想目标代理引用以下两个证书:
证书 A
- CN:
cats.pets.example.com
- SAN:
cats.pets.example.com
,*.pets.example.com
,*.example.com
- CN:
证书 B
- CN:
dogs.pets.example.com
- SAN:
dogs.pets.example.com
,*.pets.example.com
,*.example.com
- CN:
现在,请考虑以下几种情况:
- 如果客户端发送的 SNI 主机名为
cats.pets.example.com
,则负载均衡器使用证书 A。 - 如果客户端发送的 SNI 主机名为
ferrets.pets.example.com
,则没有完全匹配的证书,因此负载均衡器会选择证书 A 或证书 B,因为它们的 SAN 列表中都包含*.pets.example.com
。在这种情况下,您无法控制系统选择哪个证书。
- 如果客户端发送的 SNI 主机名为
选择证书后,只有当所选证书使用与客户端在
ClientHello
中发送的加密算法兼容的公钥算法时,负载均衡器才会向客户端发送该证书。如果客户端不支持包含负载均衡器所选证书的公钥算法(ECDSA 或 RSA)的加密套件,则 TLS 协商会失败。