前沿
據悉蘋果強制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