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.