HAProxy SSL-administration
Installation och konfiguration av SSL-certifikat i lastbalanseraren HAProxy.
Introduktion
När du beställer ett SSL-certifikat krävs en Certificate Signing Request (CSR). Denna genereras utifrån en privat nyckel.
Om du vill skapa den privata nyckeln själv och generera CSR-filen, följ Generering av CSR och därefter Installation av SSL-certifikat
Om du redan har en privat nyckel och ett certifikat kan du gå direkt till Installation av SSL-certifikat.
Denna guide är baserad på OpenSSL 1.1.1f med HAProxy 2.0.13 i standardkonfiguration.
Guiden beskriver hur du skapar, installerar och konfigurerar SSL i HAProxy på Linux.
Instruktionerna gäller bland annat Ubuntu, Red Hat och CentOS. På andra Linux-distributioner kan sökvägar och kommandon skilja sig något.
- För att se vilken version av OpenSSL som är installerad, kör följande kommando:
openssl version

- För att se vilken version av HAProxy som är installerad, kör följande kommando:
haproxy -v

- På Mozilla SSL Configuration Generator kan du generera en SSL-konfiguration som du anpassar för din server.
Du kan välja mellan följande nivåer. Vi rekommenderar Intermediate om det inte finns särskilda skäl att välja något annat, och att du inte aktiverar HSTS om du inte är helt säker på konsekvenserna.
- Modern: Ger högre säkerhet men lägre kompatibilitet, eftersom äldre webbläsare och enheter inte kan ansluta.
Rekommenderas om alla klienter är kända, till exempel för en webbplats som endast används internt.
- Intermediate: En balans mellan hög säkerhet och hög kompatibilitet.
Rekommenderas för servrar som nås av okända klienter, till exempel en webbutik. Säkerheten är hög, men även något äldre klienter kan ansluta.
- Old: Låg säkerhet, högsta kompatibilitet.
Denna inställning rekommenderas endast om säkerheten inte är lika viktig som kompatibiliteten, eftersom den tillåter utfasade SSL-standarder med kända sårbarheter.
- HSTS: (HTTP Strict Transport Security) är en header från servern som talar om för klienten att domänen endast får nås via HTTPS i framtiden. Klienten kommer ihåg detta under hela den max-age som anges, även om headern tas bort från servern. Om något går fel finns det därför ingen enkel väg tillbaka.
Börja försiktigt med 300 sekunder (5 min) i minst en vecka innan du gradvis ökar tiden.
Var försiktig med subdomäner och preload om inte allt på domänen redan körs över HTTPS.
- OCSP Stapling: Vi rekommenderar att du aktiverar OCSP-häftning. Servern hämtar då certifikatets status med jämna mellanrum och skickar den till klienterna, i stället för att varje klient själv kontrollerar statusen vid varje anslutning.

Generering av CSR för certifikatbeställning
I detta exempel använder vi ett enskilt DNS-namn som fungerar för både standard- och SAN-certifikat. För ett wildcard-certifikat ska Common Name ändras till *.fairssl.dk
För att genomföra en beställning och generera CSR-koden behöver du samla följande information för certifikatet:
- Common Name (CN): Det primära fullständiga domännamnet (FQDN). T.ex.: www.fairssl.dk
- Organization Name (O): Det fullständiga juridiska företagsnamnet. T.ex.: FairSSL A/S
- Organizational Unit (OU): Avdelningen som ska använda certifikatet. Kan lämnas tom eller fyllas med företagsnamnet. T.ex. FairSSL A/S
- Locality (L): Ort. T.ex.: Ørum Djurs
- State (S): Län eller kommun. T.ex.: Norddjurs
- Country (C): Landskod med två bokstäver enligt ISO-standard, skrivs med versaler. T.ex.: DK
För att skapa både den privata nyckeln och CSR-förfrågan använder vi verktyget OpenSSL. OpenSSL finns vanligtvis under /usr/local/ssl/bin i en standardinstallation.
Skapa privat nyckel
- Logga in på servern med root-behörighet.
- Kör följande kommando för att skapa 2048-bitars Diffie-Hellman-parametrar:
sudo openssl dhparam -out /etc/ssl/private/dhparam.pem 2048

- Kör följande kommando för att skapa en privat nyckel utan lösenord:
sudo openssl genrsa -out /etc/ssl/private/www.fairssl.dk.key 2048

Vi skapar den privata nyckeln i /etc/ssl/private/ eftersom mappen är skyddad och avsedd för just detta.
Skicka aldrig nyckeln till oss via e-post.
Nyckelfilen måste förvaras säkert och bör inte lämna servern. Mindre nyckelstorlekar som RSA 1024 bitar accepteras inte längre.
Skapa CSR
- Kör följande kommando för att skapa en CSR med den privata nyckel du skapade tidigare:
sudo openssl req -new -key /etc/ssl/private/www.fairssl.dk.key -out /etc/ssl/private/www.fairssl.dk.csr
Ange uppgifterna du samlade in tidigare och tryck på [ENTER] efter varje fält. Se till att Country Name anges med versaler. Du behöver inte fylla i något i de tre sista fälten:
Country Name: DK
State or Province Name: Norddjurs
Locality Name: Ørum Djurs
Organization Name: FairSSL A/S
Organizational Unit Name: FairSSL A/S
Common Name: www.fairssl.dk
Email Address:
A Challenge Password:
An Optional Company Name:

- Du kan kontrollera att din CSR har skapats korrekt med följande kommando:
sudo openssl req -noout -text -in /etc/ssl/private/www.fairssl.dk.csr

- Öppna CSR-filen med en textredigerare (t.ex. sudo nano /etc/ssl/private/www.fairssl.dk.csr) och kopiera hela texten, inklusive alla bindestreck före och efter.
Klistra in denna text i CSR-fältet vid beställning av certifikatet.
Här är ett exempel på hur en komplett CSR-text ser ut:

En CSR innehåller ingen hemlig information och kan skickas via okrypterad e-post utan säkerhetsrisk.
Installation av SSL-certifikat
- Skapa en fil i mappen där du har din CSR-fil (t.ex. /etc/ssl/private) med namnet www.fairssl.dk.pem
Öppna filen i en textredigerare (t.ex. sudo nano www.fairssl.dk.pem).
Kopiera texten i SSL-certifikatet som du har fått via e-post och klistra in den i filen, med alla bindestreck.
Öppna din privata nyckel (t.ex. sudo nano /etc/ssl/private/www.fairssl.dk.key), kopiera texten från nyckeln och klistra in den i PEM-filen.
Klistra till sist in det mellanliggande certifikatet i samma fil och spara.

- Gör en säkerhetskopia av din haproxy.cfg:
sudo cp /usr/local/etc/haproxy/haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg.bak
- Öppna haproxy.cfg med en textredigerare (t.ex. sudo nano haproxy.cfg).
Uppdatera filen med de inställningar du tog fram i avsnittet Introduktion
Här är ett exempel på en uppdaterad konfigurationsfil (utan kommentarer, för att göra den lättare att läsa):

- Testa att HAProxy-konfigurationen fortfarande är korrekt:
sudo services haproxy configtest
Om testet visar fel måste du rätta dem innan du går vidare. Loggfilerna innehåller mer information.
- Ladda om HAProxy:
sudo services haproxy reload
Vi rekommenderar att du testar installationen med vår SSL-scanner på: https://www.fairssl.se/sv/ssltest
Mellanliggande certifikat (Intermediate)
Här hittar du mellanliggande certifikat från de olika certifikatutfärdarna.
Använd i första hand det mellanliggande certifikat som följde med ditt certifikat. Hämta det bara härifrån om du har tappat bort det, eftersom det medföljande mellanliggande certifikatet alltid hör ihop med ditt servercertifikat.
Förbättra din TLS-säkerhet
Använd Mozilla SSL Configuration Generator för att generera en säker TLS-konfiguration med moderna chiffersviter och protokollinställningar.
Guide till Mozilla SSL Configuration Generator