Hur man säkrar Apache med Let’s Encrypt på Ubuntu 22.04
Introduktion
Let’s Encrypt är en certifikatutfärdare (CA) som underlättar att erhålla och installera gratis TLS/SSL-certifikat och därigenom möjliggör krypterad HTTPS på webbservrar. Det effektiviserar processen genom att tillhandahålla en mjukvaruklient, Certbot, som försöker automatisera de flesta (om inte alla) av de nödvändiga stegen. För närvarande är hela processen för att erhålla och installera ett certifikat helt automatiserad på både Apache och Nginx.
I den här guiden kommer du att använda Certbot för att skaffa ett gratis SSL-certifikat för Apache på Ubuntu 22.04, och se till att detta certifikat är inställt för att förnyas automatiskt.
Den här handledningen använder en separat virtuell värdfil istället för Apaches standardkonfigurationsfil för att ställa in webbplatsen som kommer att säkras av Let’s Encrypt. Vi rekommenderar att du skapar nya virtuella Apache-värdfiler för varje domän som finns på en server eftersom det hjälper till att undvika vanliga misstag och behåller standardkonfigurationsfilerna som en reservinställning.
Förutsättningar
För att följa denna handledning behöver du:
- En Ubuntu 22.04-server konfigurerad med en icke- root – användare med sudoadministrativ behörighet och brandvägg aktiverad.
- Ett fullständigt registrerat domännamn. Denna handledning kommer att använda din_domän som ett exempel genomgående. Du kan köpa ett domännamn på GoDaddy, få ett gratis på Freenom eller använda den domänregistrator du väljer.
- Båda följande DNS-poster konfigurerade för din server.
- En A-post your_domain som pekar på din servers offentliga IP-adress.
- En A-post som pekar på din servers offentliga IP-adress www.your_domain
Steg 1 — Installera Certbot
För att få ett SSL-certifikat med Let’s Encrypt måste du installera programvaran Certbot på din server. Du kommer att använda standardpaketet för Ubuntu för det.
Uppdatera först det lokala paketindexet:
sudo apt update
Du behöver två paket: certbot, och python3-certbot-apache. Det senare är ett plugin som integrerar Certbot med Apache, vilket gör det möjligt att automatisera erhållandet av ett certifikat och konfigurera HTTPS inom din webbserver med ett enda kommando:
sudo apt install certbot python3-certbot-apache
Du kommer att uppmanas att bekräfta installationen genom att trycka på Yoch sedan på ENTER.
Certbot är nu installerad på din server. I nästa steg ska du verifiera Apaches konfiguration för att se till att din virtuella värd är korrekt inställd. Detta kommer att säkerställa att certbotklientskriptet kommer att kunna upptäcka dina domäner och konfigurera om din webbserver för att använda ditt nygenererade SSL-certifikat automatiskt.
Steg 2 — Kontrollera din Apache Virtual Host-konfiguration
För att automatiskt skaffa och konfigurera SSL för din webbserver måste Certbot hitta rätt virtuell värd i dina Apache-konfigurationsfiler. Dina serverdomännamn kommer att hämtas från de ServerName och ServerAlias direktiv som definieras i ditt VirtualHostkonfigurationsblock.
För att bekräfta att detta är konfigurerat öppnar du den virtuella värdfilen för din domän med nanoeller din föredragna textredigerare:
sudo nano /etc/apache2/sites-available/your_domain.conf
Hitta befintliga ServerName och ServerAlias rader. De bör listas enligt följande:
/etc/apache2/sites-available/din_domän.conf
…
ServerName your_domain
ServerAlias www.your_domain
…
Om du redan har din ServerName och ServerAlias konfigurerad så här, kan du avsluta din textredigerare och gå vidare till nästa steg. Om din nuvarande virtuella värdkonfiguration inte matchar exemplet, uppdatera den därefter. Om du använder nano kan du avsluta genom att trycka på CTRL+X, sedan Y och ENTER för att bekräfta eventuella ändringar. Kör sedan följande kommando för att validera dina ändringar:
sudo apache2ctl configtest
Du bör få Syntax OK som svar. Om du får ett fel, öppna den virtuella värdfilen igen och kontrollera om det finns stavfel eller saknade tecken. När din konfigurationsfils syntax är korrekt laddar du om Apache så att ändringarna träder i kraft:
sudo systemctl reload apache2
Med dessa ändringar kommer Certbot att kunna hitta rätt VirtualHost-block och uppdatera det.
Därefter uppdaterar du brandväggen för att tillåta HTTPS-trafik.
Steg 3 — Tillåta HTTPS genom brandväggen
Om du har UFW-brandväggen aktiverad, enligt rekommendationerna i förutsättningsguiderna, måste du justera inställningarna för att tillåta HTTPS-trafik. Vid installationen registrerar Apache några olika UFW-applikationsprofiler. Du kan utnyttja Apache Full- profilen för att tillåta både HTTP- och HTTPS-trafik på din server.
För att verifiera vilken typ av trafik som för närvarande är tillåten på din server, kontrollera statusen:
sudo ufw status
Om du följde min Apache-installationsguid kommer du att ha utdata som liknar följande, vilket innebär att endast HTTP-trafik på porten 80 är tillåten för närvarande:
Status: active
To Action From
— —— —-
OpenSSH ALLOW Anywhere
Apache ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache (v6) ALLOW Anywhere (v6)
För att tillåta HTTPS-trafik, tillåt ”Apache Full”-profilen:
sudo ufw allow 'Apache Full'
Ta sedan bort ”Apache”-profilen:
sudo ufw delete allow 'Apache'
Du är nu redo att köra Certbot och skaffa dina certifikat.
Steg 4 — Skaffa ett SSL-certifikat
Certbot tillhandahåller en mängd olika sätt att få SSL-certifikat genom plugins. Apache-pluginen kommer att ta hand om att konfigurera om Apache och ladda om konfigurationen när det behövs. För att använda detta plugin, kör följande:
sudo certbot --apache
Detta skript kommer att uppmana dig att svara på en rad frågor för att konfigurera ditt SSL-certifikat. Först kommer den att be dig om en giltig e-postadress. Detta e-postmeddelande kommer att användas för förnyelsemeddelanden och säkerhetsmeddelanden:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
(Enter ’c’ to cancel): you@your_domain
Efter att ha angett en giltig e-postadress, tryck ENTER på för att gå vidare till nästa steg. Du kommer då att bli ombedd att bekräfta om du godkänner Let’s Encrypts användarvillkor. Du kan bekräfta genom att trycka på Y och sedan ENTER:
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
(Y)es/(N)o: Y
Därefter kommer du att bli tillfrågad om du vill dela din e-post med Electronic Frontier Foundation för att få nyheter och annan information. Om du inte vill prenumerera på deras innehåll, skriv N. Annars skriv Y och tryck ENTER på för att gå vidare till nästa steg:
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let’s Encrypt project and the non-profit
organization that develops Certbot? We’d like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
(Y)es/(N)o: N
Nästa steg kommer att uppmana dig att informera Certbot om vilka domäner du vill aktivera HTTPS för. De angivna domännamnen hämtas automatiskt från din Apache virtuella värdkonfiguration, så det är viktigt att se till att du har rätt ServerName och ServerAlias inställningar konfigurerade i din virtuella värd. Om du vill aktivera HTTPS för alla listade domännamn (rekommenderas), kan du lämna prompten tom och trycka ENTER för att fortsätta. Annars väljer du de domäner du vill aktivera HTTPS för genom att lista varje lämpligt nummer, separerade med kommatecken och/eller mellanslag, och tryck sedan på ENTER:
Which names would you like to activate HTTPS for?
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
1: your_domain
2: www.your_domain
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter ’c’ to cancel):
Efter detta steg är Certbots konfiguration klar och du kommer att presenteras med de sista kommentarerna om ditt nya certifikat och var du kan hitta de genererade filerna:
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/your_domain/fullchain.pem
Key is saved at: /etc/letsencrypt/live/your_domain/privkey.pem
This certificate expires on 2022-07-10.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.
Deploying certificate
Successfully deployed certificate for your_domain to /etc/apache2/sites-available/your_domain-le-ssl.conf
Successfully deployed certificate for www.your_domain.com to /etc/apache2/sites-available/your_domain-le-ssl.conf
Congratulations! You have successfully enabled HTTPS on https:/your_domain and https://www.your_domain.com
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
If you like Certbot, please consider supporting our work by:
* Donating to ISRG / Let’s Encrypt: https://letsencrypt.org/donate
* Donating to EFF: https://eff.org/donate-le
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Ditt certifikat är nu installerat och laddat i Apaches konfiguration. Prova att ladda om din webbplats med https:// och lägg märke till din webbläsares säkerhetsindikator. Det bör indikera att din webbplats är ordentligt säkrad, vanligtvis med en låsikon i adressfältet.
Du kan använda SSL Labs Server Test för att verifiera ditt certifikats betyg och få detaljerad information om det, utifrån en extern tjänst.
I nästa och sista steg kommer du att testa funktionen för automatisk förnyelse av Certbot, som garanterar att ditt certifikat kommer att förnyas automatiskt före utgångsdatumet.
Steg 5 — Verifiera automatisk förnyelse av Certbot
Let’s Encrypts certifikat är endast giltiga i nittio dagar. Detta för att uppmuntra användare att automatisera sin certifikatförnyelseprocess, samt för att säkerställa att missbrukade certifikat eller stulna nycklar upphör att gälla förr snarare än senare.
Paketet certbot du installerade tar hand om förnyelser genom att inkludera ett förnyelseskript till /etc/cron.d, som hanteras av en systemctltjänst som heter certbot.timer. Det här skriptet körs två gånger om dagen och förnyar automatiskt alla certifikat som är inom trettio dagar efter utgången.
För att kontrollera statusen för den här tjänsten och se till att den är aktiv, kör följande:
sudo systemctl status certbot.timer
Din utdata kommer att likna följande:
● certbot.timer – Run certbot twice daily
Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset:>
Active: active (waiting) since Mon 2022-04-11 20:52:46 UTC; 4min 3s ago
Trigger: Tue 2022-04-12 00:56:55 UTC; 4h 0min left
Triggers: ● certbot.service
Apr 11 20:52:46 jammy-encrypt systemd[1]: Started Run certbot twice daily.
För att testa förnyelseprocessen kan du göra en dry-run med certbot:
sudo certbot renew --dry-run
Saving debug log to /var/log/letsencrypt/letsencrypt.log
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Processing /etc/letsencrypt/renewal/your_domain.conf
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Account registered.
Simulating renewal of an existing certificate for your_domain and www.your_domain.com
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Congratulations, all simulated renewals succeeded:
/etc/letsencrypt/live/your_domain/fullchain.pem (success)
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Om du inte får några fel är allt klart. Vid behov kommer Certbot att förnya dina certifikat och ladda om Apache för att hämta ändringarna. Om den automatiska förnyelseprocessen någonsin misslyckas kommer Let’s Encrypt att skicka ett meddelande till e-postadressen du angett och varna dig när ditt certifikat är på väg att löpa ut.
0 kommentarer