Haproxy实现多域名证书HTTPS

前面讲到,使用Nginx实现多域名证书HTTPS(http://fengwan.blog.51cto.com/508652/1719708),通过重新编译Nginx实现TLS SNI Support打开,那么使用Haproxy如何实现呢?

要求:

Haproxy必须要1.5以上的版本

第一步:openssl的安装

tar zxf openssl-0.9.8zh.tar.gz
cd openssl-0.9.8zh
./config enable-tlsext --prefix=/usr/local/openssl  no-shared
make && make install_sw
#以上安装不影响系统中的openssl版本,主要就是打开openssl的TLS SNI功能

第二步:Haproxy的安装

tar zxf haproxy-1.5.15.tar.gz
cd haproxy-1.5.15
make TARGET=linux26 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 ARCH=x86_64 PREFIX=/usr/local/haproxy1.5.15 SSL_INC=/usr/local/openssl/include SSL_LIB=/usr/local/openssl/lib ADDLIB=-ldl
make TARGET=linux26 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 ARCH=x86_64 PREFIX=/usr/local/haproxy1.5.15 SSL_INC=/usr/local/openssl/include SSL_LIB=/usr/local/openssl/lib ADDLIB=-ldl install
#记得上面要指定openssl的地址,haproxy没有config这步

第三步:生成证书

[[email protected] ~]# mkdir ~/keys
[[email protected] keys]# cd ~/keys
[[email protected] keys]# openssl genrsa -out passport.abc.com.key 2048
[[email protected] keys]# openssl req -new -key passport.abc.com.key -out passport.abc.com.csr
 
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.‘, the field will be left blank.
-----
Country Name (2 letter code) [GB]:CN   #国家
State or Province Name (full name) [Berkshire]:GuangDong  #省份
Locality Name (eg, city) [Newbury]:ShenZhen   #城市
Organization Name (eg, company) [My Company Ltd]:Test.Inc    #公司名称
Organizational Unit Name (eg, section) []:passport.abc.com    #组织名称
Common Name (eg, your name or your server‘s hostname) []:passport.abc.com   #域名
Email Address []:[email protected]
Please enter the following ‘extra‘ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
[[email protected] keys]# openssl x509 -req -days 3650 -in passport.abc.com.csr -signkey passport.abc.com.key -out passport.abc.com.crt
[[email protected] keys]# cat passport.abc.com.crt passport.abc.com.key |tee passport.abc.com.pem

按照以上方法依次生成www.test.com admin.abc.com的证书文件,每个站点最后会有一个pem文件生成

配置Haproxy的配置文件:

frontend http_server
        bind :80
        bind :443 ssl crt /etc/haproxy/keys/www.test.com.pem crt /etc/haproxy/keys/admin.test.com.pem crt /etc/haproxy/keys/passport.abc.com.pem
        #按照如上规则如果多个站点就可以使用同样的规则 bind :443 ssl crt $filepath crt $file2path crt $file3path
        
        mode http
        
        acl ssl  hdr_reg(host) -i ^(www.test.com|admin.test.com|passport.abc.com)$
        redirect scheme https code 301 if !{ ssl_fc }  ssl
        #对以上站点进行https跳转
        
        acl wwwtest_com hdr_reg(host) -i $(
        use_backend www_test_com if wwwtest_com { ssl_fc_sni www.test.com }
        #这里就是证书的对应部分,如
        acl admintest_com hdr_dom(host) -i admin.test.com
        use_backend admin_test_com if admintest_com { ssl_fc_sni admin.test.com } 
        acl passportabc_com hdr_dom(host) -i passport.abc.com
        use_backend pasport_abc_com if passport_abc_com { ssl_fc_sni passport.abc.com }
        
        
        backend www_test_com
            server test2 192.168.10.2:80 check port 80 inter 5000 rise 2 fall 3 weight 1
        backend admin_test_com
            server test4 192.168.10.4:80 check port 80 inter 5000 rise 2 fall 3 weight 1
        backend passport_abc_com
            server test5 192.168.10.5:80 check port 80 inter 5000 rise 2 fall 3 weight 1

按照以上配置就可以实现多证书的HTTPS,依次访问上面的访问会发现,相关的证书与之配对。

时间: 2024-11-03 05:42:56

Haproxy实现多域名证书HTTPS的相关文章

haproxy 实现多域名证书https

[[email protected] keys]# openssl genrsa -out www.app01.com.key 2048 Generating RSA private key, 2048 bit long modulus ....+++ .....................................+++ e is 65537 (0x10001) [[email protected] keys]# openssl req -new -key www.app01.com

Haproxy 实现部分域名使用https,其他域名正常使用http的配置方法

要求: 1.Haproxy必须是需要1.5以上的版本才会支持ssl证书2.要使用ssl模块,必须要安装openssl软件,版本要注意符合要求 openssl的安装 tar zxf openssl-0.9.8zh.tar.gz cd openssl-0.9.8zh ./config enable-tlsext --prefix=/usr/local/openssl no-shared make && make install_sw #以上安装不影响系统中的openssl版本,主要就是打开op

[从零开始搭网站六]为域名申请免费SSL证书(https),并为Tomcat配置https域名所用的多SSL证书

点击下面连接查看从零开始搭网站全系列 从零开始搭网站 由于国内的网络环境比较恶劣,运营商流量劫持的情况比较严重,一般表现为别人打开你的网站的时候会弹一些莫名其妙的广告...更过分的会跳转至别的网站. 那么为了解决这种情况,那么我们就要申请SSL证书,并且配置服务器. 并且,我准备再学习并写一个微信小程序,而微信小程序所有接口都需要走https,那么全线https就势在必行. 目前免费https其实有很多家,我之前出过一个教程是 用Let's Encrypt实现Https(Windows环境+To

Nginx实现ssl一级、二级域名证书部署并用https访问代理转发服务器

1.  规划 域名 解析IP Nginx代理 htpps://www.devcult.com 47.88.10.155   htpps://auto.devcult.com 47.88.10.155 https://www.automa.com htpps://www.automa.com 103.200.200.203   本次实验用了2个一级域名,1个二级域名,2个ip地址:实现功能如上图所示,要求全部使用https,并且一级域名实现自动补全www. 2. 前提准备 47.88.10.155

同个二级域名使用https证书问题

跳转:http://wangzhirui.com/2019/08/21/同个二级域名使用https证书问题/ 原文地址:https://www.cnblogs.com/ruigu/p/11664831.html

在HAProxy中使用SSL证书进行连接

一.环境介绍 接到通知,要求网站由http改为使用https,目前我的网站前端架构如下图所示: 假设我们有两台物理机,每台物理机上面有很多的tomcat容器,前端使用的是haproxy进行的http层负载均衡,再前端我们使用了LVS负载均衡,整个LVS使用的是DR模型. 刚开始我打算把tomcat改成https,设置成之后再设置haproxy的时候,发现haproxy不能再使用负载均衡了,因为SSL是在第四层的,所以这个方案就结束了,下面我就尝试在haproxy层设定SSL,到后端还使用普通的连

Nginx多个域名,https redirect to http

背景描述:Nginx绑定多个域名,其中一个域名配置了https,如域名A:https://www.aaa.com:另外的域名B(http://www.bbb.com)没有配置SSL证书, 问题:以https方式访问B域名https://www.bbb.com的时候,默认跳转到A域名:https://www.aaa.com 解决方式1:在B网站的配置文件中配置443端口的监听,结果会跳转的nginx的欢迎页面: server { listen *:443 ssl; server_name www.

Exchange Server2013 规划和配置SSL多域名证书

SSL证书是微软很多产品中必不可少的,公司可以通过内部部署证书服务器或是通过公网证书提供商购买证书.两者的区别如下: 内部部署CA:不能保证365*24提供服务,客户端默认不信任内部CA. 公网购买证书:保证365*24提供服务,客户端默认信任此证书颁发机构. 1. 搭建内部证书服务器 此步骤对大家来说相对比较简单的,搭建好内部证书服务器后,注意记得把吊销列表发布出去即可.在此就不多说明了. 2.   证书的域名规划 如果从公网购买的证书,一定要遵从最少域名的原则,毕竟每个域名都是要花钱的.若是

利用openssl签署多域名证书

openssl自建CA默认签署的是单域名证书,因为单台服务器上有多个https域名,签署多域名证书能方便很多,今天找了很久,除了一些卖证书的网站上有scr工具能加"使用者备用名称",都没有找到openssl相关的添加方法. 后来看openssl.cnf找到一个方法,这里记录一下: !!这个方法比较笨重,如果有其他方法,欢迎留言给我,感激不尽. 主要修改在openssl.cnf 将文件中原来的 commonName                    = Common Name (eg