HAProxy是一种广泛使用的、可靠的、高性能的反向代理,它为TCP和HTTP应用程序提供高可用性和负载平衡能力。默认情况下,它是使用OpenSSL编译的,因此支持SSL终端,从而使网站/应用程序堆栈环境能够加密和解密“Web 入口服务器”或应用程序访问网关服务器和客户端应用程序之间的流量。
在本文中,小编简单介绍在HAPorxy中配置CA SSL证书的简单过程。注意:在操作之前,默认你已从CA收到证书并准备在HAProxy服务器上安装和配置它。
准备好的文件有:
- CA 证书。
- 中间证书也称为捆绑或链。
- root CA(如果可用的话)。
- 私钥。
创建PEM格式的SSL证书文件
在HAProxy中配置CA证书之前,需要了解HAProxy需要一个.pem
文件,该文件应包含上述所有文件的内容,按以下顺序连接:
- 以
.key
结尾的私钥(可以出现在文件的开头或结尾)。 - 后面跟SSL证书文件(通常以
.crt
结尾)。 - 然后是CA-Bundle(通常以
.ca-bundle
结尾)。 - root CA(如果可用)。
要创建.pem
文件,请进入包含你证书文件的目录,例如~/Downloads,然后像这样运行cat 命令(根据情况相应地替换文件名):
$ cat example.com.key STAR_example_com/STAR_example_com.crt STAR_example_com/STAR_example_com.ca-bundle > example.com.pem
在HAProxy中配置PEM SSL证书
接下来,使用scp命令将刚刚创建的.pem
证书文件上传到HAProxy服务器,如下所示(将sysadmin和192.168.10.24分别替换为远程服务器用户名和IP地址):
$ scp example.com.pem sysadmin@192.168.10.24 :/home/sysadmin/
然后使用mkdir命令创建将存储证书.pem
文件的目录并将文件复制到其中:
$ sudo mkdir -p /etc/ssl/example.com/ $ sudo cp example.com.pem /etc/ssl/example.com/
接下来,打开HAProxy配置文件并在前端侦听器部分下配置证书,使用ssl和crt参数:前者启用SSL终端,后者指定证书文件的位置。
frontend http_frontend mode http bind *:80 bind *:443 ssl crt /etc/ssl/example.com/example.com.pem alpn h2,http/1.1 redirect scheme https code 301 if !{ ssl_fc } default_backend http_servers
某些版本的SSL/TLS不建议使用,因为其中发现了漏洞。要限制支持的SSL版本,可以添加ssl-min-ver参数,如下所示:
bind *:443 ssl crt /etc/ssl/example.com/example.com.pem alpn h2,http/1.1 ssl-min-ver TLSv1.2
配置HAProxy以将HTTP重定向到HTTPS
为确保网站只能通过HTTPS访问,需要启用HAProxy以将所有HTTP流量重定向到HTTPS,以防用户尝试通过HTTP(端口 80)访问它。
将以下行添加到上述配置中:
redirect scheme https code 301 if !{ ssl_fc } 或者 http-request redirect scheme https unless { ssl_fc }
前端部分现在应该类似于此示例配置中的部分:
frontend http_frontend mode http bind *:80 bind *:443 ssl crt /etc/ssl/example.com/example.com.pem alpn h2,http/1.1 ssl-min-ver TLSv1.2 redirect scheme https code 301 if !{ ssl_fc } default_backend http_servers backend http_servers mode http balance roundrobin option httpchk HEAD / http-response set-header X-Frame-Options SAMEORIGIN http-response set-header X-XSS-Protection 1;mode=block http-response set-header X-Content-Type-Options nosniff default-server check maxconn 5000 server http_server1 10.2.1.55:80
保存配置文件并关闭它。
然后使用以下命令检查其语法是否正确:
$ sudo haproxy -f /etc/haproxy/haproxy.cfg -c
如果配置文件有效,请使用systemctl 命令重新加载 haproxy服务以获取配置中的最新更改:
$ sudo systemctl reload haproxy
总结
以上就是在HAProxy负载平衡器软件中配置SSL证书,相对来说还是比较简单的,如有不清楚的小伙伴可以参考上述教程进行设置。
众所周知,HAProxy比较适用于那些负载特大的Web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接,并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时通过它安装CA SSL证书还可以保护网站的安全。