如何在HAProxy LOAD_BALANCER上设置SSL-HTTPS?

本教程将帮助你了解如何在HAproxy负载均衡器上设置ssl-https终端,以保护Web服务器的安全。HA代理是一个广泛使用的开源HTTP负载平衡器和代理解决方案,它通过在多个服务器上分配工作负载来提高Web服务器的性能和可靠性。通过这样做,它提供了服务和应用程序的高可用性。

安全套接字层(SSL)

安全套接字层(SSL)是一种标准的安全技术,用于在服务器和客户端--通常是网络服务器(网站)和浏览器,或邮件服务器和邮件客户端(如Outlook)之间建立一个加密链接。它比TLS(即传输层安全)更广为人知,后者是SSL的后续技术。

SSL的图解

SSL允许信用卡号码、社会安全号码和登录凭证等敏感信息安全地传输。通常情况下,在浏览器和网络服务器之间发送的数据是以纯文本形式发送的--使你容易被窃听。如果攻击者能够拦截在浏览器和网络服务器之间发送的所有数据,他们就可以看到并使用这些信息。

更具体地说,SSL是一种安全协议。协议描述了应该如何使用算法。在这种情况下,SSL协议决定了链接和传输的数据的加密变量。

超文本传输协议安全(https)

如果你看到https,网络服务器和你正在使用的移动设备上的浏览器之间的会话是加密的。你可以通过查看浏览器地址栏中的统一资源定位器(URL),轻松识别配置了https的网络服务器。

展示HTTP和HTTPS的互动方式

超文本传输协议安全(https)是超文本传输协议(HTTP)与安全套接字层(SSL)/传输层安全(TLS)协议的结合。TLS是一个在浏览器和网络服务器中广泛实施的认证和安全协议。SSL的工作原理是使用公共密钥对通过SSL连接传输的数据进行加密。大多数网络浏览器支持SSL。它允许你与网络服务器安全地进行通信。

SSL 终止

通过负载平衡器的传入流量是纯文本的,因此是不安全的,容易被邪恶的第三方窃听。HAProxy可以被配置为在将流量分配到多个后端服务器之前对其进行加密。这是一个首选的方法,而不是对单个后端服务器进行加密,这可能是一个繁琐的过程,这就是SSL终端的作用。HAProxy对自己和客户之间的通信进行加密,然后将信息以明文形式转发到你内部网络的后端服务器。然后,它对来自后端服务器的响应进行加密,并将其转发给客户。TLS/SSL证书只存储在HAProxy负载平衡器上,而不是多个后端服务器上,从而减少服务器的工作量。

Certbot

Certbot通常是用来将一个现有的HTTP网站切换到HTTPS中工作(之后,在必要时继续更新网站的HTTPS证书)。一些Certbot文档假设或建议你有一个可以使用HTTP 80端口访问的网站。

步骤1)安装Certbot

  1. 要从Let's Encrypt Authority获得SSL/TL证书,你首先需要安装certbot。Certbot是免费的开源软件,用于在网站上自动部署Let's Encrypt SSL证书。
  2. 要安装certbot,请登录HAProxy服务器,首先要更新本地软件包索引。
$ sudo apt update
$ sudo apt install -y certbot python3-certbot-nginx

第2步)获得SSL证书

  1. Let's Encrypt提供了一些使用各种插件获得SSL证书的方法。大多数插件只协助获得证书,这需要对网络服务器进行手动配置。这些插件被称为 "验证器",因为它们只是检查服务器是否应该被颁发证书。
  2. 因此,你需要确保没有服务在80端口上监听。要检查哪些服务在80端口上监听,请运行命令。
$ netstat -na | grep ':80.*LISTEN'
$ sudo systemctl stop haproxy
$ sudo certbot certonly --standalone -d www.your-domain_name.tech --non-interactive --agree-tos --email example@gmail.com

如果一切顺利,SSL证书和密钥将被成功保存在服务器上。这些文件本身保存在/etc/letsencrypt/archives目录下,但certbot创建了一个符号链接到/etc/letsencrypt/live/your_domain_name路径。

  1. 一旦获得证书,你将在/etc/letsencrypt/live/your_domain_name目录下拥有以下文件。
  2. cert.pem - 这是你的域名的证书。
  3. chain.pem - 这是Let's Encrypt连锁证书。
  4. fullchain.pem - 包含cert.pem和 chain.pem的组合。
  5. privkey.pem - 你的证书的私钥。

第3步)配置HAProxy以使用SSL证书

  1. 为了让HAProxy进行SSL终止--以便它对自己和客户或最终用户之间的网络通信进行加密--你必须将fullchain.pem和privkey.pem文件合并为一个文件。
  2. 但在你这样做之前,先创建一个目录,将所有的文件放在那里。
$ sudo mkdir -p /etc/haproxy/certs
$ DOMAIN='www.your-domain_name.tech' sudo -E bash -c 'cat /etc/letsencrypt/live/$DOMAIN/fullchain.pem /etc/letsencrypt/live/$DOMAIN/privkey.pem > /etc/haproxy/certs/$DOMAIN.pem'
$ sudo chmod -R go-rwx /etc/haproxy/certs
$ sudo vim /etc/haproxy/haproxy.cfg

绑定443端口和证书关系

bind haproxy-ip:443 ssl crt /etc/haproxy/certs/domain.pem

强制http 重定向到https

redirect scheme https if !{ ssl_fc }

保存更改并退出配置文件。一定要确认HAProxy的语法没有问题,使用以下语法。

$ sudo haproxy -f /etc/haproxy/haproxy.cfg -c

重启haproxy采用新配置

$ sudo systemctl restart haproxy

确认运行状态正常

$ sudo systemctl status haproxy

刷新浏览器访问你的域名

展开阅读全文

页面更新:2024-04-23

标签:平衡器   超文本   负载   端口   证书   浏览器   协议   服务器   网站   网络

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top