SSL在Haproxy上卸载多个域(多个证书)

假设我们在2 apache前面有haproxy

+----> Apache (10.0.0.2) Haproxy (10.0.0.1) --| +----> Apache (10.0.0.3) 
  • Haproxy被configuration为负载平衡基于URI的stream量(需要看到URI,所以必须看到HTTP的内容)
  • Apache正在托pipe大量的域名
  • 每个域都可以通过haproxy通过HTTPS访问,卸载SSL并启动到Apache的HTTP连接
  • 每个域都有自己的SSL证书(无SAN或通配证书)

我看到Haproxy允许我们提供一个包含许多证书的目录,但是我没有设法使用另一个单一的证书。

这是我的(简化)configuration:

 global [...] # Default SSL material locations ca-base /etc/ssl/certs crt-base /etc/ssl/private # Default ciphers to use on SSL-enabled listening sockets. ssl-default-bind-options no-sslv3 ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS # For backends connections ssl-default-server-options no-sslv3 ssl-default-server-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS frontend https_frontend bind 10.0.0.1:443 ssl crt /etc/ssl/private/mycerts/mydomain.pem # HERE WE WANT A DIRECTORY INSTEAD OF A FILE default_backend apache_backend backend apache_backend cookie SRVID insert indirect nocache # Backends server apache1 10.0.0.2:80 check maxconn 64 server apache2 10.0.0.3:80 check maxconn 64 # Load Balancing - URI Consistent balance uri hash-type consistent # Options option http-keep-alive 

您可以使用crt-list并指向一个包含证书列表的文件,所以您的前端将读为

 frontend https_frontend bind 10.0.0.1:443 ssl crt-list /etc/ssl/private/mycerts.txt default_backend apache_backend 

并用find /etc/ssl/private/mycerts/ > /etc/ssl/private/mycerts.txt来生成列表。 请参阅https://cbonte.github.io/haproxy-dconv/configuration-1.6.html#5.1-crt-list