Haproxy 配置多域名SSL证书
Haproxy 服务启动 SSL
如果没有启用SSL,参考: 《编译 Haproxy 支持 SSL》
[root@GZ-P-L-HA-11 ~]# haproxy -vv | grep OpenSSL
Built with OpenSSL version : OpenSSL 1.1.1a 20 Nov 2018
Running on OpenSSL version : OpenSSL 1.1.1a 20 Nov 2018
OpenSSL library supports TLS extensions : yes
OpenSSL library supports SNI : yes
OpenSSL library supports : TLSv1.0 TLSv1.1 TLSv1.2 TLSv1.3
SSL证书合并
像Nginx配置ssl有两个证书文件,一个ssl_certificate公钥 与 ssl_certificate_key私钥。
Haproxy配置ssl需要将这两个证书文件合并到一个文件。
cat api.linuxhub.cn_bundle.crt api.linuxhub.cn.key | tee api.linuxhub.cn.pem
Haproxy配置
配置很简单
bind *:443 ssl crt /etc/haproxy/ssl/api.linuxhub.cn.pem
多个域名
bind *:443 ssl crt /etc/haproxy/ssl/api.linuxhub.cn.pem crt /etc/haproxy/ssl/www.linuxhub.cn.pem
样例
############## web 网站 #################
frontend web_in
bind *:80
######## https 域名证书配置 #############
bind *:443 ssl crt /etc/haproxy/ssl/api.linuxhub.cn.pem crt /etc/haproxy/ssl/www.linuxhub.cn.pem
######## acl策略配置 #############
acl ZEZE_WWW hdr_beg(host) www.linuxhub.cn
acl ZEZE_API hdr_beg(host) api.linuxhub.cn
######### acl策略匹配相应 #############
use_backend zeze_api if ZEZE_API
use_backend zeze_www if ZEZE_WWW
default_backend zeze_api
backend zeze_api
mode http
option forwardfor
balance roundrobin
timeout server 60s
option httpchk HEAD /stat
server GZ-P-L-JAVA-11 192.168.10.11:8081 check
server GZ-P-L-JAVA-12 192.168.10.12:8081 check
backend zeze_www
mode http
option forwardfor
balance roundrobin
timeout server 60s
option httpchk HEAD /stat
server GZ-P-L-JAVA-11 192.168.10.11:8082 check
server GZ-P-L-JAVA-12 192.168.10.12:8082 check
其它
另外HAProxy SNI 也可以实现haproxy ssl 的代理。
大概工作流程:当HAProxy通过HTTPS流量时,它简单地将原始TCP流发送到具有证书并处理加密和解密的后端。