HAProxy配置SSL


前沿

據悉蘋果強制APP在2016年底使用ATS協議,所以公司准備將部分站點http統一替換成https。所有我們就得測試下

1.首先原有的haproxy1.5升級到了1.7版本支持ssl

2.查看相關文檔,測試

3.如果站點經過CDN加速,還需要確認CDN是否支持https或者支持是否收取額外費用

4.等等。。。。。。

1.現有環境

 

2.haproxy代理ssl模式

haproxy 代理 ssl 有兩種方式

1、haproxy 本身提供ssl 證書,后面的web 服務器走正常的http (偷懶方式)
2、haproxy 本身只提供代理,后面的web服務器https

  • 第一種是我們選擇的模式,在haproxy這里設定SSL,這樣我們可以繼續使用七層負載均衡。SSL連接終止在負載均衡器haproxy ----->解碼SSL連接並發送非加密連接到后端應用tomcat,這意味着負載均衡器負責解碼SSL連接,這與SSL穿透相反,它是直接向代理服務器發送SSL連接的。

  •     第二種使用SSL穿透,SSL連接在每個tomcat服務器終止,將CPU負載都分散到tomcat服務器。然而,這樣做會讓你失去增加或修改HTTP報頭的能力,因為連接只是簡單地從負載均衡器路由到tomcat服務器,這意味着應用服務器會失去獲取 X-Forwarded-* 報頭的能力,這個報頭包含了客戶端IP地址、端口和使用的協議。

  •     有兩種策略的組合做法,那就是第三種,SSL連接在負載均衡器處終止,按需求調整,然后作為新的SSL連接代理到后台服務器。這可能會提供最大的安全性和發送客戶端信息的能力。這樣做的代價是更多的CPU能耗和稍復雜一點的配置。

  •     選擇哪個策略取決於你及應用的需求。SSL終端為我所見過最典型的策略,但SSL穿透可能會更安全。

ps:這段是招扒的wangzan18的。在此謝謝

第一種方式

需要編譯haproxy 支持ssl,編譯參數:

make TARGET=linux26 USE_OPENSSL=1 ADDLIB=-lz
ldd haproxy | grep ssl
libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007fb0485e5000)

配置參數:

frontend https_frontend

bind *:443 ssl crt /etc/ssl/certs/servername.pem
mode http
option httpclose
option forwardfor
reqadd X-Forwarded-Proto:\ https
default_backend web_server

backend web_server

mode http
balance roundrobin
cookie SERVERID insert indirect nocache
server s1 192.168.250.47:80 check cookie s1
server s2 192.168.250.49:80 check cookie s2

注意:這里的pem 文件是下面兩個文件合並而成:

cat servername.crt servername.key |tee servername.pem

第二種方式配置

不需要重新編譯支持ssl,簡單方便。需要后面的web服務器配置好ssl 即可。

frontend https_frontend

bind *:443
mode tcp
default_backend web_server

backend web_server
mode tcp
balance roundrobin
stick-table type ip size 200k expire 30m
stick on src
server s1 192.168.250.47:443
server s2 192.168.250.49:443

注意:這種模式下mode 必須是tcp 模式

3.配置說明

這一行要加,要不然reload會警告

tune.ssl.default-dh-param 2048

 保留80,同時支持443 ssl,后面指定證書文件

 

redirect scheme https if !{ ssl_fc }

這一行是僅支持ssl,效果是:訪問80端口是自動跳轉到443的ssl

這是針對node生效,如果想全局使用的話,可以把這句話添加到frontend下

 這是針對node生效,如果想全局使用的話,可以把這句話添加到frontend下

 

參考鏈接

https://cbonte.github.io/haproxy-dconv/

http://www.voidcn.com/blog/aaronsa/article/p-5671440.html

http://www.voidcn.com/blog/wangzan18/article/p-5794515.html

https://wakatime.com/blog/23-how-to-scale-ssl-with-haproxy-and-nginx

https://www.digitalocean.com/community/tutorials/how-to-implement-ssl-termination-with-haproxy-on-ubuntu-14-04

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM