Com configurar un certificat CA SSL a HAProxy


HAProxy és un servidor intermediari invers molt utilitzat, fiable i d'alt rendiment, que ofereix capacitats d'alta disponibilitat i equilibri de càrrega per a aplicacions TCP i HTTP. De manera predeterminada, es compila amb OpenSSL, de manera que admet la terminació SSL, permetent que la vostra pila de llocs web/aplicacions xifra i desxifra el trànsit entre el vostre \servidor d'entrada web o el servidor de passarel·la d'accés a l'aplicació i les aplicacions client.

Aquesta guia mostra com configurar un certificat CA SSL a HAPorxy. Aquesta guia suposa que ja heu rebut el vostre certificat de la CA i que esteu preparat per instal·lar-lo i configurar-lo en un servidor HAProxy.

Els fitxers esperats són:

  • El certificat en si.
  • Els certificats intermedis també anomenats paquets o cadenes, i.
  • La CA arrel, si està disponible, i.
  • La clau privada.

Creeu un fitxer de certificat SSL amb format PEM

Abans de configurar el vostre certificat CA a HAProxy, heu d'entendre que HAProxy requereix un únic fitxer .pem que hauria de contenir el contingut de tots els fitxers anteriors, concatenats en l'ordre següent:

  • La clau privada que acaba amb .key (pot venir a l'inici o al final del fitxer).
  • Seguit del certificat SSL (normalment acaba amb .crt).
  • A continuació, el CA-Bundle (normalment acaba amb .ca-bundle) i
  • La CA arrel, si està disponible.

Per crear el fitxer .pem, aneu al directori que conté els fitxers de certificats, per exemple ~/Downloads, i executeu l'ordre cat com aquesta (substituïu els noms dels fitxers en conseqüència):

$ cat example.com.key STAR_example_com/STAR_example_com.crt STAR_example_com/STAR_example_com.ca-bundle > example.com.pem

Configura el certificat SSL PEM a HAProxy

A continuació, carregueu el fitxer de certificat .pem acabat de crear al servidor HAProxy mitjançant l'ordre scp tal com es mostra (substituïu sysadmin i 192.168.10.24 pel nom d'usuari i l'adreça IP del servidor remot respectivament):

$ scp example.com.pem  s[email :/home/sysadmin/

A continuació, creeu un directori on s'emmagatzemarà el fitxer del certificat .pem mitjançant l'ordre mkdir i copieu-hi el fitxer:

$ sudo mkdir -p /etc/ssl/example.com/
$ sudo cp example.com.pem /etc/ssl/example.com/

A continuació, obriu el vostre fitxer de configuració HAProxy i configureu el certificat a la secció de l'escolta del frontend, utilitzant els paràmetres ssl i crt: el primer permet la terminació SSL i el segon especifica la ubicació del fitxer del certificat.

frontend http_frontend
      mode http
      bind *:80
      bind *:443 ssl crt  /etc/ssl/example.com/example.com.pem alpn h2,http/1.1
     redirect scheme https code 301 if !{ ssl_fc }
      default_backend http_servers

Algunes versions de SSL/TLS no es recomana utilitzar-les ara a causa de les vulnerabilitats que s'hi han descobert. Per limitar la versió admesa de SSL, podeu afegir el paràmetre ssl-min-ver d'aquesta manera:

bind *:443 ssl crt  /etc/ssl/example.com/example.com.pem alpn h2,http/1.1   ssl-min-ver TLSv1.2

Configureu HAProxy per redirigir HTTP a HTTPS

Per assegurar-vos que el vostre lloc web només sigui accessible mitjançant HTTPS, heu d'habilitar HAProxy per redirigir tot el trànsit HTTP a HTTPS en cas que un usuari intenti accedir-hi per HTTP (port 80).

Afegiu la línia següent a la configuració anterior:

redirect scheme https code 301 if !{ ssl_fc }
OR
http-request redirect scheme https unless { ssl_fc }

La vostra secció d'interfície ara hauria de semblar a la d'aquesta configuració de mostra:

frontend http_frontend
      mode http
      bind *:80
      bind *:443 ssl crt  /etc/ssl/example.com/example.com.pem alpn h2,http/1.1  ssl-min-ver TLSv1.2
      redirect scheme https code 301 if !{ ssl_fc }
      default_backend   http_servers

backend http_servers
      mode http
      balance roundrobin
      option httpchk HEAD /
      http-response set-header X-Frame-Options SAMEORIGIN
      http-response set-header X-XSS-Protection 1;mode=block
      http-response set-header X-Content-Type-Options nosniff
      default-server check maxconn 5000
      server http_server1 10.2.1.55:80

Deseu el fitxer de configuració i tanqueu-lo.

A continuació, comproveu si la seva sintaxi és correcta amb l'ordre següent:

$ sudo haproxy -f /etc/haproxy/haproxy.cfg -c

Si el fitxer de configuració és vàlid, seguiu endavant i torneu a carregar el servei haproxy per recollir els canvis recents a la configuració, utilitzant l'ordre systemctl:

$ sudo systemctl reload haproxy

Finalment, però no menys important, proveu tota la configuració accedint al vostre lloc web des d'un navegador web i assegureu-vos que el certificat s'està carregant bé i que el navegador indica que la \Connexió és segura!

Això és tot! Esperem que aquesta guia us hagi ajudat a configurar un certificat SSL al programari d'equilibri de càrrega HAProxy. Si trobeu algun error, feu-nos-ho saber mitjançant el formulari de comentaris que trobareu a continuació. Estarem encantats d'ajudar-vos.