Dedikerad Server: Installera Certbot på Linux
Denna guide skapades med följande produkter:
(Detaljer kan variera med produkter från olika leverantörer men huvudkoncepten förblir desamma)
Introduktion
SSL-certifikat är en viktig del av internet och ser till att data kan skickas säkert mellan klient och server. I den här guiden går vi igenom hur du sätter upp det open-source verktyget Certbot för att hämta gratis SSL-certifikat från den ideella certifikatutfärdaren Let's Encrypt.
Förberedelser
För att använda Certbot behöver du en Linux-server och en domän som du äger. Du måste ha tillgång till domänens DNS-inställningar och måste skapa en A DNS-post som pekar på IP-adressen till din Linux-server för varje root-domän eller subdomän du vill använda.
Certbot har även extra plugins som gör det enkelt att "one-click" installera certifikat för domäner som fungerar med olika webbservrar som Nginx eller Apache. Vi rekommenderar Nginx eftersom det är en snabb och populär open-source webbserver. Kolla in vår Linux reverse proxy-guide för hjälp med att sätta upp detta.
Installation
Börja med att installera det open-source paketet Certbot som du kommer använda för att hämta gratis SSL-certifikat från Let's Encrypt.
sudo apt install certbot
När Certbot är installerat kan du börja begära certifikat för dina domäner. Let's Encrypt och Certbot erbjuder flera ACME-utmaningar för att verifiera domänägarskap.
Vi rekommenderar starkt att använda standardmetoden HTTP-01 eftersom den stödjer automatisk förnyelse. Om du stöter på problem kan du istället prova DNS-01-metoden som är manuell och kräver att du skapar en TXT DNS-post, men den stödjer inte automatisk förnyelse.
Om du kör en webbserver som Nginx, Apache eller en egen lösning, rekommenderar vi att du hoppar till avsnittet Webbserver-Plugins nedan. Där visar vi hur du använder Certbots plugins för att få en smidig "one-click" installation och begära certifikat utan att behöva stänga ner webbservern.
HTTP-01 Challenge
Med Certbot installerat kan du nu begära certifikat för dina domäner. I det här exemplet använder vi standalone-läget, vilket innebär att Certbot startar en temporär webbserver för att utföra verifieringen. Det betyder att du måste öppna port 80 i din brandvägg och inte ha någon annan webbserver eller tjänst som körs på port 80, så att den temporära webbservern kan starta och utmaningen kan hämtas (därav HTTP i namnet).
I kommandot nedan använder du parametern --standalone för att tala om för Certbot att använda den temporära webbservern.
# För root-domäner
certbot certonly --standalone -d [din_root_domän] -d www.[din_root_domän]
# För subdomäner
certbot certonly --standalone -d [din_domän]
# Interaktiv installation
certbot certonly --standalone
När kommandot körs kan du behöva gå igenom en första interaktiv setup där du anger en e-postadress för certifikatskommunikation, en valfri mailinglista och godkänner villkoren.
Certbot genererar nu en ACME-utmaning och hostar den via den temporära webbservern. Let's Encrypts servrar försöker sedan hämta denna från din server och om det lyckas skapas certifikaten och sparas i /etc/letsencrypt/live/[din_domän].
Du kan nu använda SSL-certifikaten var du än behöver genom att ange den lokala sökvägen till certifikaten.
TXT DNS-post
Om du har problem med att verifiera din domän via HTTP-01 kan du istället prova DNS-01-metoden som kräver att du skapar en TXT DNS-post med ett värde som Let's Encrypt ger dig.
Som nämnts tidigare stödjer inte denna metod automatisk förnyelse om du inte sätter upp egen infrastruktur för det. Därför rekommenderar vi att använda HTTP-01 när det är möjligt.
I kommandot nedan använder du parametern --preferred-challenges för att tala om för Certbot att du vill använda DNS-01-metoden.
# För root-domäner
certbot certonly --preferred-challenges dns-01 -d [din_root_domän] -d www.[din_root_domän] --manual -m [din_root_domän] -m www.[din_root_domän]
# För subdomäner
certbot certonly --preferred-challenges dns-01 -d [din_domän] --manual -m [din_domän]
# Interaktiv installation
certbot certonly --preferred-challenges dns-01
När kommandot körs kan du behöva gå igenom en första interaktiv setup där du anger en e-postadress för certifikatskommunikation, en valfri mailinglista och godkänner villkoren.
Certbot ger dig sedan instruktioner för att skapa en TXT DNS-post med ett specifikt värde. Målet är oftast _acme-challenge. följt av din domän (t.ex. _acme-challenge.zapdocs.example.com) och värdet får du i konsolen.
När du skapat posten trycker du enter för att fortsätta. Om allt är korrekt och DNS-posten har hunnit spridas, skapas certifikaten och sparas i /etc/letsencrypt/live/[din_domän].
Ha tålamod då DNS-ändringar kan ta lite tid att spridas. Det brukar gå snabbt, men ibland kan det ta längre tid.
Du kan nu använda SSL-certifikaten var du än behöver genom att ange den lokala sökvägen till certifikaten.
Webbserver-Plugins
Certbot har flera olika webbserver-plugins som gör det ännu enklare att hantera certifikat eftersom de automatiskt ändrar serverblocken åt dig. För att använda ett plugin lägger du bara till rätt parameter i ditt certbot-kommando.
Båda metoderna använder HTTP-01-utmaningen och fungerar i princip likadant. När ett plugin används söker Certbot efter serverblocket som innehåller den begärda domänen som server_name. När det hittas genererar Certbot en ACME-utmaning och lägger till en temporär location /.well-known/acme-challenge/... i serverblockets konfiguration.
Let's Encrypts servrar försöker sedan hämta detta från din server och om det lyckas genereras certifikatet och serverblockets konfiguration ändras automatiskt för att använda HTTPS (port 443) och peka på det nya certifikatet.
- Nginx
- Apache
- Webroot
Nginx-plugin
Innan du använder pluginet, se till att det är installerat.
sudo apt install python3-certbot-nginx
För att använda Nginx-pluginet lägger du till parametern --nginx i ditt kommando så här:
# För root-domäner
certbot --nginx -d [din_root_domän] -d www.[din_root_domän]
# För subdomäner
certbot --nginx -d [din_domän]
# Interaktiv installation
certbot --nginx
Vill du stänga av automatisk "one-click" ändring av serverblock från Certbot kan du lägga till certonly i kommandot, t.ex. certbot certonly.
Apache-plugin
Innan du använder pluginet, se till att det är installerat.
sudo apt install python3-certbot-apache
För att använda Apache-pluginet lägger du till parametern --apache i ditt kommando så här:
# För root-domäner
certbot --apache -d [din_root_domän] -d www.[din_root_domän]
# För subdomäner
certbot --apache -d [din_domän]
# Interaktiv installation
certbot --apache
Vill du stänga av automatisk "one-click" ändring av serverblock från Certbot kan du lägga till certonly i kommandot, t.ex. certbot certonly.
Webroot-plugin
Om du kör en egen lokal webbserver som inte använder traditionell mjukvara kan du använda webroot-metoden för att använda din egen webbserver utan att behöva stänga ner den.
För att använda Webroot-pluginet lägger du till parametern --webroot i ditt kommando. Du måste också ange -w [din_webbserver_sökväg] (kort för --webroot-path) som är sökvägen till din webbservers toppkatalog.
# För root-domäner
certbot --webroot -w [din_webbserver_sökväg] -d [din_root_domän] -d www.[din_root_domän]
# För subdomäner
certbot --webroot -w [din_webbserver_sökväg] -d [din_domän]
# Interaktiv installation
certbot --webroot -w [din_webbserver_sökväg]
En vanlig sökväg för webroot är /var/www/html. Du kan även använda detta för webbservrar som Nginx eller Apache om du vill använda webbservern utan att Certbot automatiskt ändrar serverblocken som de inbyggda pluginen gör.
Automatisk förnyelse
I de flesta fall sätter Certbot automatiskt upp förnyelse av certifikat via cronjob och/eller systemd-timer. Du kan testa detta med kommandot nedan som använder --dry-run för att simulera processen.
certbot renew --dry-run
Som sagt tidigare stödjer inte DNS-01-metoden automatisk förnyelse via Certbot om du inte har egen infrastruktur för det. Därför rekommenderar vi att använda HTTP-01-metoden.
Om allt är korrekt ska detta lyckas. Vill du se eller ändra inställningarna för automatisk förnyelse hittar du kommandot i någon av dessa platser: /etc/crontab/, /etc/cron.*/* eller via systemctl list-timers.
Manuell cronjob-setup
Om automatisk förnyelse inte är satt upp kan du lägga till det själv via cronjob. Öppna crontab med crontab -e. Om det är första gången kan du bli ombedd att välja en editor – välj första alternativet som brukar vara /bin/nano.
När filen är öppen i nano, lägg till följande rad för att köra förnyelsen varje dag kl 06:00 lokal tid.
0 6 * * * certbot renew
Spara och avsluta nano med CTRL + X, tryck Y för att bekräfta och sedan ENTER.
Avslutning
Du har nu framgångsrikt satt upp Certbot för dina domäner via flera metoder som standalone, webroot eller via plugins, och gett din webbplats säker dataöverföring via HTTPS. Har du fler frågor eller behöver hjälp, tveka inte att kontakta vår support som finns tillgänglig varje dag för att hjälpa dig! 🙂