HAPROXY实现HTTPS代理HTTP


背景

我们公司用了金蝶的云星空,这个系统的实施团队给我们内网弄了一堆HTTP的80端口,并且系统要把HTTP映射到公网,HTTP太不安全,所以准备对外部访问改成HTTPS,这里面就有两种方案:
A.金蝶全套系统都统一改HTTPS,包括业务系统对内对外的各种接口地址都需要配置HTTPS。
B.仅更改对用户的访问地址为HTTPS,业务系统对内的接口地址等仍然使用HTTP。

因为是内网,又涉及到SSL证书内网不信任的问题,考虑服务器互相调用接口又需要重新写,金蝶的团队也不愿意干,领导意愿又不高,这里采用第二种方式。


一、实现的架构

普通用户——访问HTTPS地址——HAPROXY将HTTPS转成HTTP——金蝶前端服务器


二、操作步骤

1.HAPROXY配置

首先需要有一个SSL证书,可以购买也可以自己生成,为外网用的最好还是购买一个。
将SSL证书存储到HAPROXY的某个目录下

cd /data
[root@kcm2hatest data]# ll
总用量 24
-rw-r--r-- 1 root root 6565 81 13:39 cert.pem
-rw-r--r-- 1 root root 1675 81 13:39 key.key

将key与pem文件合并

[root@kcm2hatest data]# cat cert.pem key.key | tee newsslcert.pem
[root@kcm2hatest data]# ll
总用量 24
-rw-r--r-- 1 root root 6565 81 13:39 cert.pem
-rw-r--r-- 1 root root 1675 81 13:39 key.key
-rw-r--r-- 1 root root 8241 81 14:01 newsslcer.pem

添加HAPROXY配置

#---------------------------------------------------------------------------------------------------------------
#       对外https的10000端口,对内http的10000
#--------------------------------------------------------------------------------------------------------------
listen k3-ssl  
    bind *:10000 ssl crt /data/newsslcer.pem  #绑定SSL证书
    mode http  
    log global  
    option httplog  
    option dontlognull  
    option forwardfor except 127.0.0.0/8  
    maxconn 8000  
    timeout client 30s  
    timeout server 30s  
  
    balance roundrobin  
    hash-type consistent  
    stick-table type ip size 10240k expire 24h  
    stick on src  

    http-request set-header X-Forwarded-Port %[dst_port]
    http-request set-header X-Forwarded-Proto http if !{ ssl_fc }
    http-request set-header X-Forwarded-Proto https if { ssl_fc }
    http-request set-header X-Forwarded-For %[hdr(X-Forwarded-For)],\ %[src] if { hdr_cnt(X-Forwarded-For) gt 0 }
    http-request set-header X-Forwarded-For %[src] if { hdr_cnt(X-Forwarded-For) eq 0 }
    server app1 192.168.1.4:10000 check weight 50 check inter 2s rise 3 fall 5   #两个服务器的地址
    server app2 192.168.1.5:10000 check weight 50 check inter 2s rise 3 fall 5   #两个服务器的地址

重启HAPROXY

systemctl restart haproxy

2.金蝶云星空配置

IIS中绑定HTTP端口,新增一个10000端口
更改星空配置文件

  <appSettings> 后面加这一条
    <add key="ForwardLoginUrl" value="{X-Forwarded-Proto}://{Forward-x-RequestHost}:{X-Forwarded-Port}" />

重启IIS

结果

用户访问HTTPS地址可以正常的访问云星空各项业务,实现了一定的安全性。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值