在 HAproxy 1.5 中使用 SSL 证书

Posted OSC开源社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在 HAproxy 1.5 中使用 SSL 证书相关的知识,希望对你有一定的参考价值。

概述

如果你的应用使用SSL证书,则需要决定如何在负载均衡器上使用它们。

单服务器的简单配置通常是考虑客户端SSL连接如何被接收请求的服务器解码。由于负载均衡器处在客户端和更多服务器之间,SSL连接解码就成了需要关注的焦点。


有两种主要的策略。


SSL终端是在负载均衡器终止/解码SSL连接并发送非加密连接到后台服务器的做法


这意味着负载均衡器负责解码SSL连接 - 涉及非SSL请求的缓慢的CPU密集型处理。


这与SSL穿透相反, 它是直接向代理服务器发送SSL连接的。


使用SSL穿透,SSL连接在每个代理服务器终止,将CPU负载都分散到那些服务器。然而,这样做会让你失去增加或修改HTTP报头的能力,因为连接只是简单地从负载均衡器路由到代理服务器。



选择哪个策略取决于你及应用的需求。SSL终端为我所见过最典型的策略,但SSL穿透可能会更安全。


有两种策略的组合做法,就是SSL连接在负载均衡器处终止,按需求调整,然后作为新的SSL连接代理到后台服务器。这可能会提供最大的安全性和发送客户端信息的能力。这样做的代价是更多的CPU能耗和稍复杂一点的配置。

我的一篇关于负载均衡器的效果与性能及哥伸缩性的老文章也有讨论过这些问题。

使用 HAProxy 作为 SSL 终端

首先,我们将介绍最典型的解决方案 - SSL 终端。正如前面提到的,我们需要让负载均衡器处理SSL连接。这就意味着要将SSL证书放在负载均衡服务器上。


在之前的SFH中,我们已经介绍过如何创建自签名证书。我们将重用那些信息来创建一份给HAProxy使用的SSL证书。

记住,在生产环境里使用(而不是自签名)的SSL证书,是不会需要你自己来生成或签名 - 你只需要创建证书签名请求 (csr) 并把它交给那个你向它购买证书的机构即可。


我使用 xip.io 服务是因为它允许我们使用主机名而非直接通过IP访问服务器,这就不需要悠我电脑的Host文件了。

虽然这个操作过程需要一份合格的SSL证书, 但我会在这里简单地演示生成自签名证书的步骤: