我完全迷失了,所以如果我说得没有道理,我深表歉意。
我需要在 EC2 中为我们的应用服务器创建一个负载均衡器。我尝试让 ELB 通过 SSL (8443) 平衡流量。但是,它要求我提供 SSL 证书。它似乎要求我提供公钥和私钥(pem 编码)。
ELB 后面的服务器有一个密钥库文件,这是我们的开发人员使用 Oracle Java 的 keytool 程序创建的。创建的文件是二进制文件。看来 ELB 需要一个文本、pem 格式的密钥。
- 为什么 ELB 要求我输入证书?ELB 不能只将 SSL 流量从一端转发到另一端,然后让服务器处理 SSL 吗?
- 证书/密钥库文件是否相关,并且密钥必须在 ELB 和服务器上匹配?AWS 文档说使用 openssl 创建私钥和证书。我可以独立运行 openssl 来为负载均衡器创建 SSL 证书,并将密钥库文件留在服务器上吗?
在此先感谢您的帮助。
答案1
在负载均衡器上执行 SSL 终止的优点是,您可以减轻后端节点执行 SSL 加密/解密的负担。
因此,只需将您的 SSL 私钥和签名证书部署到 ELB 即可。这将处理 SSL 终止,然后可以将未加密的流量代理到您的后端实例。如果您希望 ELB 和后端实例之间的流量被加密,那没问题,但您仍然需要 ELB 拥有您的私钥和签名证书。
关于从 Java 密钥库中获取证书和密钥,这当然是可能的。本问答Stackoverflow 上有详细信息。
答案2
ELB 可以采用以下两种方式之一使用:
ELB 处的 SSL 终止。
在此模式下,您将向 ELB 提供证书和密钥。它将解密请求并以未加密的形式将其传递给您的服务器。这样做的好处是您可以减少服务器的 CPU 负载。
ELB 仅充当一个直通角色。
ELB 可以充当哑直通。它不需要证书或密钥。为了以这种方式进行设置,请将其设置为 TCP 端口,而不是使用 HTTPS 选项。
答案3
就客户端而言,ELB 是端点。它添加元数据标头等。如果没有证书,ELB 目前无法提供 SSL。
ELB 必须具有您想要向外发布的证书,但实际实例上的证书不必匹配。它们可以是自签名的。您甚至不需要在实例上安装证书,但数据将在实例和 ELB 之间通过 AWS 的基础设施以明文形式传输。您可以以任何您喜欢的方式创建证书,只要它是有效的。