SSL/TLS 是互联网上使用最广泛的加密协议。从技术层面来说,TLS 是 SSL 的后继者,但这两个术语有时可以互换使用,本文档中就是这样。
传输层安全协议 (TLS) 用于对通过网络发送的信息进行加密,从而在客户端与服务器或负载均衡器之间提供隐私权。使用 SSL 的应用负载平衡器或代理网络负载平衡器需要至少一个私钥和 SSL 证书。
证书配置方法
Google Cloud 为使用目标 HTTPS 代理的应用负载平衡器和使用目标 SSL 代理的代理网络负载平衡器提供了三种证书配置方法。
目标代理引用 Compute Engine SSL 证书:使用此方法时,负载平衡器的目标代理最多可以引用 15 个 Compute Engine SSL 证书资源。每个 Compute Engine SSL 证书资源都包含私钥、相应的证书和(可选)CA 证书。
目标代理引用 Certificate Manager 证书映射:使用此方法,负载平衡器的目标代理会引用单个证书映射。证书映射默认支持数千个条目,并且可以扩展到数百万个条目。每个条目都包含私钥和证书数据。
目标代理直接引用 Certificate Manager 证书:使用此方法,负载平衡器的目标代理最多可以引用 100 个 Certificate Manager 证书。
负载平衡器支持
下表显示了每个负载平衡器支持哪些证书配置方法。
负载均衡器 | 证书配置方法:目标代理 引用... | |||
---|---|---|---|---|
Compute Engine SSL 证书 | Certificate Manager 证书映射 | 直接使用 Certificate Manager 证书 | ||
应用负载平衡器(目标 HTTPS 代理) | ||||
全球外部应用负载均衡器 | 支持全球证书 自行管理的证书 Google 管理的证书 |
自行管理 Google 管理 |
||
传统应用负载均衡器 | 支持全球证书 自行管理的证书 Google 管理的证书 |
自行管理 Google 管理 |
||
区域级外部应用负载均衡器 | 支持区域证书 自行管理 Google 管理 |
自行管理 Google 管理 |
||
区域级内部应用负载均衡器 | 支持区域证书 自行管理 Google 管理 |
自行管理 Google 管理 |
||
跨区域内部应用负载均衡器 |
自行管理 Google 管理 |
|||
代理网络负载平衡器(目标 SSL 代理) | ||||
全局外部代理网络负载均衡器 | 支持全球证书 自行管理的证书 Google 管理的证书 |
自行管理 Google 管理 |
||
传统代理网络负载均衡器 | 支持全球证书 自行管理的证书 Google 管理的证书 |
自行管理 Google 管理 |
配置方法规则
Google Cloud 会强制执行以下证书配置方法规则:
对于同时支持 Compute Engine SSL 证书和 Certificate Manager 证书映射的负载平衡器:负载平衡器的目标代理可以同时引用证书映射和一个或多个 Compute Engine SSL 证书;不过,在这种情况下,系统会忽略所有 Compute Engine SSL 证书,并且负载平衡器只会使用证书映射中的证书。
对于同时支持 Compute Engine SSL 证书和直接附加的 Certificate Manager 证书的负载平衡器:负载平衡器的目标代理只能配置为引用最多 15 个 Compute Engine SSL 证书或最多 100 个 Certificate Manager 证书,不能同时引用这两者。
证书类型
Google Cloud 同时支持自行管理的证书和 Google 管理的证书。
自行管理的 SSL 证书
自行管理的 SSL 证书是您自行获取、预配和续订的证书。自行管理的证书可以是以下任何公钥证书类型:
- 网域验证 (DV)
- 组织验证 (OV)
- 扩展验证 (EV) 证书
您可以使用以下工具创建自行管理的 SSL 证书:
Compute Engine SSL 证书资源:如需了解详情,请参阅使用自行管理的 SSL 证书。
Certificate Manager:如需了解详情,请参阅:
Google 代管式 SSL 证书
Google 管理的 SSL 证书是 Google 自动获取、管理和续订的证书。 Google Cloud由 Google 管理的证书一律为网域验证 (DV) 证书。这类证书不会显示与证书相关联的组织或个人的身份。
只有在使用 DNS 授权时,Certificate Manager 才支持使用通配符的 Google 管理的证书。
您可以使用以下工具创建 Google 管理的 SSL 证书:
- Compute Engine SSL 证书资源:只有全球 Compute Engine
sslCertificates
资源支持 Google 管理的 SSL 证书;regionSslCertificates
不支持。如需了解详情,请参阅使用 Google 管理的 SSL 证书。 - Certificate Manager:如需了解详情,请参阅部署概览。
多个 SSL 证书
如果应用负载平衡器或代理网络负载平衡器的目标代理是使用受支持的证书配置方法配置的,则可以同时托管两个或更多 SSL 证书。最佳实践是,需要多个 SSL 证书时使用 Certificate Manager。
对于支持 Compute Engine SSL 证书的负载平衡器:负载平衡器的目标代理最多可以引用 15 个 Compute Engine SSL 证书。第一个引用的 Compute Engine SSL 证书资源是目标代理的默认(主要)证书。
对于支持 Certificate Manager 证书映射的负载平衡器:负载平衡器的目标代理会引用单个证书映射。证书映射支持数千个证书映射条目。您可以配置哪个证书条目是证书映射的默认(主要)证书。
对于支持直接引用 Certificate Manager 证书的负载平衡器:负载平衡器的目标代理最多可以引用 100 个 Certificate Manager 证书。第一个引用的 Certificate Manager SSL 证书资源是目标代理的默认(主要)证书。
有关详情,请参阅:
证书选择流程
以下证书选择流程适用于目标代理引用多个 Compute Engine SSL 证书或多个 Certificate Manager 证书的负载平衡器。
如果负载平衡器的目标代理引用 Certificate Manager 证书映射,则证书选择流程会有所不同。如需详细了解证书映射的证书选择流程,请参阅 Certificate Manager 文档中的证书选择逻辑。
客户端连接到负载平衡器后,客户端和负载平衡器会协商 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 协商会失败。
价格
使用 Google Cloud 负载平衡器时,会产生网络费用。如需了解详情,请参阅所有网络流量价格。 如需了解 Certificate Manager 的价格,请参阅 Certificate Manager 文档中的价格。使用 Compute Engine SSL 证书资源无需额外费用。
后续步骤
Google Cloud 白皮书中的传输加密