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
HAProxy配置SSL的更多相关文章
- haproxy配置基于ssl证书的https负载均衡
本实验全部在haproxy1.5.19版本进行测试通过,经过测试1.7.X及haproxy1.3版本以下haproxy配置参数可能不适用,需要注意版本号. 一.业务要求现在根据业务的实际需要,有以下几 ...
- HAproxy 配置参数详解
HAproxy 配置参数详解 /etc/haproxy/haproxy.cfg # 配置文件 ----------------------------------------------------- ...
- haproxy实现ssl套接字加密
概述 如果你的应用使用SSL证书,则需要决定如何在负载均衡器上使用它们. 单服务器的简单配置通常是考虑客户端SSL连接如何被接收请求的服务器解码.由于负载均衡器处在客户端和更多服务器之间,SSL连接解 ...
- Windows下Nginx配置SSL实现Https访问(包含证书生成)
Vincent.李 Windows下Nginx配置SSL实现Https访问(包含证书生成) Windows下Nginx配置SSL实现Https访问(包含证书生成) 首先要说明为什么要实现https ...
- Tomcat:配置SSL
SSL简述 SSL就是安全套接字层,是一种允许web浏览器和 web服务器通过安全连接通信的技术.这是一个双向的过程,这意味着 服务器和浏览器在发送数据之前加密所有交流的数据. SSL有一个重要的特点 ...
- Apache安装及配置ssl
目录 1.windows安装 软件准备 安装apache 开启ssl(Https访问) 打开httpd.conf,解除下面配置的注释 查看ssl模块使用哪一个配置文件 配置https虚拟主机 简单配置 ...
- Python-day3作业-haproxy配置文件管理脚本
#!/usr/bin/env python import os,sys,time,re,prettytable,json from collections import defaultdict,Ord ...
- Nginx 下配置SSL证书的方法
1.Nginx 配置 ssl 模块 默认 Nginx 是没有 ssl 模块的,而我的 VPS 默认装的是 Nginx 0.7.63 ,顺带把 Nginx 升级到 0.7.64 并且 配置 ssl 模块 ...
- Tomcat 7.0配置SSL的问题及解决办法
http://dong-shuai22-126-com.iteye.com/blog/1830209 以前一直在用Tomcat 6.0.29版本,今下载了apache-tomcat-7.0.33- ...
随机推荐
- node-webkit 使用requirejs 小结
1. node-webkit 启动页使用requrejs 将webapp中的require改为requirejs,因为requirejs本来就应该用requirejs的,require只是requir ...
- Ubantu Linux 环境下编译c++程序
先在文件中新建一个a.cpp文件,在里面编写程序, 然后打开终端输入下面命令即可; $ g++ a.cpp -o b ///编译a.cpp 然后把编译之后的.exe文件存入b中 $ ./b ///执行 ...
- CSS技巧和经验:
1. 如何清除图片下方出现几像素的空白间隙 方法1 img { display: block; } 方法2 img { vertical-align: top; } // 除了top值,还可以设置为t ...
- 【转】Apache Digest验证
Apache默认使用basic模块验证,都是明文传输,不太安全,所以本文使用Digest来验证,以提高安全性. 1.Apache配置: A.目录权限配置 Alias /nagios "/us ...
- RDIFramework.NET ━ .NET快速信息化系统开发框架 ━ 工作流程组件介绍
RDIFramework.NET ━ .NET快速信息化系统开发框架 工作流程组件介绍 RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架,给用户和开发者最佳的.Net框架部 ...
- [Python] 删除指定目录下后缀为 xxx 的过期文件
import os import time import datetime def should_remove(path, pattern, days): if not path.endswith(p ...
- (转)SVN服务器搭建和使用(一)
Subversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说. 首先来下载和搭建SVN服务器. 现在Subversion已经迁移到apache网站上了,下载地址: http:// ...
- git/github学习笔记
郑重提示,本文来自这里,如果喜欢,请关注原作者. 1. git 版本控制系统 相比CVS\SVN优势: - 支持离线开发,离线Repository- 强大的分支功能,适合多个独立开发者协作- 速度块 ...
- HttpClientUtil工具类,待更新
package com.igs.webShop.web.util; import org.apache.http.HttpEntity;import org.apache.http.HttpRespo ...
- CentOS下搭建LAMP环境详解
前言:在这里将介绍如何在CentOS下搭建LAMP环境(全部使用源码编译安装),用于web服务器开发. •LAMP: Linux + Apache + PHP + Mysql. •系统: CentOS ...