Ricerca nel sito web

Come configurare un certificato SSL CA in HAProxy


HAProxy è un proxy inverso ampiamente utilizzato, affidabile e ad alte prestazioni, che offre funzionalità di alta disponibilità e bilanciamento del carico per applicazioni TCP e HTTP. Per impostazione predefinita, è compilato con OpenSSL, supportando così la terminazione SSL, consentendo al tuo sito web/stack di applicazioni di crittografare e decrittografare il traffico tra il tuo "web entry server" o il gateway di accesso dell'applicazione applicazioni server e client.

Questa guida mostra come configurare un certificato CA SSL in HAPorxy. Questa guida presuppone che tu abbia già ricevuto il certificato dalla CA e che tu sia pronto per installarlo e configurarlo su un server HAProxy.

I file attesi sono:

  • Il certificato stesso.
  • I certificati intermedi detti anche fasci o catene, e.
  • La CA radice, se disponibile, e.
  • La chiave privata.

Crea un file di certificato SSL in formato PEM

Prima di configurare il certificato CA in HAProxy, devi comprendere che HAProxy richiede un singolo file .pem che dovrebbe contenere il contenuto di tutti i file sopra indicati, concatenati nel seguente ordine:

  • La chiave privata che termina con .key (può trovarsi all'inizio o alla fine del file).
  • Seguito dal certificato SSL (di solito termina con .crt).
  • Quindi il pacchetto CA (di solito termina con .ca-bundle) e
  • La CA radice, se disponibile.

Per creare il file .pem, spostati nella directory che contiene i file del certificato, ad esempio ~/Downloads, quindi esegui il comando cat in questo modo (sostituisci i nomi dei file di conseguenza):

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

Configura il certificato SSL PEM in HAProxy

Successivamente, carica il file del certificato .pem appena creato sul server HAProxy utilizzando il comando scp come mostrato (sostituisci sysadmin e 192.168. 10.24 rispettivamente con il nome utente e l'indirizzo IP del server remoto):

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

Quindi crea una directory in cui verrà archiviato il file .pem del certificato utilizzando il comando mkdir e copia il file al suo interno:

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

Successivamente, apri il file di configurazione HAProxy e configura il certificato nella sezione del listener del frontend, utilizzando i parametri ssl e crt: il primo abilita la terminazione SSL e il secondo specifica la posizione del file del certificato.

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

Al momento non è consigliabile utilizzare alcune versioni di SSL/TLS a causa delle vulnerabilità scoperte in esse. Per limitare la versione supportata di SSL, puoi aggiungere il parametro ssl-min-ver in questo modo:

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

Configura HAProxy per reindirizzare HTTP a HTTPS

Per garantire che il tuo sito web sia accessibile solo tramite HTTPS, devi abilitare HAProxy per reindirizzare tutto il traffico HTTP a HTTPS nel caso in cui un utente tenti di farlo accedervi tramite HTTP (porta 80).

Aggiungi la seguente riga alla configurazione precedente:

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

La sezione del tuo frontend ora dovrebbe assomigliare a quella in questa configurazione di esempio:

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

Salvare il file di configurazione e chiuderlo.

Quindi controlla se la sua sintassi è corretta utilizzando il seguente comando:

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

Se il file di configurazione è valido, vai avanti e ricarica il servizio haproxy per raccogliere le modifiche recenti nella configurazione, utilizzando il comando systemctl:

sudo systemctl reload haproxy

Ultimo ma non meno importante, prova l'intera configurazione accedendo al tuo sito web da un browser web e assicurati che il certificato venga caricato correttamente e che il browser indichi che "La connessione è sicura"!

È tutto! Ci auguriamo che questa guida ti abbia aiutato a configurare un certificato SSL nel software di bilanciamento del carico HAProxy. Se riscontri errori, faccelo sapere tramite il modulo di feedback qui sotto. Saremo felici di aiutarla.