如何在HAProxyLOADBALANCER上设置SSLHT
本教程将帮助你了解如何在HAproxy负载均衡器上设置sslhttps终端,以保护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对自己和客户之间的通信进行加密,然后将信息以明文形式转发到你内部网络的后端服务器。然后,它对来自后端服务器的响应进行加密,并将其转发给客户。TLSSSL证书只存储在HAProxy负载平衡器上,而不是多个后端服务器上,从而减少服务器的工作量。Certbot
Certbot通常是用来将一个现有的HTTP网站切换到HTTPS中工作(之后,在必要时继续更新网站的HTTPS证书)。一些Certbot文档假设或建议你有一个可以使用HTTP80端口访问的网站。步骤1)安装Certbot要从LetsEncryptAuthority获得SSLTL证书,你首先需要安装certbot。Certbot是免费的开源软件,用于在网站上自动部署LetsEncryptSSL证书。要安装certbot,请登录HAProxy服务器,首先要更新本地软件包索引。sudoaptupdatesudoaptinstallycertbotpython3certbotnginx第2步)获得SSL证书LetsEncrypt提供了一些使用各种插件获得SSL证书的方法。大多数插件只协助获得证书,这需要对网络服务器进行手动配置。这些插件被称为验证器,因为它们只是检查服务器是否应该被颁发证书。因此,你需要确保没有服务在80端口上监听。要检查哪些服务在80端口上监听,请运行命令。netstatnagrep:80。LISTENsudosystemctlstophaproxysudocertbotcertonlystandalonedwww。yourdomainname。technoninteractiveagreetosemailexamplegmail。com
如果一切顺利,SSL证书和密钥将被成功保存在服务器上。这些文件本身保存在etcletsencryptarchives目录下,但certbot创建了一个符号链接到etcletsencryptliveyourdomainname路径。一旦获得证书,你将在etcletsencryptliveyourdomainname目录下拥有以下文件。cert。pem这是你的域名的证书。chain。pem这是LetsEncrypt连锁证书。fullchain。pem包含cert。pem和chain。pem的组合。privkey。pem你的证书的私钥。第3步)配置HAProxy以使用SSL证书为了让HAProxy进行SSL终止以便它对自己和客户或最终用户之间的网络通信进行加密你必须将fullchain。pem和privkey。pem文件合并为一个文件。但在你这样做之前,先创建一个目录,将所有的文件放在那里。sudomkdirpetchaproxycertsDOMAINwww。yourdomainname。techsudoEbashccatetcletsencryptliveDOMAINfullchain。pemetcletsencryptliveDOMAINprivkey。pemetchaproxycertsDOMAIN。pemsudochmodRgorwxetchaproxycertssudovimetchaproxyhaproxy。cfg
绑定443端口和证书关系bindhaproxyip:443sslcrtetchaproxycertsdomain。pem
强制http重定向到httpsredirectschemehttpsif!{sslfc}
保存更改并退出配置文件。一定要确认HAProxy的语法没有问题,使用以下语法。sudohaproxyfetchaproxyhaproxy。cfgc
重启haproxy采用新配置sudosystemctlrestarthaproxy
确认运行状态正常sudosystemctlstatushaproxy
刷新浏览器访问你的域名