Haproxy

在 Haproxy 中配置多個 SSL 證書

  • October 30, 2018

我的 haproxy 實例服務於 2 個域(主要是為了避免主站點上的 XSS)。

規則看起來像這樣

bind :443 ssl crt /etc/ssl/haproxy.pem

acl is_static   hdr_end(Host) -i example.com
acl is_api      hdr_end(Host) -i api.example.com
acl is_files    hdr_end(Host) -i example.io

redirect scheme https if !{ ssl_fc } is_static is_api

現在 SSL/etc/ssl/haproxy.pem用作預設證書,它是用於example.com而不是example.io.

如何為多個域名指定證書?

您可以將所有證書連接到文件中haproxy1.pemhaproxy2.pem或者您可以指定一個包含所有 pem 文件的目錄。

cat cert1.pem key1.pem > haproxy1.pem 
cat cert2.pem key2.pem > haproxy2.pem

根據haproxy 文件

然後在配置上使用這樣的東西:

defaults
 log 127.0.0.1 local0
 option tcplog

frontend ft_test
 mode http
 bind 0.0.0.0:443 ssl crt /certs/haproxy1.pem crt /certs/haproxy2.pem 
 use_backend bk_cert1 if { ssl_fc_sni my.example.com } # content switching based on SNI
 use_backend bk_cert2 if { ssl_fc_sni my.example.org } # content switching based on SNI

backend bk_cert1
 mode http
 server srv1 <ip-address2>:80

backend bk_cert2
 mode http
 server srv2 <ip-address3>:80

閱讀更多關於SNI

請記住,SSL 支持正在為 haproxy 開發階段,而且它顯然對性能有相當大的影響。

此執行緒中還討論了其他解決方案:https ://stackoverflow.com/questions/10684484/haproxy-with-multiple-https-sites

希望這可以幫助。

引用自:https://serverfault.com/questions/560978