Haproxy: backend SSL criptografado com certificado autoassinado

5

Estou trabalhando para configurar o HAProxy, de modo que ele encerre o SSL, para que haja apenas um local para configurar o certificado SSL adquirido. No entanto, eu prefiro que a conexão com os servidores backend também seja criptografada com SSL.

Uma sugestão que encontrei é criar certificados auto-assinados nos servidores de back-end e, em seguida, em cada linha de servidor, definir "verify none". ... Assim, a conexão do navegador para o HAProxy estaria usando o certificado SSL comprado oficialmente, mas a conexão com o HAProxy para os servidores de backend estaria usando certificados autoassinados. O benefício dos certificados auto-assinados é que eles são gratuitos, não exigem atualizações e manutenção (posso definir a expiração no futuro e evitar a necessidade de instalar novos a cada ano). No entanto, compreensivelmente, isso abre os backends para ataques MITM e não é recomendado por algumas fontes que eu já li.

Posso configurar o HAProxy para que eu possa usar certificados autoassinados nos servidores de back-end, mas talvez de alguma forma coloque o certificado autoassinado no servidor HAProxy? ... então o HAProxy para conexão de back-end seria criptografado, não seria vulnerável a ataques MITM e o HAProxy saberia confiar no certificado auto-assinado dos servidores backend.

O que eu estou descrevendo é possível? Eu sou novo para a terminação SSL HAProxy, então qualquer conselho é apreciado.

As partes relevantes da minha configuração são as seguintes:

frontend www-in
    bind *:80
    bind *:443 ssl crt /etc/ssl-keys/my-public-ssl-key.pem no-sslv3

    mode http
    default_backend https-backend
    # force redirect to https
    redirect scheme https if !{ ssl_fc }

backend https-backend
    balance leastconn
    server web1 1.1.1.1:443 check ssl verify none
    server web2 2.2.2.2:443 check ssl verify none

    http-request set-header X-Forwarded-Port %[dst_port]
    http-request add-header X-Forwarded-Proto https if { ssl_fc }
    
por Joe J 12.11.2015 / 20:41

1 resposta

4

A pergunta não está realmente vinculada a HAProxy , mas ao gerenciamento de certificados e autoridades de certificação em geral.

Não tenho certeza de qual SO você está usando, porque você não declarou isso, mas se tiver algum sabor do Linux (embora o seguinte se aplique a Debian e derivados):

  • Verifique se você tem o pacote ca-certificates instalado.

  • Você está criando seus certificados usando sua autoridade de certificação (ca).

  • Pegue o your ca root cert deste ca e coloque dentro de /usr/local/share/ca-certificates/name-of-your-ca/ . (Você pode ter que criar a pasta name-of-your-ca por conta própria). Certifique-se de que your ca root cert tenha uma extensão .crt .

    (Por padrão, /usr/local/share/ca-certificates/ é de propriedade de root:staff , portanto, use sudo ou root para fazer isso.)

  • Execute update-ca-certificates (via sudo / as root ).

  • Após a execução, deve haver um arquivo /etc/ssl/cert/your-ca-root.pem symlinked to /usr/local/share/ca-certificates/name-of-your-ca/your-ca-root.crt .

  • Ative a confirmação em HAProxy e lucro.

por 13.11.2015 / 00:19