需求

haproxy需要同时实现内网机器通过http和https代理访问互联网,但是https代理我们没有证书,而且内网多个服务都需要通过代理访问不同的域名的https服务。
SSL初期的设计顺应经典的公钥基础设施 PKI(Public Key Infrastructure)设计,PKI 认为一个服务器只为一个域名提供服务,从而一个服务器上也就只能使用一个证书。
随着HTTP 服务器开启虚拟主机支持后,每个服务器通过相同的IP地址可以为很多域名提供服务。这种为虚拟主机提供通信安全的简单途径,却经常导致使用了错误的数字证书,因为服务器端无法知道客户端到底请求的是哪个域名下的服务,从而导致浏览器对用户发出警告。

引入sni

SNI (Server Name Indication)是用来改善服务器与客户端 SSL (Secure Socket Layer)和 TLS (Transport Layer Security) 的一个扩展。主要解决一台服务器只能使用一个证书(一个域名)的缺点,随着服务器对虚拟主机的支持,一个服务器上可以为多个域名提供服务,因此SNI必须得到支持才能满足需求。

SNI的TLS扩展通过发送虚拟域的名字做为TSL协商的一部分修正了这个问题,在Client Hello阶段,通过extensions扩展引入sni,将域名信息提前告诉服务器,服务器根据域名取得对应的证书返回给客户端已完成校验过程。

注意:sni的引入是在tcp传输层。

haproxy配置sni

# Global settings
globallog         127.0.0.1 local3chroot      /var/lib/haproxypidfile     /var/run/haproxy.pidmaxconn     4000user        haproxygroup       haproxydaemon# turn on stats unix socketstats socket /var/lib/haproxy/statsdefaultslog                     globaloption                  dontlognulloption http-server-closeoption                  redispatchretries                 3timeout http-request    10stimeout queue           1mtimeout connect         10stimeout client          1mtimeout server          1mtimeout http-keep-alive 10stimeout check           10smaxconn                 3000#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
#tcp proxy https
frontend https_proxymode tcpbind :443tcp-request inspect-delay 5stcp-request content accept if { req_ssl_hello_type 1 }acl is_api.mch.weixin.qq.com req_ssl_sni -i api.mch.weixin.qq.comacl is_openapi.alipay.com req_ssl_sni -i openapi.alipay.comacl is_openapi.alipaydev.com req_ssl_sni -i openapi.alipaydev.comacl is_eco.taobao.com req_ssl_sni -i eco.taobao.comacl is_graph.qq.com req_ssl_sni -i graph.qq.comacl is_api.weibo.com req_ssl_sni -i api.weibo.comacl is_api.weixin.qq.com req_ssl_sni -i api.weixin.qq.comacl is_mapi.alipay.com req_ssl_sni -i mapi.alipay.comacl is_api.jpush.cn req_ssl_sni -i api.jpush.cnuse_backend api.mch.weixin.qq.com if is_api.mch.weixin.qq.comuse_backend openapi.alipay.com if is_openapi.alipay.comuse_backend openapi.alipaydev.com if is_openapi.alipaydev.comuse_backend eco.taobao.com if is_eco.taobao.comuse_backend graph.qq.com if is_graph.qq.comuse_backend api.weibo.com if is_api.weibo.comuse_backend api.weixin.qq.com if is_api.weixin.qq.comuse_backend mapi.alipay.com if is_mapi.alipay.comuse_backend api.jpush.cn if is_api.jpush.cnbackend api.mch.weixin.qq.comserver  web1     api.mch.weixin.qq.com:443backend openapi.alipay.comserver  web1    openapi.alipay.com:443backend openapi.alipaydev.comserver  web1    openapi.alipaydev.com:443backend eco.taobao.comserver  web1    eco.taobao.com:443backend graph.qq.comserver  web1    graph.qq.com:443backend api.weibo.comserver  web1    api.weibo.com:443backend api.weixin.qq.comserver  web1    api.weixin.qq.com:443backend mapi.alipay.comserver  web1    mapi.alipay.com:443backend api.jpush.cnserver  web1    api.jpush.cn:443
#http proxy
frontend http_proxymode httpbind :80acl is_api.map.baidu.com hdr_beg(host) -i api.map.baidu.comacl is_wappaygw.alipay.com hdr_beg(host) -i wappaygw.alipay.comacl is_gw.api.taobao.com hdr_beg(host) -i gw.api.taobao.comuse_backend api.map.baidu.com if is_api.map.baidu.comuse_backend wappaygw.alipay.com if is_wappaygw.alipay.comuse_backend gw.api.taobao.com if is_gw.api.taobao.combackend api.map.baidu.commode httpserver  web1    api.map.baidu.combackend wappaygw.alipay.commode httpserver  web1    wappaygw.alipay.combackend gw.api.taobao.commode httpserver  web1    gw.api.taobao.com

从上面的tcp代理处,我们可以看到通过sni区分不同的域名从而选择后端的服务器。
另在http代理处,我们可以看到也使用host区分域名实现不同的后端转发。

haproxy配置sni实现https多域名代理相关推荐

  1. 1 阿里云Nginx配置https实现域名访问项目

    第一步:签署第三方可信任的 SSL 证书 证书可以直接在阿里云里面申请免费的ssl证书 登录阿里云账号,在上方搜索栏内搜索ssl,点击ssl证书(应用安全) 来到这个页面后点击购买证书 如图选择免费版 ...

  2. windows配置NGINX、NGINX配置SSL证书通过HTTPS访问、使用HTTPS通过NGINX代理访问服务器端项目

    1.windows配置nginx 1)在nginx官网下载稳定版nginx,nginx官网:http://nginx.org/en/download.html 2)解压文件,注:存放目录最好不要带有中 ...

  3. pfx证书密码怎么查询_网站是HTTP?10分钟变成HTTPS!域名免费添加配置SSL证书,变成https//环境...

    对于小程序request请求需要https域名.navigator.geolocation定位也需要在https环境下才可以生效等问题: 前端开发越来越需要https环境来来测试一下API接口和各类问 ...

  4. Confluence7 配置docker Nginx https 反向代理

    前言:首先默认你的Confluence 已经安装好并且设置好证书,此处不做证书导入等介绍. 1.docker 1.拉取仓库nginx镜像,不加版本号默认拉取最新的版本#docker pull ngin ...

  5. 个人购买的域名(需要公网服务器)快速配置免费的HTTPS证书【有手就行】

    文章目录 配置免费的HTTPS证书 0. 开放443端口 1. 进入https://freessl.cn/ 2. 创建证书 3. 配好后,点击验证,生成证书.以及公钥 4. Nginx配置 5. 访问 ...

  6. 搭建HTTPS从域名申请、SSL证书申请、Nginx配置等一步步玩起来。

    HTTPS协议介绍 HTTPS,是以安全为目标的HTTP通道,简单讲是HTTP的安全版.即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL. 配置HTTPS就需要证 ...

  7. haproxy配置TCP代理

    haproxy配置TCP代理 安装: yum -y install haproxy 备份原配置文件: cp -rf /etc/haproxy/haproxy.cfg{,.bak} 删除配置文件中的注释 ...

  8. 网站是HTTP?10分钟变成HTTPS!域名免费添加配置SSL证书,变成https//环境

    对于小程序request请求需要https域名.navigator.geolocation定位也需要在https环境下才可以生效等问题: 前端开发越来越需要https环境来来测试一下API接口和各类问 ...

  9. 单阿里云负载均衡(CLB)实例配置多域名HTTPS网站(HTTPS多域名)

    1.将域名都解析到CLB对应的ip地址,操作如下图所示: 2.在CLB实例管理-监听中配置相应的扩展域名  3.在CLB实例管理-虚拟服务器组中配置相应的转发策略 具体的参考文档见:单CLB实例配置多 ...

  10. NGINX SSL配置之设置HTTPS服务器

    NGINX SSL配置 本节介绍如何在NGINX和NGINX Plus上配置HTTPS服务器. 设置HTTPS服务器 要设置HTTPS服务器,请在您的nginx.conf文件中的块中ssl将该list ...

最新文章

  1. JS_高程6.面向对象的程序设计(2)创建对象_1
  2. IIS 发布网站到外网
  3. 【收藏】GeoMesa Spark
  4. P1314 聪明的质监员(前缀和+二分)
  5. JBI与SCA的区别
  6. 傻孩子的故事--写给为编程而努力的HiccDS
  7. 2015/4/14课堂练习
  8. java 使用接口便于维护程序_Java初学——面向对象接口的应用
  9. Extjs嵌入html
  10. electron 前端开发桌面应用
  11. 零基础学python知乎-35岁了零基础自学Python可行吗?
  12. 苏宁:我们开发百度小程序遇到的那些“坑”
  13. 基于同义词词林的词语间相似度计算
  14. mina框架详解(一)
  15. (原创)Android 清除第三方应用的数据缓存实现(包括清除系统应用缓存)
  16. Mac命令行出现-bash: command not found的解决办法
  17. runtime error python 3.5_Python 3.5 RuntimeError: can't start new thread
  18. kerberos开启kdc的debug日志
  19. python求单词长度_python 统计单词平均长度,统计a出现的次数
  20. 赚钱不能莫良心,苍天有眼都在看 -----至张玮

热门文章

  1. 03一般过去时和主谓双宾
  2. dedecms5.7(织梦)源码解析之程序安装补全篇
  3. 软工中级实训——实训总结报告
  4. Verilog练习:HDLBits笔记4
  5. python绘制象棋棋盘图片_如何用Python画一个中国象棋棋盘?
  6. iPhone13再现粉屏问题,同时出现闪退/卡顿/重启?
  7. Dell r230安装centOS6.5图解
  8. Formula One 常用函数及属性
  9. 金山WPS笔试题总结
  10. 深入解析设置磁盘写保护