Hur man säkrar Apache med Let's Encrypt på Debian 12, 11 eller 10

Att säkra din Apache-webbserver med ett Let's Encrypt-certifikat är avgörande för att skydda din webbplats och din data. Den här guiden leder dig genom denna process på Debian 12 Bookworm, Debian 11 Bullseye och Debian 10 Buster. Fokus här ligger på att implementera robusta säkerhetsåtgärder samtidigt som man förenklar komplexiteten som ofta förknippas med serverhantering.

Viktiga fördelar med att använda Let's Encrypt med Apache på Debian:

  • Kostnadseffektiv: Let's Encrypt erbjuder gratis SSL-certifikat, vilket gör säkerhet på hög nivå tillgänglig för alla.
  • Automatiserade förnyelser: Let's Encrypts automatiseringsfunktioner förenklar erhållandet och förnyelsen av SSL-certifikat, vilket minskar risken för säkerhetsbortfall.
  • Förbättrad säkerhet: SSL-certifikat från Let's Encrypt ger stark kryptering för data under överföring, vilket förbättrar den övergripande säkerheten för din Apache-server på Debian.
  • Bred kompatibilitet: De flesta moderna webbläsare känner igen Let's Encrypt-certifikat, vilket säkerställer en smidig användarupplevelse.
  • Proaktiva säkerhetsåtgärder: Med regelbundna uppdateringar och strikta policyer är Let's Encrypt en pålitlig försvarslinje mot olika cyberhot.

Genom att följa den här guiden kommer du att lära dig hur du säkrar din Apache-server på Debian med hjälp av Let's Encrypt, vilket höjer dina webbtjänsters säkerhet och tillförlitlighet. Håll ögonen öppna för detaljerade instruktioner om hur du uppnår denna viktiga säkerhetsinställning.

Installera Certbot för Apache

Det här avsnittet kommer att fokusera på att installera Certbot för Apache på ett Debian-baserat Linux-system. Certbot är ett kraftfullt verktyg som förenklar att erhålla och konfigurera SSL-certifikat från Let's Encrypt. Det fungerar hand i hand med Apache, vilket gör att du kan aktivera HTTPS på dina servrar.

Uppdatera Debian Package Repositories före installation av Certbot för Apache

Innan du installerar Certbot är det avgörande att se till att paketförråden och de befintliga paketen på ditt Debiansystem är uppdaterade. Att hålla systemet uppdaterat säkerställer att du installerar den senaste versionen av Certbot och beroenden. Utför följande kommandon för att uppdatera paketförråden och uppgradera de befintliga paketen:

sudo apt update
sudo apt upgrade

Installera Certbot och Apache Plugin

Nu när ditt Debiansystem är uppdaterat är nästa steg att installera Certbot tillsammans med dess Apache-plugin. Apache-pluginet är viktigt eftersom det gör det möjligt för Certbot att interagera med Apache, automatisera erhållande och förnyelse av certifikat och konfigurera Apache att använda dem. Kör följande kommando för att installera både Certbot och Apache-plugin:

sudo apt install certbot python3-certbot-apache

Konfigurera Apache och Let's Encrypt Certificate

I det här avsnittet guidar vi dig genom att konfigurera Apache och generera ett Let's Encrypt SSL-certifikat för din domän med Certbot. Vi kommer också att täcka användningen av olika alternativ som förbättrar säkerheten för din serverkonfiguration.

Certbot-konfiguration och SSL-certifikatgenerering på Apache med Debian

Efter installation av Certbot och dess Apache-plugin är nästa åtgärd att köra Certbot för att generera ett SSL-certifikat för din domän. Kommandot innehåller flera alternativ för att optimera säkerheten.

Här är en uppdelning av alternativen som används:

  • --apache: Anger att webbservern som används är Apache.
  • --agree-tos: Indikerar ditt samtycke till Let's Encrypts användarvillkor.
  • --redirect: Ställer in en permanent 301-omdirigering från HTTP till HTTPS, vilket säkerställer att all trafik är krypterad.
  • --hsts: Lägger till ett Strict-Transport-Security-huvud för att tvinga fram säkra anslutningar.
  • --staple-ocsp: Aktiverar OCSP-häftning, förbättrar SSL-förhandlingsprestanda samtidigt som användarnas integritet bibehålls.
  • --email: Det här är e-postadressen till vilken du kommer att få meddelanden relaterade till ditt SSL-certifikat, såsom påminnelser om förnyelse och säkerhetsvarningar.

Byta ut you@example.com med din faktiska e-post och yourdomain.com med ditt domännamn. Kör följande kommando:

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d yourdomain.com

Efter framgångsrik exekvering kommer Certbot att generera ett SSL-certifikat för din domän, konfigurera Apache att använda det och tillämpa de angivna säkerhetsalternativen. Din server kommer nu att vara säker och din webbplats kommer att vara tillgänglig via HTTPS.

Alternativ Certbot-konfigurationsmetod med Apache

För dem som föredrar ett mer guidat och interaktivt tillvägagångssätt, tillhandahåller Certbot en alternativ metod som ber dig om information och konfigurationsval. Så här använder du den här metoden:

Kör följande kommando:

sudo certbot --apache

Certbot kommer att initiera en interaktiv session. Nedan följer en genomgång av de uppmaningar du kan stöta på:

  • Ange e-postadress (används för brådskande förnyelse och säkerhetsmeddelanden): Ange din e-postadress. Let's Encrypt kommer att använda detta för att kommunicera om dina certifikat.
  • Godkänn användarvillkoren för Let's Encrypt: Du kommer att bli ombedd att godkänna användarvillkoren. Mata in A för att komma överens.
  • Dela din e-post med Electronic Frontier Foundation för uppdateringar om deras arbete: Om du vill stödja EFF, skriv in Y för ja. Annars, in N för nr.
  • Vilka namn vill du aktivera HTTPS för: Certbot kommer att visa de domännamn som den kan utfärda certifikat för. Ange siffrorna som motsvarar dina domäner eller lämna dem tomma för alla.
  • Välj lämplig åtgärd: Du kommer att ges ett alternativ att antingen:
    • 1: Försök att installera om certifikatet
    • 2: Förnya och ersätta certifikatet (gräns ~5 per 7 dagar)
    • Välj det alternativ som passar dina behov.
  • Välj om du vill omdirigera HTTP-trafik till HTTPS eller inte: Du kommer att tillfrågas om du vill omdirigera HTTP-trafik till HTTPS. Detta är tillrådligt för de flesta webbplatser:
    • 1: Ingen omdirigering – Gör inga ytterligare ändringar i webbserverns konfiguration.
    • 2: Omdirigering – Gör alla förfrågningar omdirigera för att säkra HTTPS-åtkomst.
    • Välj alternativ 2 för bättre säkerhet.

När du har gått igenom alla uppmaningar och processen är klar, kommer Certbot att mata ut ett meddelande som liknar det som nämns, som anger platsen för dina certifikatfiler och ytterligare information.

Automatisera förnyelse av SSL-certifikat med Cron

I det här avsnittet kommer vi att ställa in en automatisk förnyelseprocess för dina SSL-certifikat med hjälp av Cron, en inbyggd jobbschemaläggare i Linux-baserade system. Låt oss kryptera SSL-certifikat, som har en livslängd på 90 dagar, och det är viktigt att förnya dem innan de löper ut för att undvika avbrott i tjänsten. Certbot tillhandahåller ett kommando för att förnya certifikat, och vi kan automatisera denna uppgift med Cron.

Torrkörning av certifikatförnyelse

Innan du automatiserar förnyelseprocessen är det avgörande att se till att förnyelsekommandot fungerar som förväntat. Vi kan göra detta genom att utföra en torrkörning, som simulerar förnyelseprocessen utan att ändra certifikaten. Kör följande kommando för att starta en torrkörning:

sudo certbot renew --dry-run

Schemaläggning av automatiska certifikatförnyelser

Om torrkörningen är klar utan fel kan vi schemalägga automatiska certifikatförnyelser. Vi kommer att använda Cron för att köra förnyelsekommandot vid en specifik tidpunkt varje dag.

Öppna först crontab-filen i redigeringsläge med följande kommando:

sudo crontab -e

I slutet av filen lägger du till följande rad för att schemalägga en daglig förnyelsekontroll klockan 02:30:

30 2 * * * /usr/bin/certbot renew --quiet

De --quiet alternativet säkerställer att förnyelseprocessen körs tyst i bakgrunden utan att producera någon utdata om det inte finns ett fel.

När du har lagt till den här raden, spara och stäng filen. Du har nu ställt in en automatisk förnyelseprocess för dina SSL-certifikat. Cron kommer dagligen att kontrollera om några certifikat ska förnyas och förnya dem vid behov. Detta säkerställer att din Apache-server alltid använder giltiga SSL-certifikat och upprätthåller en säker användaranslutning.

Förbättra Apache SSL-konfiguration

I det här avsnittet kommer vi att optimera din Apache-servers prestanda genom att ändra dess SSL-konfiguration. Detta innebär att ställa in SSL-certifikat, aktivera HTTP/2, implementera HTTP Strict Transport Security (HSTS) och konfigurera SSL-protokoll och chiffer. Denna konfiguration kräver Apache-modulerna mod_ssl, mod_socache_shmcb, mod_rewrite, och mod_headers.

Redigera Apache-konfigurationsfilen

För att börja måste du komma åt konfigurationsfilen för din domän i Apache. Kör följande kommando:

sudo nano /etc/apache2/sites-available/your_domain.conf

Detta öppnar konfigurationsfilen för din domän i en textredigerare som heter Nano. När du väl är inne gör du följande justeringar i VirtualHost-blocket.

Omdirigera HTTP till HTTPS

Först ställer vi in ​​en regel för att omdirigera all HTTP-trafik till HTTPS, vilket säkerställer att alla anslutningar till din server är säkra. Denna regel utesluter förfrågningar till .well-known/acme-challenge/ katalog, som används av Certbot för domänvalidering under certifikatutfärdandeprocessen. Lägg till följande konfiguration i <VirtualHost *:80> blockera:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/\.well\-known/acme\-challenge/
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]

Aktivera SSL och ange certifikat

Nästa, inom <VirtualHost *:443> blockera, aktiverar vi SSL och anger sökvägarna till ditt SSL-certifikat och din privata nyckel:

SSLEngine on
SSLCertificateFile      /path/to/signed_cert_and_intermediate_certs
SSLCertificateKeyFile   /path/to/private_key

Byta ut /path/to/signed_cert_and_intermediate_certs med sökvägen till din SSL-certifikatfil, och /path/to/private_key med sökvägen till din privata nyckelfil.

Aktivera HTTP/2

För att förbättra prestandan kommer vi att aktivera HTTP/2 om det är tillgängligt:

Protocols h2 http/1.1

Implementera HSTS

Vi kommer också att lägga till ett Strict-Transport-Security-huvud för att upprätthålla säkra anslutningar:

Header always set Strict-Transport-Security "max-age=63072000"

Konfigurera SSL-protokoll och chiffer

Därefter kommer vi att specificera vilka SSL-protokoll och chiffer som ska användas för att säkerställa hög säkerhet och kompatibilitet:

SSLProtocol                        all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite                  ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305
SSLHonorCipherOrder    off
SSLSessionTickets            off

Aktivera OCSP-häftning

Slutligen kommer vi att aktivera OCSP-häftning, en funktion som förbättrar prestandan för SSL-förhandling samtidigt som besökarnas integritet bibehålls:

SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"

Validera och tillämpa ändringarna

När du är klar, spara och avsluta filen. Det är viktigt att validera din Apache-konfiguration för att säkerställa inga syntaxfel. Kör detta kommando för att kontrollera:

sudo apachectl configtest

Om det inte finns några problem, tillämpa ändringarna genom att ladda om Apache:

sudo systemctl restart apache2

Slutsats

Under hela den här artikeln grävde vi ner oss i att säkra Apache med Let's Encrypt SSL-certifikat på Debian 10, 11 och 12. Vi lyfte fram betydelsen av SSL-certifikat för att säkerställa säker kommunikation mellan servrar och klienter. Vi började med att installera Certbot och utforskade hur man får ett gratis SSL-certifikat från Let's Encrypt. Vi diskuterade också att konfigurera Apache för att utnyttja SSL-certifikatet, automatisera förnyelseprocessen genom cron-jobb och stärka säkerheten via Apache-konfiguration.

Som en sista rekommendation är det viktigt att övervaka loggarna och hålla systemet aktuellt regelbundet. Dessa metoder kommer att säkerställa att du är informerad om potentiella problem och att din server är stärkt mot de senaste säkerhetsbristerna.

Joshua James
Följ mig
Senaste inläggen av Joshua James (se alla)

Lämna en kommentar