Dedicated Server: Certbot installeren op Linux
Deze handleiding is gemaakt met de volgende producten:
(Details kunnen verschillen bij producten van verschillende aanbieders, maar de hoofdconcepten blijven hetzelfde)
Introductie
SSL-certificaten zijn onmisbaar op het internet en zorgen ervoor dat data veilig wordt verzonden tussen client en host. In deze gids laten we zien hoe je de open-source tool Certbot instelt om gratis SSL-certificaten aan te vragen bij de non-profit certificaatautoriteit Let's Encrypt.
Voorbereiding
Om Certbot te gebruiken heb je een Linux-server nodig en een domein dat je bezit. Je moet toegang hebben tot de DNS-instellingen van het domein en je moet een A DNS-record aanmaken dat verwijst naar het IP-adres van je Linux-server voor elk rootdomein of subdomein dat je wilt gebruiken.
Certbot heeft ook extra plugins waarmee je met één klik een certificaat kunt instellen voor domeinen die werken met verschillende webservers zoals Nginx of Apache. Wij raden Nginx aan omdat het een snelle en populaire open-source webserver is. Bekijk onze Linux reverse proxy gids voor hulp bij het instellen hiervan.
Installatie
Begin met het installeren van het open-source Certbot pakket, waarmee je gratis SSL-certificaten van Let's Encrypt kunt aanvragen.
sudo apt install certbot
Nu Certbot geïnstalleerd is, kun je certificaten aanvragen voor je domein(en). Let's Encrypt en Certbot bieden verschillende ACME-uitdagingen (Challenges) om het eigenaarschap van het domein te verifiëren.
Wij raden sterk aan om de standaard HTTP-01 methode te gebruiken omdat deze automatische verlenging ondersteunt. Mocht je hier problemen mee hebben, dan kun je als alternatief de DNS-01 methode proberen. Deze is handmatig en ondersteunt geen automatische verlengingen omdat het werkt via een TXT DNS-record.
Als je een webserver zoals Nginx, Apache of een eigen webserver gebruikt, raden we aan om naar de sectie Webserver Plugins hieronder te gaan. Daar leggen we uit hoe je extra Certbot-plugins gebruikt voor een "one-click" installatie en het aanvragen van certificaten zonder je webserver uit te hoeven schakelen.
HTTP-01 Challenge
Met Certbot geïnstalleerd kun je nu certificaten aanvragen voor je domein(en). In dit voorbeeld gebruiken we de standalone modus, wat betekent dat Certbot tijdelijk een webserver start om de benodigde acties uit te voeren. Dit betekent dat je poort 80 in je firewall open moet zetten en dat er geen andere webservers of services op poort 80 mogen draaien, zodat de tijdelijke webserver kan starten en de challenge opgehaald kan worden (vandaar de HTTP in de naam).
In het volgende commando gebruik je de --standalone parameter om Certbot te vertellen dat je de tijdelijke webserver wilt gebruiken.
# Voor rootdomeinen
certbot certonly --standalone -d [jouw_root_domein] -d www.[jouw_root_domein]
# Voor subdomeinen
certbot certonly --standalone -d [jouw_domein]
# Interactieve setup
certbot certonly --standalone
Na het uitvoeren van het commando volg je mogelijk een eerste interactieve setup waarin je een e-mailadres invoert voor communicatie over het certificaat, gevolgd door een optionele mailinglijst en de algemene voorwaarden die je moet accepteren.
Certbot genereert nu een ACME Challenge en host deze via de tijdelijke webserver. De Let's Encrypt-servers proberen deze op te halen van jouw server en bij succes worden de certificaten aangemaakt en opgeslagen in /etc/letsencrypt/live/[jouw_domein].
Je kunt de SSL-certificaten nu overal gebruiken door simpelweg het lokale pad naar de certificaten te geven.
TXT DNS-record
Als je problemen hebt met de verificatie via de HTTP-01 methode, kun je als alternatief de DNS-01 methode proberen. Hierbij maak je een TXT DNS-record aan met een waarde die Let's Encrypt je geeft.
Zoals eerder genoemd ondersteunt deze methode geen automatische verlenging, tenzij je zelf een infrastructuur opzet om dit te beheren. Daarom raden we aan waar mogelijk de HTTP-01 methode te gebruiken.
In het volgende commando gebruik je de --preferred-challenges parameter om Certbot te vertellen dat je de DNS-01 methode wilt gebruiken.
# Voor rootdomeinen
certbot certonly --preferred-challenges dns-01 -d [jouw_root_domein] -d www.[jouw_root_domein] --manual -m [jouw_email]
# Voor subdomeinen
certbot certonly --preferred-challenges dns-01 -d [jouw_domein] --manual -m [jouw_email]
# Interactieve setup
certbot certonly --preferred-challenges dns-01
Na het uitvoeren van het commando volg je mogelijk een eerste interactieve setup waarin je een e-mailadres invoert voor communicatie over het certificaat, gevolgd door een optionele mailinglijst en de algemene voorwaarden die je moet accepteren.
Certbot geeft je nu instructies om een TXT DNS-record aan te maken met een specifieke waarde. De naam van het record is meestal _acme-challenge. gevolgd door je domein (bijvoorbeeld _acme-challenge.zapdocs.example.com) en de waarde wordt in de console getoond.
Zodra je het record hebt aangemaakt, druk je op enter om door te gaan. Als alles klopt en is gepropageerd, worden de certificaten aangemaakt en opgeslagen in /etc/letsencrypt/live/[jouw_domein].
Wees geduldig, want DNS-record wijzigingen kunnen even duren om te propagateren. Meestal gaat dit binnen enkele minuten, maar soms kan het langer duren.
Je kunt de SSL-certificaten nu overal gebruiken door simpelweg het lokale pad naar de certificaten te geven.
Webserver Plugins
Certbot heeft verschillende extra webserver plugins die het beheren van certificaten nog makkelijker maken, omdat ze automatisch de relevante serverblokken aanpassen. Om een plugin te gebruiken voeg je simpelweg de juiste parameter toe aan je certbot commando.
Beide methodes gebruiken de HTTP-01 challenge en werken vrijwel hetzelfde. Wanneer een plugin wordt gebruikt, zoekt Certbot eerst het serverblok dat het gevraagde domein bevat als server_name. Vervolgens genereert Certbot een ACME Challenge en voegt een tijdelijke location /.well-known/acme-challenge/... locatie toe aan de serverblokconfiguratie.
De Let's Encrypt-servers proberen dit op te halen van jouw server en bij succes wordt het certificaat gegenereerd. De serverblokconfiguratie wordt automatisch aangepast om HTTPS (poort 443) te gebruiken en de paden naar het nieuwe certificaat toe te voegen.
- Nginx
- Apache
- Webroot
Nginx Plugin
Zorg eerst dat de plugin geïnstalleerd is.
sudo apt install python3-certbot-nginx
Gebruik de --nginx parameter om de Nginx plugin te activeren.
# Voor rootdomeinen
certbot --nginx -d [jouw_root_domein] -d www.[jouw_root_domein]
# Voor subdomeinen
certbot --nginx -d [jouw_domein]
# Interactieve setup
certbot --nginx
Wil je dat Certbot geen automatische aanpassingen maakt aan je serverblokken, voeg dan certonly toe aan het commando, bijvoorbeeld certbot certonly.
Apache Plugin
Zorg eerst dat de plugin geïnstalleerd is.
sudo apt install python3-certbot-apache
Gebruik de --apache parameter om de Apache plugin te activeren.
# Voor rootdomeinen
certbot --apache -d [jouw_root_domein] -d www.[jouw_root_domein]
# Voor subdomeinen
certbot --apache -d [jouw_domein]
# Interactieve setup
certbot --apache
Wil je dat Certbot geen automatische aanpassingen maakt aan je serverblokken, voeg dan certonly toe aan het commando, bijvoorbeeld certbot certonly.
Webroot Plugin
Als je een eigen webserver draait die niet de standaard software gebruikt, kun je de webroot-methode gebruiken om je eigen webserver te blijven gebruiken zonder deze te stoppen.
Gebruik de --webroot parameter en geef met -w [pad_naar_webroot] (kort voor --webroot-path) het pad naar de hoofdmap van je webserver op.
# Voor rootdomeinen
certbot --webroot -w [pad_naar_webroot] -d [jouw_root_domein] -d www.[jouw_root_domein]
# Voor subdomeinen
certbot --webroot -w [pad_naar_webroot] -d [jouw_domein]
# Interactieve setup
certbot --webroot -w [pad_naar_webroot]
Een veelgebruikte webroot-locatie is /var/www/html. Dit kun je ook gebruiken voor webservers zoals Nginx of Apache als je wel de webserver wilt gebruiken, maar geen automatische serverblok-aanpassingen wilt zoals de native plugins bieden.
Automatische verlenging
In de meeste gevallen zet Certbot automatisch de verlenging van certificaten voor je op via een cronjob en/of systemd timer. Je kunt dit testen met het volgende commando dat de --dry-run parameter gebruikt.
certbot renew --dry-run
Zoals eerder genoemd ondersteunt de DNS-01 methode geen automatische verlenging via Certbot, tenzij je zelf een infrastructuur opzet om dit te beheren. Daarom raden we aan waar mogelijk de HTTP-01 methode te gebruiken.
Als alles goed is ingesteld, zal dit succesvol zijn. Wil je de automatische verlenging bekijken of aanpassen, dan vind je het commando in een van de volgende locaties: /etc/crontab/, /etc/cron.*/* of via systemctl list-timers.
Handmatige cronjob instellen
Als de automatische verlenging om wat voor reden dan ook niet is ingesteld, kun je dit zelf toevoegen via een cronjob. Open de crontab met crontab -e. Als dit de eerste keer is, wordt je gevraagd een editor te kiezen. Kies de eerste optie, meestal /bin/nano.
Voeg in het geopende bestand de volgende regel toe om de verlenging elke dag om 6 uur 's ochtends lokaal uit te voeren.
0 6 * * * certbot renew
Sla het bestand op en sluit nano af met CTRL + X, gevolgd door Y om te bevestigen en dan ENTER.
Conclusie
Je hebt Certbot succesvol ingesteld voor je domein(en) via verschillende methodes zoals standalone, webroot of een van de plugins, waardoor je website nu veilig data verzendt via HTTPS. Heb je nog vragen of hulp nodig? Neem gerust contact op met onze support, die dagelijks voor je klaarstaat! 🙂