设为首页 收藏本站
查看: 1116|回复: 0

[经验分享] Haproxy实现多域名证书HTTPS

[复制链接]

尚未签到

发表于 2019-1-1 10:57:07 | 显示全部楼层 |阅读模式
  前面讲到,使用Nginx实现多域名证书HTTPS(http://fengwan.blog.运维网.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这步  第三步:生成证书
[root@gz122haproxy95 ~]# mkdir ~/keys
[root@gz122haproxy95 keys]# cd ~/keys
[root@gz122haproxy95 keys]# openssl genrsa -out passport.abc.com.key 2048
[root@gz122haproxy95 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 []:passport@abc.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
[root@gz122haproxy95 keys]# openssl x509 -req -days 3650 -in passport.abc.com.csr -signkey passport.abc.com.key -out passport.abc.com.crt
[root@gz122haproxy95 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 ssl_site hdr_reg(host) -i ^(
        acl ssl_path path_beg -i /Login /Pay/Pay.aspx
        redirect scheme https code 301 if !{ ssl_fc }  ssl_site ssl_path
        redirect scheme http code 301 if { ssl_fc }  ssl_site !ssl_path
        #只在/loign /Pay/Pay.aspx页面进行跳转,其他页面使用http
        acl wwwtest_com hdr_reg(host) -i ^(www.test.com)$
        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,依次访问上面的访问会发现,相关的证书与之配对。
  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-658198-1-1.html 上篇帖子: HAProxy 之 算法介绍 下篇帖子: HAProxy安装使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表