GNU/Linux >> Znalost Linux >  >> Linux

Nainstalujte Let’s Encrypt SSL na HAProxy

Přehled

Projdeme si kroky, jak nainstalovat Let's Encrypt SSL na HAProxy. Kromě instalace a konfigurace haproxy pomocí Let’s encrypt certbot a získání ssl se také podíváme na to, jak automaticky obnovit certifikát. Písemné instrukce jsou prováděny na serverech GNU/Linux (v tomto případě Debian).

Předpoklady:

  • HAProxy nainstalováno
  • Cerbot nainstalován

Poznámka: HAProxy a Certbot jsou v tomto příkladu nainstalovány na stejném serveru.

Nainstalujte Let's Encrypt SSL na HAProxy

Konfigurace HAProxy SSL

HAProxy je třeba nakonfigurovat, aby bylo možné získat certifikát SSL, což znamená procházet požadavky Certbot a vynucovat protokol HTTPS.

Jeden příklad konfigurace vypadá asi takto:

frontend haproxy
    #public IP address binded
    bind 123.123.123.123:80
    bind 123.123.123.123:443 ssl crt /etc/ssl/example.com.pem

    # HTTPS redirect
    redirect scheme https code 301 if !{ ssl_fc }

    mode http
    default_backend test_site

    acl letsencrypt-acl path_beg /.well-known/acme-challenge/
    use_backend letsencrypt-backend if letsencrypt-acl

backend test_site
    mode http
    server test_site1 10.0.51.11:80 check inter 5s rise 3 fall 2
    server test_site2 10.0.51.12:80 check backup inter 5s rise 3 fall 2

backend letsencrypt-backend
    server letsencrypt 123.123.123.123:80

A my projdeme konfiguraci a vysvětlíme ji.

Nejprve jsme definovali haproxy frontend:

frontend haproxy 
#public IP address binded 
bind 123.123.123.123:80
bind 123.123.123.123:443 ssl crt /etc/ssl/example.com.pem

Pro tento příklad jsme na frontendu svázali veřejnou IP adresu a porty 80 a 443 pro HTTP a HTTPS. Soukromá IP adresa může být také svázána. Také jsme definovali

na vazbě portu 443, kde je certifikát ssl umístěn na našem serveru HAProxy a název souboru certifikátu ssl.

# HTTPS redirect
redirect scheme https code 301 if !{ ssl_fc }

Tento příkaz neustále vynucuje přesměrování https.

mode http 
default_backend test_site 
acl letsencrypt-acl path_beg /.well-known/acme-challenge/ 
use_backend letsencrypt-backend if letsencrypt-acl

Zde jsme definovali název pro naše backend servery a instruovali Haproxy, aby použila backend server Let’s encrypt, který je také definován, pokud zjistí výzvu acme z Let’s encrypt pro název domény.

backend test_site
mode http
server test_site1 10.0.51.11:80 check inter 5s rise 3 fall 2
server test_site2 10.0.51.12:80 check backup inter 5s rise 3 fall 2

backend letsencrypt-backend
server letsencrypt 123.123.123.123:80
.

Pro backendovou stranu jsme jako příklad definovali dva servery, které budou fungovat jako webové servery pro náš testovací web, na kterém může Haproxy sledovat a vyvažovat zatížení.

Také je definován backend server Let’s encrypt, což je stejný server, na který jsme nainstalovali Haproxy.

Získání certifikátu SSL

Chcete-li získat certifikát ssl z Let’s encrypt, když je Haproxy aktivní, spusťte jeden z těchto dvou příkazů na serveru, kde jsou nainstalovány Haproxy a Certbot:

sudo certbot certonly --standalone --preferred-challenges http --http-01-address 123.123.123.123 --http-01-port 80 -d example.com --non-interactive --agree-tos --email [email protected]

sudo certbot certonly --standalone --preferred-challenges http --http-01-port 80 -d example.com --non-interactive --agree-tos --email [email protected]

V podstatě oba příkazy dělají totéž a můžete vyzkoušet kterýkoli z nich, jen jsme do prvního příkazu přidali argument s veřejnou IP adresou, pokud by v některém případě druhý příkaz nefungoval. Takže v příkazech, které jsme deklarovali, jakou výzvu použít, který port naslouchat, jsme specifikovali název domény, pro který certbot požaduje ssl, souhlasili s TOS a poskytli e-mailovou adresu.

Když spustíte jeden z těchto příkazů, stačí nahradit example.com svou doménou, pro kterou chcete certifikát ssl, nahradit 123. ip adresu IP z vašeho serveru a poskytnout legitimní e-mail, abyste mohli dostávat oznámení z let's encrypt .

Přestože jsme získali ssl certifikát a je platný, Haproxy jej nemůže použít. Aby Haproxy mohl používat ssl certifikát z Let’s encrypt, musí být ssl certifikát uložen v jednom souboru. Haproxy vyžaduje, aby byl ssl certifikát v jednom souboru.

Certifikát od Let’s encrypt je dodáván ve třech samostatných souborech – fullchain, soukromý klíč a soubor certifikátu. Aby Haproxy používal ssl a https, stačí mít celý řetězec a soukromý klíč v jediném souboru. Můžeme vytvořit jeden soubor ssl certifikátu a později nakonfigurovat Haproxy, aby jej používal. Můžeme zkopírovat obsah ze souborů certifikátů a zkopírovat je do jediného souboru .pem, který bude naším ssl certifikátem pro Haproxy.

Abychom toho dosáhli, můžeme to udělat příkazem jako je tento:

sudo cat "/etc/letsencrypt/live/example.com/fullchain.pem" "/etc/letsencrypt/live/example.com/privkey.pem" > "/etc/ssl/example.com.pem"

Soubory Let’s encrypt cert se nacházejí v adresáři let’s encrypt. Každý certifikát ssl je uspořádán v adresáři pojmenovaném jako název domény. Tento příkaz převezme obsah certifikátů a umístí je do jednoho souboru. Pak můžeme říct a nakonfigurovat Haproxy, aby používala tento soubor, jako v konfiguraci shora. Samozřejmě nahraďte example.com svým názvem domény a přidejte do konfigurace Haproxy umístění souboru ssl certifikátu, který jste právě vytvořili, jako v konfiguraci na začátku příspěvku.

Poté a jakmile do konfiguračního souboru Haproxy přidáte umístění certifikátu SSL, který chcete použít, restartujte službu Haproxy:

sudo systemctl restart haproxy.service

Automatické obnovení certifikátu SSL HAProxy

Jedna věc, kterou je třeba vzít v úvahu při použití tohoto typu nastavení pro Haproxy pro použití certifikátu SSL, je, že pomocí této metody jsme vytvořili vlastní soubor pro použití certifikátu a pomocí této metody nebude certifikát SSL po vypršení platnosti obnoven. No, certbot obnoví certifikát z Let’s encrypt, ale pak Haproxy nebude moci nový certifikát použít.

Stále však můžeme vytvořit nastavení s certbotem a Haproxy, abychom také obnovili ssl ceftificate pro Haproxy. Za tímto účelem budeme muset vytvořit bash skript a nakonfigurovat cerbot, aby jej používal, a spustit jej s post-hook poté, co certbot obnoví certifikát z Let’s Encrypt. Let’s Encrypt certbot má ve výchozím nastavení povoleno automatické obnovení a nakonfiguroval úlohu cron, kdy se má obnovení spustit. Ve výchozím nastavení trvá Let’s Encrypt ssl 3 měsíce a cerbot certifikát před vypršením platnosti obnoví. Naše nastavení pro obnovení ssl pro Haproxy je tedy takové, že když certbot obnoví certifikát ssl, spustí náš post-hook bash skript, který jsme vytvořili a umístili ho do adresáře post-hook, aby Haproxy mohl používat nový ssl certifikát.

Bash skript by vypadal nějak takto:

#!/bin/bash

sudo cat "/etc/letsencrypt/live/example.com/fullchain.pem" "/etc/letsencrypt/live/example.com/privkey.pem" > "/etc/ssl/example.com.pem"
sudo systemctl restart haproxy.service

Toto jsou v podstatě dva příkazy z dříve, které jsme spustili, abychom vytvořili vlastní soubor certifikátu ssl pro použití Haproxy. Tento skript umístíme do adresáře Let's encrypt post-hook v našem konfiguračním adresáři názvu domény. Jako na obrázku níže:

sudo touch /etc/letsencrypt/renewal-hooks/post/haproxy-ssl-renew.sh

sudo nano  /etc/letsencrypt/renewal-hooks/post/haproxy-ssl-renew.sh

Pomocí těchto příkazů můžete vytvořit skript a vložit jej do něj.

Poté do konfiguračního souboru domény v Let’s Encrypt přidejte parametr post_hook, aby se spustil skript bash, který jsme vytvořili:

sudo nano /etc/letsencrypt/renewal/example.com.conf

Zde si můžete všimnout, že ke spuštění našeho skriptu jsme použili nástroj sh. To je jeden způsob, jak to udělat. Skript ale můžete také nastavit jako spustitelný pomocí sudo chmod +x a bude fungovat také. A tohle byl poslední krok. Dokázali jsme to.

Shrnutí

Probrali jsme postup, jak nainstalovat Let’s Encrypt SSL na HAProxy a jak provést automatické obnovení pro haproxy také pomocí let’sencrypt cerbot. Alespoň jeden způsob, jak to udělat. Pokud potřebujete více informací, abyste pochopili, jak HAProxy funguje, můžete se podívat na tento příspěvek, kde jsme vysvětlili, jak HAProxy funguje, a prošli si ukázkovou konfiguraci, kde jsme konfiguraci podrobně vysvětlili.

Velice vám děkuji za váš čas…


Linux
  1. Jak nainstalovat Let’s Encrypt SSL pro NGINX na Rocky Linux 8

  2. Jak nainstalovat Let’s Encrypt (Certbot) na CentOS 8?

  3. Jak nainstalovat Let's Encrypt SSL na Ubuntu 18.04 s Nginx

  1. Jak nainstalovat Let’s Encrypt SSL v Apache na Debianu 11

  2. Jak nainstalovat Let's Encrypt SSL v Nginx na Debian 11

  3. Jak nainstalovat RainLoop Webmail s Free Let’s Encrypt SSL na Ubuntu

  1. Jak nainstalovat Nginx pomocí Let's Encrypt na RHEL 8

  2. Jak nainstalovat Let’s Encrypt (Certbot) na CentOS 8

  3. Jak nainstalovat Let's Encrypt SSL Certbot pro Apache a Ubuntu 20.04