Denne guide er skrevet til ubuntu 18.04, 20.04 samt 22.04, og forklarer hvordan du installerer et gratis SSL certifikat via lets encrypt på din linux webserver – I dette tilfælde nginx eller apache. – Alle kommandoer skal køres fra din shell.
Før vi går igang, skal følgende være i orden:
- Du skal have Ubuntu 18.04, 20.04 eller 22.04 som styresystem samt nginx eller apache som webserver.
- Du skal bruge sudo foran dine kommandoer, hvis du ikke er logget på med root.
- Du skal have et domæne eller subdomæne som peger på serverens IP-adresse, således du kan tilgå serveren på ex. example.com eller eller subdomain.example.com
- VIGTIG NGINX – Tag en backup af dine nginx config filer, som du i dette tilfælde finder her:
/etc/nginx/sites-enabled
(De kan også ligge et andet sted)
- VIGTIG APACHE – Tag en backup af dine apache config filer, som du i dette tilfælde finder her:
/etc/apache2/sites-enabled
(De kan også ligge et andet sted)
Lad os komme i gang 🙂
1: Connect til din webserver via SSH. Enten som ROOT eller med en bruger som har sudo rettigheder.
Jeg kan varmt anbefale, at du bruger “mobaxterm” som SSH klient. (Mobaxterm findes i en gratis version)
2: Opdatere snapd til den nyeste version med denne kommando
sudo snap install core; sudo snap refresh core
3: Hvis du kører en gammel version af certbot, skal du afinstallere den først via denne komando.
sudo apt-get remove certbot
4: Installer nu den nye version af Certbot der bliver udgivet på snap
sudo snap install --classic certbot
5: Kør nu denne kommando for at sikre, at certbot kommandoen virker efter hensigten
sudo ln -s /snap/bin/certbot /usr/bin/certbot
6: Du kan nu få certbot til at installere SSL certifikat automatisk via dine Nginx eller Apache configs.
Inden du kører certbot! (Nginx)
Inden du kører Certbot, skal du være sikker på, at “server_name” er korrekt sat op – Det vil ca se sådan ud! I dette tilfælde bruger vi “example.com samt www.example.com” – Yderlige skal “Root” pege på den mappe hvor dine filer ligger. I denne config bruger vi “/var/www/html”
server { listen 80; listen [::]:80; # Declare the domain name of the website server_name example.com www.example.com; # Declare the document root directory root /var/www/html; index index.html index.php; # Pass PHP files to PHP-FPM listening on /run/php/php7.4-fpm.sock location ~ \.php$ { try_files $uri =404; # Mitigate https://httpoxy.org/ vulnerabilities fastcgi_param HTTP_PROXY ""; fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_index index.php; include fastcgi.conf; } }
Inden du kører certbot! (Apache)
Inden du kører Certbot, skal du være sikker på, at “ServerName” samt “ServerAlias” er korrekt sat op – Det vil ca se sådan ud som vist neden under. – I dette tilfælde bruger vi “example.com – – Yderlige skal “DocumentRoot” pege på den mappe du vil bruge. I denne config bruger vi “/var/www/html”
<VirtualHost *:80> ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/html <Directory /var/www/html> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> <FilesMatch ".php$"> SetHandler "proxy:unix:/var/run/php/php7.4-fpm.sock|fcgi://localhost/" </FilesMatch> </VirtualHost>
Hvis du bruger Nginx som webserver, læs her:
Hvis du har fulgt guiden indtil nu, kan du nu skrive: sudo certbot --nginx
og følge guiden for at installere et ssl certificat til nginx
Hvis du bruger Apache som webserver, læs her:
Hvis du har fulgt guiden indtil nu, kan du nu skrive: sudo certbot --apache
og følg guiden for at installere et ssl certificat til apache
En alternativ måde at gøre det på:
Nginx:
sudo certbot --nginx --redirect -d example.com -d www.example.com -m admin@example.com --agree-tos
Apache:
sudo certbot --apache --redirect -d example.com -d www.example.com -m admin@example.com --agree-tos
Hvad betyder det?
- –nginx eller –apache = Vælger nginx eller apache som web-server
- –redirect = Videre stiller auto http til -> https
- -d = Vælger de domæner du vil oprette et SSL certifikat til. I Dette tilfælde: example.com samt www.example.com
- -m = sætter din mail – Den bliver brugt til at modtage besked fra certbot ang. fornyelse
- –agree-tos = aceptere TOS (terms of service)
Andre styresystemer / webserver software
Der findes flere guides på certbots hjemmeside! Den viser hvordan du udsteder SSL certifikater til andre styresystemer samt webserver! De er dog på engesk!
Find dem på denne side: https://certbot.eff.org/
Andre nyttige kommandoer
Skal du bruge SSL certifikater til andet software, kan du udstede en “standalone” certifikat med denne kommando.
sudo certbot certonly --standalone --preferred-challenges http -d server.example.com
OBS “server.example.com” skal udskiftes med din egen adresse!
OBS #1 Du kan skrive: certbot --help
for at se alle kommandoer du kan bruge!
Renew:
Certbot skulle gerne forny dine certifikater automatisk. Hvis du løber ind i problemer, kan du forny dem manuelt.
Det gør du med denne kommando sudo certbot renew
Certbot vil nu tjekke alle dine certifikater om det er tid til at forny certifikatet samt forny det hvis muligt.
Du kan også vælge et bestemt certifikat med denne komando
sudo certbot renew --certificat -name example.com
Force – Renew:
Hvis du ønsker at tvinge opdating af certfikater af en eller alle dine certifikater, kan du bruge følgene kommandoer
sudo certbot renew --force-renew
Du kan også tvinge certbot til at opdatere et bestemt certifikat med denne kommando
sudo certbot renew --force-renew --cert-name example.com
Slet et certifikat
Hvis du vil slette et SSL certifikat som er udstedt, kan du bruge denne komando
sudo certbot delete
Eller du kan bruge denne kommando
sudo certbot delete --cert-name example.com
Bonus info
Hvis du er i tvivl om hvor certifikat- filerne bliver gemt, er her en liste:
- /etc/letsencrypt/archive
- /etc/letsencrypt/live
- /etc/letsencrypt/renewal