Let’s Encrypt kan niet op lokale servers? Nou, Dus wel!

Lees jij ook overal dat Letsencrypt niet op een lokale server kan?
Lees jij ook dat het soms wel kan maar dan moet de server wel aan het internet?
Ga jij echt poorten forwarden naar een Raspberry Pi?

We gaan er hier wel van uit dat je enige ‘basis’ kennis hebt van DNS instellingen en bekend bent met het gebruik van SSH naar je lokale server.

Lees eerst even verder en zie hoe het WEL kan zonder risico’s!
(uiteraard zijn er altijd risico’s, je bent zelf verantwoordelijk voor het beperken daarvan!)
Al onze lokale (Raspberry) servers zijn voorzien van LetsEncrypt SSL Certificaten, en nee niet 1 van deze servers hangt aan een open poort aan het internet. Sterker nog, alle poorten zitten pot dicht!

Om dit te realiseren gaan we gebruik maken van een Wildcard certificaat.
Laten we uitgaan van een domein dat wel op internet te vinden is. Het gaat hier uiteraard wel om een domein dat je zelf beheerd. Als voorbeeld nemen we “domein.tld” Dit domein moet wel bereikbaar zijn en je moet wijzigingen kunnen aanbrengen in de dns instellingen.

In dit voorbeeld gaan we gebruik maken van een subdomein dat ingesteld is voor alle lokale dns benamingen.
Dat houd in dat we “sub.domein.tld” hebben toegewezen aan ons lokale netwerk. Uiteraard dien je “sub.domein.tld” te vervangen met je eigen domeinnaam.
Hiervoor hebben we het volgende gedaan:

De dns instellingen gemaakt voor het subdomein:
Naam: sub
Priority: 0
Type: A
Value: IP-Adres (mag van alles zijn)
TTL: Zo laag mogelijk (b.v. 120)
Hiermee hebben we een sub domein aangemaakt dat ‘vindbaar’ is op het web.

In ons geval is alles geïnstalleerd op een Raspberry Pi 4. Uiteraard kun je de installatie uitvoeren op elke willekeurige server software. We gaan er hier echter wel vanuit dat je al een werkende webserver hebt in je lokale netwerk.
In dit voorbeeld is dat Nginx.

Installeren van Certbot:

sudo apt update
sudo apt install python-certbot-nginx

Certificaat aanvragen:

sudo certbot --server https://acme-v02.api.letsencrypt.org/directory --manual --preferred-challenges dns  --installer nginx -d *.sub.domein.tld

Uiteraard dien je “*.sub.domein.tld” te vervangen met je eigen domeinnaam.

Je zult gevraagd worden naar je mailadres i.v.m. notificaties voor o.a. het verlengen van het certificaat.
Lees de voorwaarden en beantwoord alle daaropvolgende vragen.
Vervolgens komt de vraag om een TXT record toe te voegen aan je dns instellingen.
Naam: _acme-challenge.sub (sub weer vervangen door je eigen keuze)
Priority: 0
Type: TXT
Value: << Vul hier de tekens in die je zojuist in je scherm hebt zien verschijnen
TTL: Zo laag mogelijk (b.v. 120)
Controleer met behulp van deze site (Link) of je TXT record goed is ingesteld.
Vul als ‘domain name’ _acme-challenge.sub.domein.tld in. LET OP dat is inclusief de “_” aan het begin!!

Als alles correct werkt klik je op ENTER.

Vervolgens kun je alle daarop volgende vragen met ENTER bevestigen (Tenzij je de geboden opties anders wenst)
Alles zal nu automatisch worden ingesteld voor je lokale Nginx Raspberry Pi Server.

Uiteraard is er veel te zeggen over het gebruik van Wildcard Certificaten.
De 1 zal het vervloeken de ander zal er het voordeel van inzien.
Onder aan de streep beslis je zelf over de optie om het al dan niet toe te passen.

Je hebt ook de optie om i.p.v *.sub.domein.tld gebruik te maken van *.domein.tld. Let er echter wel op dat als je domein.tld al hebt voorzien van een SSL Certificaat dat deze dan wel aangepast moet gaan worden, het bestaande certificaat zal namelijk komen te vervallen (ingetrokken worden).

Hoe wij het SSL Certificaat ‘verdelen’ over alle andere lokale servers lees je later in een ander bericht.
zodra die online staat vind je hier de link