HAProxy SSL Administration
SSL-certifikatinstallation og konfiguration i HAProxy load balancer.
Introduktion
Ved bestilling af et SSL-certifikat kræves en Certificate Signing Request (CSR), denne genereres ud fra en privat nøgle.
Ønsker du selv at oprette den private nøgle, skal du generere CSR-filen, følg derfor Generering af CSR og derefter Installation af SSL-certifikat
Har du privatnøgle og certifikat klar skal du følge Installation af SSL-certifikat.
Denne guide er lavet med OpenSSL 1.1.1f med en HA-Proxy 2.0.13 med standard opsætning.
Denne vejledning beskriver hvordan man opretter, installerer og konfigurerer SSL i Nginx på Linux.
Vejledningen passer bl.a. til Ubuntu, Redhat, CentOS. Der kan være mindre forskellige i stier og kommandoer, til andre linux udgaver.
- For at se hvilken version af OpenSSL der er installeret, kør følgende kommando:
openssl version

- For at se hvilken version af apache2 der er installeret, kør følgende kommando:
haproxy -v

- På Mozilla SSL Configuration Generator kan du generere en SSL konfigurationstekst, som du skal tilpasse din server.
Du vil kunne vælge imellem følgende niveauer. Vi anbefaler Intermediate hvis ikke der er en speciel grund til at vælge andet, og at du ikke slår HSTS til, medmindre du er helt sikker på hvad du laver.
- Modern: Giver højere sikkerhed men lavere kompatibilitet da den udelukker en del ældre browsere og andre enheder.
Anbefalet hvis alle klienter er kendte, f.eks. på et website der kun anvendes internt.
- Intermediate: En balance af mellem-høj sikkerhed og høj kompatibilitet.
Generelt anbefalet til servere hvor ukendte klienter tilgår, f.eks. en webshop. Den optimerer sikkerheden, men tillader stadig lidt ældre klienter at tilgå websitet.
- Old: Lav sikkerhed, højeste kompatibilitet.
Denne indstilling kan kun anbefales hvis sikkerheden ikke er nær så vigtig som kompatibiliteten, da den åbner for udfasede SSL standarder der har kendte huller.
- HSTS: (HTTP Strict Transport Security) er en header fra serveren, der fortæller klienten at DNS domænet kun må tilgås via HTTPS fremover. Dette huskes af klienter i den max-age der sættes, uanset om det fjernes fra serveren igen, så der er ingen vej tilbage hvis det fejler.
Følg en grundig vejledning, vær konservativ og anvend 300 sekunder (5 min) i mindst en uge, inden der skrues gradvist op.
Pas på med subdomains og preload, med mindre alt på domænet allerede kører HTTPS.
- OCSP Stapling: Det er helt klart en fordel at slå OCSP til. Det gør at serveren henter status for certifikatet en gang imellem og afleverer det til klienter, i stedet for at samtlige klienter skal kontrollere status hver gang de forbinder til dit website.

Generering af CSR til certifikat bestilling
I dette eksempel har vi anvendt et enkelt DNS-navn som virker både til standard og SAN certifikater, til et wildcard skal Common Name skiftes til *.fairssl.dk
For at gennemføre en bestilling og genereringen af CSR koden, har du brug for at samle følgende oplysninger til certifikatet:
- Common Name (CN): Det primære fulde internet domænenavn. F.eks.: www.fairssl.dk
- Organization Name (O): Det fulde gyldige firmanavn, præcis som det står i CVR. F.eks.: FairSSL A/S
- Organizational Unit (OU): Afdelingen som skal bruge certifikatet. Må ikke kunne forveksles med et andet firma. Kan anbefales at efterlade den tom, eller at bruge firmanavnet. F. eks. FairSSL A/S
- Locality (L): Bynavn. F.eks.: Ørum Djurs
- State (S): Stat eller kommune, i Danmark anvendes kommunen. F.eks.: Norddjurs
- Country (C): ISO-standard to-bogstavs landekode, skal være store bogstaver. F.eks.: DK
For både oprettelse af den private nøgle og CSR forespørgslen, beskriver vi her anvendelsen af OpenSSL værktøjet. OpenSSL værktøjet er installeret under /usr/local/ssl/bin hvis du har en standard installation.
Oprettelse af privat nøgle
- Log ind på serveren med root adgang.
- Kør følgende kommando for at oprette et 2048-bit Diffie-Hellman parameter:
sudo openssl dhparam -out /etc/ssl/private/dhparam.pem 2048

- Kør følgende kommando for at oprette en privat nøgle uden password:
sudo openssl genrsa -out /etc/ssl/private/www.fairssl.dk.key 2048

Vi opretter den private nøgle i /etc/ssl/private/ fordi det er en sikret mappe specifikt lavet til dette formål.
Send aldrig nøglen til os via e-mail.
Nøglefilen skal opbevares sikkert og bør ikke forlade serveren. Det er ikke muligt at anvende mindre nøgler som f.eks. RSA 1024 bit.
Oprettelse af CSR
- Kør følgende kommando for at oprette en CSR med den private nøgle du lavede tidligere:
sudo openssl req -new -key /etc/ssl/private/www.fairssl.dk.key -out /etc/ssl/private/www.fairssl.dk.csr
Indtast de informationer du indsamlede tidligere til certifikatet efterfulgt af [ENTER], husk at sørge for at Country Name er med store bogstaver. Derudover skal du ikke skrive noget i de sidste tre felter, se følgende eksempel:
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 nu bekræfte at din CSR er oprettet korrekt med følgende kommando:
sudo openssl req -noout -text -in /etc/ssl/private/www.fairssl.dk.csr

- Åben CSR-filen med en teksteditor (f.eks sudo nano /etc/ssl/private/www.fairssl.dk.csr), kopier hele teksten, inkl. alle bindestreger før og efter.
Under certifikat bestillingen skal du indsætte teksten i CSR-feltet.
følgende er et eksempel på en komplet CSR-tekst:

En CSR indeholder ingen fortrolige oplysninger og der er ingen sikkerhedsrisiko ved f.eks. at sende en CSR via ukrypteret e-mail.
Installation af SSL-certifikat
- I den mappe hvor du har din CSR-fil liggende (f.eks.: /etc/ssl/private), opret en fil kaldet www.fairssl.dk.pem
Åben filen i en text editor (f.eks. sudo nano www.fairssl.dk.pem).
Kopier teksten med dit SSL certifikat fra mailen ind i filen, inkl. alle bindestreger.
Åben din private nøgle med en teksteditor (f.eks sudo nano /etc/ssl/private/www.fairssl.dk.key) Kopier teksten fra nøglen ind i filen.
Til slut sæt certifikatets mellemudsteder (intermediate certificate) ind i filen og gem den.

- Lav en backup af din haproxy.cfg fil:
sudo cp /usr/local/etc/haproxy/haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg.bak
- Åben haproxy.cfg med en text editor (f.eks. sudo nano haproxy.cfg)
Ret filen til med de indstillinger du fandt i Introduktionen
Her er et eksempel på en opdateret fil (kommentarer er fjernet for overskuelighed)

- Test at konfigurationen af HA Proxy stadigt virker korrekt:
sudo services haproxy configtest
Opstår der fejl under testen, skal de rettes før du går videre. Se logfilerne for mere information.
- Genindlæs HA Proxy:
sudo services haproxy reload
Vi anbefaler at du tester installationen med vores server tester på: https://www.fairssl.dk/da/ssltest
Mellemudstedercertifikater
Her kan du finde mellemudstedercertifikater fra de forskellige udstedere.
Vi anbefaler at du bruger det medsendte mellemudstedercertifikat, og kun henter herfra hvis du mister det, da det medsendte altid vil være det korrekte til det bestilte servercertifikat.
Styrk din TLS-sikkerhed
Brug Mozilla SSL Configuration Generator til at generere en sikker TLS-konfiguration med moderne cipher suites og protokolindstillinger.
Mozilla SSL Configuration Generator guide