Descarregamento de SSL para vários domínios (vários certificados) no Haproxy

2

Digamos que temos haproxy na frente de 2 apache:

                     +----> Apache (10.0.0.2)
Haproxy (10.0.0.1) --|
                     +----> Apache (10.0.0.3)
  • O Haproxy é configurado para balancear a carga do tráfego com base no URI (precisa ver o URI, por isso, precisa ver o conteúdo do HTTP)
  • O Apache está hospedando uma grande quantidade de domínios
  • Todo domínio é acessível em HTTPS por meio do haproxy que descarrega o SSL e inicia a conexão HTTP com o Apache
  • Todo domínio tem seu próprio certificado SSL (sem certificado SAN ou curinga)

Vi que o Haproxy nos permite fornecer um diretório com muitos certificados, mas não consegui fazer com que funcionasse com outro único certificado.

Aqui está minha configuração (simplificada):

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
    
por gr0bz 10.03.2017 / 17:59

1 resposta

2

Você poderia usar o crt-list e apontar para um arquivo contendo a lista de certificados, para que seu frontend fosse lido como

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

E para gerar a lista apenas com algo como find /etc/ssl/private/mycerts/ > /etc/ssl/private/mycerts.txt . Veja mais informações em link

    
por 10.03.2017 / 20:00