Säkra din Apache-server med SSL/TLS-certifikat
Genom att implementera ett SSL/TLS-certifikat kan du tillgängliggöra din konfigurerade domän eller IP-adress via HTTPS, vilket ger en säkrare anslutning för dina besökare. Låt oss utforska hur du kan uppnå detta.
I grunden kommer vi att genomföra följande steg:
- Kompilera Apache HTTP 2.4.5 med stöd för SSL-modulen.
- Skaffa ett SSL-certifikat från en certifikatutfärdare.
- Konfigurera Apache för att utnyttja SSL-certifikatet.
Installera Apache med SSL-stöd från källkoden
För att möjliggöra SSL-funktionalitet, måste Apache HTTP kompileras med mod_ssl. Jag kommer att använda en CentOS 7 VM från Digital Ocean som exempel.
- Börja med att logga in på din Linux-server som root-användare och ladda ner den senaste versionen av Apache.
wget http://www-us.apache.org/dist//httpd/httpd-2.4.25.tar.gz .
Notera: Du kan här hitta den senaste tillgängliga versionen.
- Extrahera den nedladdade filen med följande kommando:
gunzip -c httpd-2.4.25.tar.gz | tar xvf -
- En ny mapp med namnet ”httpd-2.4.25” kommer att skapas.
- Navigera till den nyskapade mappen och kör konfigurationskommandot:
./configure --enable-ssl --enable-so
Obs: Om detta görs på en ny server kan det uppstå problem relaterade till APR, PCRE, och OpenSSL. Se felsökningsguiden för hjälp.
Om konfigurationskommandot lyckas utan fel, fortsätt med installationskommandona:
make
make install
Om dessa kommandon genomförs utan felmeddelanden, betyder det att du framgångsrikt installerat Apache-webbservern med SSL-stöd.
Skaffa ett SSL-certifikat
Det finns flera metoder för att generera och få ett SSL-certifikat signerat av en certifikatutfärdare.
Om du planerar att implementera SSL på en intern webbserver i ditt nätverk, bör du kontakta ditt interna team för certifikatutfärdare. Oavsett detta, behöver du först generera en CSR (Certificate Signing Request), vilket du kan göra med hjälp av OpenSSL.
För att säkra en webbplats som är tillgänglig via internet, kan du antingen köpa ett certifikat från kommersiella certifikatutfärdare som VeriSign, GoDaddy, Namecheap, eller ZeroSSL. Alternativt kan du få ett gratis certifikat från Let’s Encrypt.
Let’s Encrypt är ett samarbete inom Linux Foundation som erbjuder kostnadsfria SSL/TLS-certifikat. I detta exempel kommer jag använda Let’s Encrypt för att säkra min domän – Chandan.io.
Det finns många sätt att skapa en CSR, men det enklaste är att använda SSL For Free, ett onlineverktyg.
Ange din domän du vill säkra och verifiera domänägarskapet med en av de angivna metoderna. Efter verifiering, ladda ner dina certifikatfiler.
Du kommer att få tre filer, som kommer att användas i nästa steg för att konfigurera Apache:
- key – Den privata nyckelfilen. Bör inte delas offentligt.
- certificate – Själva SSL-certifikatet för din domän.
- ca_bundle – Rot- eller mellancertifikaten.
Överför dessa filer till din webbserver. Vi kommer att använda dem inom kort.
Konfigurera Apache för SSL
Det sista steget är att konfigurera Apache så att den hanterar anslutningar över HTTPS.
- Logga in på din Apache-webbserver.
- Ta en säkerhetskopia av din httpd.conf-fil (standardplats är /usr/local/apache2/conf/).
- Öppna filen med en textredigerare (t.ex. vi) och se till att modulerna mod_ssl och httpd-ssl.conf är aktiva och inte kommenterade.
LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf
Vi använder filen httpd-ssl.conf för att konfigurera certifikatdetaljerna. Du behöver ställa in följande parametrar korrekt:
- SSLCertificateFile – Sökväg till CRT-filen (certifikatet du laddade ner tidigare).
- SSLCertificateKeyFile – Sökväg till den privata nyckelfilen.
- SSLCertificateChainFile – Sökväg till ca_bundle.crt filen.
Tips: Skapa en ny mapp med namnet ”ssl” och lägg alla certifikatrelaterade filer där för enklare hantering.
- Ta en säkerhetskopia av filen och använd en textredigerare för att ändra den.
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"
Konfigurera sedan ”ServerName”-direktivet. Detta ska vara din domän/URL.
ServerName chandan.io
- Spara filen och starta om Apache-webbservern.
cd /usr/local/apache2/bin
./apachectl stop
./apachectl start
Slutligen, se till att din domän pekar mot den nyligen konfigurerade webbserverns IP-adress. När detta är klart, försök att komma åt din domän via HTTPS.
Nu kan du se att Chandan.io är tillgänglig via HTTPS med det konfigurerade certifikatet.
Dessa steg är viktiga för att implementera ett SSL-certifikat. Det finns ytterligare saker du kan göra för att härda och säkra din SSL-konfiguration, vilket är beskrivet här. Det kan också vara en bra idé att testa din SSL/TLS-konfiguration innan du går live, för att undvika vanliga sårbarheter.
Jag hoppas detta ger dig en god förståelse för hur du implementerar ett SSL-certifikat på din Apache-webbserver, så att din webbplats blir tillgänglig via HTTPS.
Tyckte du om artikeln? Dela gärna med dig av dina åsikter!