Let's Encrypt SSL på Ubuntu 18.04 - 20.04 - 22.04 (nginx eller apache) - UPDATED!

Let's Encrypt SSL på Ubuntu 18.04 - 20.04 - 22.04 (nginx eller apache) - UPDATED!

Guide til Ubuntu 18.04 - 20.04 - 22.04, der forklarer hvordan du installerer et SSL-certifikat via certbot på din Linux web-server

Denne guide er skrevet til ubuntu 20.04, og forklarer hvordan du installerer et gratis SSL certifikat via lets encrypt på din linux webserver - I dette tilfælde nginx eller apache. - Disse kommandoer skal køres fra din shell.

Før vi går igang, skal følgende være i orden:

  • Du skal have Ubuntu 20.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! Config skal inkludere både uden www og med www. - I dette tilfælde bruger vi "example.com 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> 

Sådan installeres nemt et Lets Encrypt certifikat for Apache

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

Sådan installeres nemt et Lets Encrypt certifikat for Nginx

Alternativ: 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

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

Hvis du skulle have brug for hjælp. Så smid en kommentar :)

Sådan! Betal dernæst for at få fuld adgang til FutureNode.dk.
Velkommen tilbage! Du er nu logget ind.
Du er nu medlem på FutureNode.dk.
Sådan! Din konto er fuldt aktiveret. Du har nu adgang til alt indholdet samt alle funktioner.
Sådan! Dine faktureringsoplysninger er blevet opdateret.
Dine faktureringsoplysninger blev ikke opdateret.