Sikre Apache med SSL/TLS: Komplett guide

La oss sikre Apache-webserveren din med et SSL/TLS-sertifikat.

Etter at sertifikatet er implementert, vil det angitte domenet eller IP-adressen være tilgjengelig via HTTPS-protokollen.

La oss komme i gang.

I hovedsak vil vi gjøre følgende:

  • Kompilere Apache HTTP 2.4.5 med SSL-modulen aktivert.
  • Skaffe et gyldig SSL-sertifikat.
  • Konfigurere Apache-serveren for å støtte SSL/TLS.

Installere Apache med SSL fra kildekode

For å aktivere SSL, må Apache HTTP kompileres med mod_ssl-modulen. Jeg vil bruke en CentOS 7 virtuell maskin fra Digital Ocean som et eksempel.

  • Logg deg på Linux-serveren som root-bruker og last ned den nyeste versjonen av Apache.
wget http://www-us.apache.org/dist//httpd/httpd-2.4.25.tar.gz .

Merk: Du kan sjekke her for den nyeste versjonen.

  • Pakk ut filen ved hjelp av gunzip-kommandoen.
gunzip -c httpd-2.4.25.tar.gz | tar xvf -
  • En ny mappe ved navn «httpd-2.4.25» vil bli opprettet.
  • Naviger til den og kjør følgende konfigurasjonskommando.
./configure --enable-ssl --enable-so

Merk: Hvis dette gjøres på en helt ny server, kan det oppstå problemer knyttet til APR, PCRE og OpenSSL. Se en eventuell feilsøkingsguide.

Forsikre deg om at du ikke mottar feilmeldinger fra konfigurasjonskommandoen. Deretter installerer du ved hjelp av make-kommandoer:

make 
make install

Som alltid, sjekk at det ikke er feil i kommandoene over. Dette betyr at du har installert en Apache-webserver med SSL-støtte.

Skaffe et SSL-sertifikat

Det finnes flere metoder for å generere og få et SSL-sertifikat signert av en sertifiseringsinstans.

Hvis du skal implementere SSL for en intern webserver, har de fleste organisasjoner et eget team som håndterer interne sertifikater. Du må da ta kontakt med dem. Uansett må du generere en CSR (Certificate Signing Request), noe du kan gjøre med OpenSSL.

Hvis du derimot skal sikre en URL som er tilgjengelig fra internett, kan du enten kjøpe et sertifikat fra for eksempel VeriSign, GoDaddy, Namecheap, ZeroSSL, eller få et GRATIS sertifikat fra Let’s Encrypt.

Let’s Encrypt er et Linux Foundation-prosjekt som tilbyr GRATIS SSL/TLS-sertifikater. Jeg vil bruke Let’s Encrypt for å få et sertifikat for domenet mitt – chandan.io

Det er flere måter å generere en CSR på, men jeg har funnet ut at det enkleste er å bruke nettverktøyet «SSL For Free«.

Skriv inn URL-en du ønsker å sikre.

Bekreft at du eier domenet ved hjelp av en av de tilgjengelige metodene, og last ned sertifikatfilene for domenet.

Du vil motta tre filer som vi skal bruke i den neste konfigurasjonen av Apache-webserveren:

  • Nøkkel – din private nøkkelfil, som ikke må deles offentlig.
  • Sertifikat – selve SSL-sertifikatet for domenet ditt.
  • Ca_bundle – rotsertifikatet og/eller mellomsertifikater.

Overfør de nedlastede filene til webserveren. Vi trenger dem snart.

Apache SSL-konfigurasjon

Det siste steget er å konfigurere Apache for å betjene forespørsler over HTTPS-protokollen.

  • Logg deg inn på Apache-webserveren.
  • Ta en sikkerhetskopi av httpd.conf-filen (standardplassering er /usr/local/apache2/conf/).
  • Åpne filen med en editor (f.eks. vi) og sørg for at mod_ssl-modulen og httpd-ssl.conf er med, og ikke kommentert ut.
LoadModule ssl_module modules/mod_ssl.so 
Include conf/extra/httpd-ssl.conf

Vi bruker httpd-ssl.conf-filen for å konfigurere sertifikatopplysningene. Kontroller at de riktige parametrene er satt opp:

  • SSLCertificateFile – stien til sertifikatets .crt-fil som du lastet ned tidligere.
  • SSLCertificateKeyFile – stien til den private nøkkelfilen (.key).
  • SSLCertificateChainFile – stien til ca_bundle.crt-filen.

Tips: Det kan være lurt å opprette en ny mappe, f.eks. «ssl», og lagre alle sertifikatrelaterte filer der.

  • Ta en sikkerhetskopi om nødvendig og bruk vi eller en annen editor til å redigere filen.
SSLCertificateFile "/usr/local/apache2/conf/ssl/certificate.crt"
SSLCertificateChainFile "/usr/local/apache2/conf/ssl/ca_bundle.crt"
SSLCertificateKeyFile "/usr/local/apache2/conf/ssl/private.key"

Deretter må du konfigurere direktivet «ServerName». Dette er vanligvis domenet ditt/URL-navnet.

ServerName chandan.io
  • Lagre filen og start Apache-webserveren på nytt.
cd /usr/local/apache2/bin 
./apachectl stop 
./apachectl start

Til slutt, kontroller at domenet ditt er koblet til IP-adressen til den nylig konfigurerte webserveren. Når du er ferdig, prøv å få tilgang til domenet ditt med HTTPS.

Som du ser, er chandan.io nå tilgjengelig over HTTPS med sertifikatet jeg har konfigurert.

Trinnene over er essensielle for å konfigurere et SSL-sertifikat. Du kan justere SSL-konfigurasjonen ytterligere for å styrke sikkerheten. Det kan også være lurt å teste webserverens SSL/TLS-oppsett før du går i produksjon, for å sikre at den ikke er sårbar for vanlige sikkerhetsbrudd.

Jeg håper dette gir deg en oversikt over hvordan du implementerer et SSL-sertifikat på Apache-webserveren slik at URL-en din er tilgjengelig via HTTPS.

Likte du artikkelen? Del den gjerne med andre!