高性能 TCP/HTTP 负载平衡器 HAProxy 支持 SSL 终止,这意味着它可以处理 SSL 加密和解密任务,从而减少后端服务器的负载。
本文将向你介绍如何在 HAProxy 中配置 SSL 证书,包括生成 CSR(证书签名请求)代码、获取商业 SSL 证书、将证书与私钥相结合,以及配置 HAProxy 以使用该证书。 让我们开始吧!
目录
为 SSL 证书生成 CSR 代码
在证书颁发机构颁发SSL 证书之前,它需要你的CSR 代码来验证你的联系凭证。 CSR 是一个小的编码文本块,包含贵公司网站和公司的相关详细信息。 你必须在注册 SSL 时生成并提交它。
方法如下
- 打开终端:访问服务器上的命令行界面。
- 运行 OpenSSL 命令使用以下OpenSSL 命令生成 CSR 和私钥。
将 mydomain 替换为您的实际域名。
openssl req -new -newkey rsa:2048 -nodes -keyout mydomain.key -out mydomain.csr - 输入所需信息:系统将提示您输入详细信息,例如
- 国家名称(2 个字母的代码,如 US)
- 州或省名称(如加利福尼亚州)
- 地点名称(例如圣何塞)
- 组织名称(如 GPI 控股公司)
- 组织单位名称(如 IT)
- 通用名称(例如:yourdomain.com)
- 电子邮件地址
- 保存 CSR 和私人密钥:命令将生成两个文件:mydomain.csr(CSR)和mydomain.key(私钥)。 请妥善保存私人密钥,因为稍后会用到它。
为 HAProxy 获取商业 SSL 证书
商业 SSL 证书受到所有浏览器和操作系统的信任。 因此,您的网站或应用程序不会出现恼人的 SSL 连接错误。 对于生产环境来说,这种证书是必须的。 如果出于测试目的使用 HAProxy,可以生成自签名证书,但在本文中,我们将重点讨论实时环境下的 HAProxy SSL 配置。
要获取商业 SSL 证书,请按照以下步骤操作:
- 选择证书颁发机构 (CA):选择信誉良好的 CA,如DigiCert、Comodo 或GeoTrust。
- 选择证书类型:选择适合你需要的SSL 证书类型,如单域、通配符 或多域 (SAN) 证书。
- 提交 CSR:向 CA 提供 CSR,以便他们签发与服务器私钥匹配的证书。
- 购买证书:从 SSLDragon等可靠的 SSL 经销商处购买 SSL 证书,以获得最优惠的价格和客户支持。
- 验证过程:根据证书类型的不同,您将经历域验证、组织验证或扩展验证过程。
- 接收证书:验证后,CA 将签发 ZIP 文件夹中存档的 SSL 文件。
合并证书和私钥
从 CA 收到 SSL 证书后,需要将其与私钥结合起来,创建一个 HAProxy 可以使用的单一文件。
- 准备文件:确保有以下文件
- 您域名的 SSL 证书(如 mydomain.crt)
- 之前生成的私人密钥(mydomain.key)
- CA 提供的任何中间证书(如 intermediate.crt)。 通常,CA 会在CA Bundle 文件中发送中间证书。
- 合并文件:该命令将证书、中间证书和私钥合并为一个PEM 文件。
cat mydomain.crt intermediate.crt mydomain.key> /etc/haproxy/mydomain.pem
在 HAProxy 中配置 PEM SSL 证书
有了 PEM 文件,就可以配置 HAProxy 以使用 SSL 证书。
步骤 1:将 PEM 证书上传到 HAProxy 服务器:
使用scp 命令将 PEM 证书文件上传到 HAProxy服务器(将sysadmin 和haproxy_server_ip分别替换为远程服务器的用户名和 IP 地址):
scp mydomain.pem sysadmin@haproxy_server_ip:/home/sysadmin/
第 2 步:创建证书目录
创建一个存放证书 PEM 文件的目录:
sudo mkdir -p /etc/ssl/mydomain/
sudo cp mydomain.pem /etc/ssl/mydomain/
步骤 3:编辑 HAProxy 配置文件
用记事本等文本编辑器打开 HAProxy 配置文件(默认位于/etc/haproxy/haproxy.cfg)。
步骤 4:配置前台部分
修改前台 部分,启用 SSL 终止并将 HTTP 流量重定向到 HTTPS:
frontend http_frontend
mode http
bind *:80
bind *:443 ssl crt /etc/ssl/mydomain/mydomain.pem alpn h2,http/1.1
redirect scheme https code 301 if !{ ssl_fc }
default_backend http_servers
第 5 步:添加 SSL/TLS 参数
为确保使用现代和安全的 SSL/TLS 版本,请添加ssl-min-ver参数:
bind *:443 ssl crt /etc/ssl/mydomain/mydomain.pem alpn h2,http/1.1 ssl-min-ver TLSv1.2
该指令支持 HTTP/2 和 HTTP/1.1 协议,并为安全连接强制执行最低 1.2 的 TLS 版本。
步骤 6:配置后台部分
确保正确定义后端服务器。
后端 http_servers
模式 http
平衡轮循
server1 :80 检查
server server2 :80 检查
步骤 7:重启 HAProxy
重新启动 HAProxy 服务,应用更改:
sudo systemctl restart haproxy
第 8 步:测试 SSL 配置
要测试 HAProxy SSL 配置,请使用SSL Labs 并输入域名。 该工具将提供 SSL/TLS 设置的综合报告,包括证书详情和任何潜在问题。
结论
总之,学习如何在 HAProxy 中配置 SSL 证书对于保护网络应用程序的安全和确保客户端与服务器之间的可靠通信至关重要。 通过正确设置 HAProxy SSL 配置,可以保护敏感数据并提高整体安全性。 遵循这些指南有助于实施强大的加密,确保您的网站通过HTTPS 安全运行,为用户提供更安全的体验。