Krav
Generer sertifikat og privat nøkkel
Konfigurer HAProxy
Denne artikkelen vil lede deg gjennom å sette opp SSL-terminering på HAProxy, for kryptering av trafikk over HTTPS. Vi vil bruke et selvsignert SSL-sertifikat for ny frontend. Det antas at du allerede har HAProxy installert og konfigurert med en standard HTTP-grensesnitt.
Krav
- Vultr VPS
- HAProxy 1.5
- Ubuntu 14.04 LTS (Skal fungere på andre versjoner og distribusjon)
Generer sertifikat og privat nøkkel
Kjør følgende kodelinjer for å generere en privat nøkkel og et selvsignert sertifikat som fungerer med HAProxy.
openssl genrsa -out /etc/ssl/private/server.key 2048
mkdir /etc/ssl/csr
openssl req -new -key /etc/ssl/private/server.key -out /etc/ssl/csr/server.csr
openssl x509 -req -days 365 -in /etc/ssl/csr/server.csr -signkey /etc/ssl/private/server.key -out /etc/ssl/certs/server.crt
cat /etc/ssl/certs/server.crt /etc/ssl/private/server.key > /etc/ssl/certs/server.bundle.pem
Det første du bør gjøre er å sørge for at SSLv3 er deaktivert. På grunn av POODLE-angrepet anses ikke SSLv3 lenger som sikkert. Alle applikasjoner og servere skal bruke TLS 1.0 og nyere. Åpne filen ved å bruke favoritttekstredigeringsprogrammet /etc/haproxy/haproxy.cfg. På innsiden, se etter linjen ssl-default-bind-options no-sslv3under globalseksjonen. Hvis du ikke ser det, legg til den linjen på slutten av delen før defaultsdelen. Dette vil sikre at SSLv3 er deaktivert globalt. Du kan også sette den i frontend-delene dine, men det anbefales å deaktivere den globalt.
Gå til HTTPS-oppsettet. Opprett en ny grensesnittseksjon kalt web-https.
frontend web-https
bind public_ip:443 ssl crt /etc/ssl/certs/server.bundle.pem
reqadd X-Forwarded-Proto:\ https
rspadd Strict-Transport-Security:\ max-age=31536000
default_backend www-backend
Å forklare:
bind public_ip:443(endre public_iptil din VPS offentlige ip) forteller HAProxy å lytte til enhver forespørsel som sendes til ip-adressen på porten 443(HTTPS-porten).
ssl crt /etc/ssl/certs/server.bundle.pem ber HAProxy om å bruke SSL-sertifikatet som er generert tidligere.
reqadd X-Forwarded-Proto:\ https legger til HTTPS-overskriften på slutten av den innkommende forespørselen.
rspadd Strict-Transport-Security:\ max-age=31536000 en sikkerhetspolicy for å forhindre nedgraderingsangrep.
Du trenger ikke gjøre noen ekstra endringer i backend-delen.
Hvis du ønsker å ha HAProxy til å bruke HTTPS som standard, legg redirect scheme https if !{ ssl_fc }til i begynnelsen av www-backenddelen. Dette vil tvinge frem HTTPS-omdirigering.
Lagre konfigurasjonen og kjør for service haproxy restartå starte HAPRoxy på nytt. Nå er du klar til å bruke HAProxy med et SSL-endepunkt.