Introductie
Let’s Encrypt is een Certificate Authority (CA) die een eenvoudige manier biedt om gratis TLS/SSL-certificaten te verkrijgen en te installeren, waardoor versleuteld HTTPS op webservers mogelijk wordt. Het vereenvoudigt het proces door een softwareclient, Certbot genaamd, te bieden die probeert de meeste (zo niet alle) benodigde stappen te automatiseren. Momenteel is het hele proces van het verkrijgen en installeren van een certificaat volledig geautomatiseerd op zowel Apache als Nginx.
In deze tutorial zul je Certbot gebruiken om een gratis SSL-certificaat te verkrijgen voor Nginx op Ubuntu 20.04 en je certificaat zo instellen dat het automatisch wordt vernieuwd.
Deze tutorial zal een apart Nginx-serverconfiguratiebestand gebruiken in plaats van het standaardbestand. We raden aan om nieuwe Nginx-serverblokbestanden te maken voor elk domein omdat dit helpt om veelvoorkomende fouten te voorkomen en de standaardbestanden te behouden als een fallback-configuratie.
Laat DigitalOcean zich zorgen maken over het beheren van Nginx en Let’s Encrypt. DigitalOcean App Platform stelt je in staat om rechtstreeks vanuit GitHub te implementeren in enkele minuten. App Platform zal ook SSL-certificaten en routering voor je afhandelen.
Vereisten
Om deze handleiding te volgen, heb je nodig:
-
Een Ubuntu 20.04-server die is ingesteld door deze oorspronkelijke serverconfiguratie voor Ubuntu 20.04 handleiding te volgen, inclusief een sudo-geactiveerde niet-root-gebruiker en een firewall.
-
Een geregistreerde domeinnaam. Deze handleiding zal
example.com
gebruiken. Je kunt een domeinnaam kopen bij Namecheap, er een gratis krijgen bij Freenom, of de domeinregistrar van je keuze gebruiken. -
Beide van de volgende DNS-records ingesteld voor je server. Als je DigitalOcean gebruikt, zie dan onze DNS-documentatie voor details over hoe je ze kunt toevoegen.
- Een A-record met
example.com
dat wijst naar het publieke IP-adres van je server. - Een A-record met
www.example.com
dat wijst naar het publieke IP-adres van je server.
- Een A-record met
-
Nginx geïnstalleerd door Hoe Nginx te installeren op Ubuntu 20.04 te volgen. Zorg ervoor dat u een serverblok heeft voor uw domein. Deze handleiding zal
/etc/nginx/sites-available/example.com
als voorbeeld gebruiken.
Stap 1 — Certbot installeren
De eerste stap om Let’s Encrypt te gebruiken om een SSL-certificaat te verkrijgen, is het installeren van de Certbot-software op uw server.
Installeer Certbot en de bijbehorende Nginx-plugin met apt
:
Certbot is nu klaar voor gebruik, maar om SSL automatisch te configureren voor Nginx, moeten we enkele configuraties van Nginx verifiëren.
Stap 2 — Bevestigen van de Nginx-configuratie
Certbot moet het juiste server
-blok in uw Nginx-configuratie kunnen vinden om automatisch SSL te kunnen configureren. Dit doet het specifiek door te zoeken naar een server_name
-instructie die overeenkomt met het domein waarvoor u een certificaat aanvraagt.
Als u de stap voor het instellen van het serverblok in de Nginx-installatietutorial heeft gevolgd, zou u een serverblok voor uw domein moeten hebben op /etc/nginx/sites-available/voorbeeld.com
met de server_name
-instructie al juist ingesteld.
Om te controleren, opent u het configuratiebestand voor uw domein met nano
of uw favoriete teksteditor:
Zoek de bestaande server_name
-regel. Deze moet er zo uitzien:
Als dat het geval is, sluit dan uw editor af en ga verder met de volgende stap.
Als dit niet het geval is, werk het dan bij om overeen te komen. Sla vervolgens het bestand op, sluit je editor af en controleer de syntaxis van je configuratiebewerkingen:
Als je een foutmelding krijgt, open dan het serverblokbestand opnieuw en controleer op eventuele typfouten of ontbrekende tekens. Zodra de syntaxis van je configuratiebestand correct is, herlaad Nginx om de nieuwe configuratie te laden:
Certbot kan nu het juiste server
-blok vinden en het automatisch bijwerken.
Vervolgens zullen we de firewall bijwerken om HTTPS-verkeer toe te staan.
Stap 3 — HTTPS toestaan via de firewall
Als je de ufw
-firewall hebt ingeschakeld, zoals aanbevolen door de vereiste handleidingen, moet je de instellingen aanpassen om HTTPS-verkeer toe te staan. Gelukkig registreert Nginx bij installatie enkele profielen bij ufw
.
Je kunt de huidige instellingen zien door het volgende te typen:
Het zal waarschijnlijk zo lijken, wat betekent dat alleen HTTP-verkeer naar de webserver wordt toegestaan:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
Om ook HTTPS-verkeer toe te laten, sta het Nginx Full-profiel toe en verwijder de overbodige toestemming voor het Nginx HTTP-profiel:
Je status zou er nu zo uit moeten zien:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx Full (v6) ALLOW Anywhere (v6)
Als laatste, laten we Certbot uitvoeren en onze certificaten ophalen.
Stap 4 — Het verkrijgen van een SSL-certificaat
Certbot biedt verschillende manieren om SSL-certificaten te verkrijgen via plugins. De Nginx-plugin zal zorgen voor het herconfigureren van Nginx en het herladen van de configuratie indien nodig. Om deze plugin te gebruiken, typ het volgende:
Dit voert certbot
uit met de --nginx
plugin, waarbij -d
wordt gebruikt om de domeinnamen op te geven waarvoor het certificaat geldig moet zijn.
Als dit de eerste keer is dat u certbot
uitvoert, wordt u gevraagd om een e-mailadres in te voeren en akkoord te gaan met de gebruiksvoorwaarden. Na het doen hiervan zal certbot
communiceren met de Let’s Encrypt-server, vervolgens een uitdaging uitvoeren om te verifiëren dat u controle heeft over het domein waarvoor u een certificaat aanvraagt.
Als dat succesvol is, zal certbot
vragen hoe u uw HTTPS-instellingen wilt configureren.
OutputPlease choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
Selecteer uw keuze en druk op ENTER
. De configuratie wordt bijgewerkt en Nginx zal worden herladen om de nieuwe instellingen op te pikken. certbot
zal eindigen met een bericht waarin staat dat het proces succesvol was en waar uw certificaten zijn opgeslagen:
OutputIMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/example.com/privkey.pem
Your cert will expire on 2020-08-18. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* of
your certificates, run "certbot renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
Uw certificaten zijn gedownload, geïnstalleerd en geladen. Probeer uw website opnieuw te laden met https://
en let op de beveiligingsindicator van uw browser. Het zou moeten aangeven dat de site goed beveiligd is, meestal met een slotpictogram. Als u uw server test met de SSL Labs Server Test, krijgt deze een A graad.
Laten we eindigen met het testen van het vernieuwingsproces.
Stap 5 — Verifiëren van Certbot Automatische Vernieuwing
De certificaten van Let’s Encrypt zijn slechts geldig voor negentig dagen. Dit is om gebruikers aan te moedigen hun vernieuwingsproces van het certificaat te automatiseren. Het certbot
-pakket dat we hebben geïnstalleerd, zorgt hiervoor door een systemd-timer toe te voegen die twee keer per dag wordt uitgevoerd en automatisch elk certificaat vernieuwt dat binnen dertig dagen verloopt.
U kunt de status van de timer opvragen met systemctl
:
Output● certbot.timer - Run certbot twice daily
Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled)
Active: active (waiting) since Mon 2020-05-04 20:04:36 UTC; 2 weeks 1 days ago
Trigger: Thu 2020-05-21 05:22:32 UTC; 9h left
Triggers: ● certbot.service
Om het vernieuwingsproces te testen, kunt u een droge run uitvoeren met certbot
:
Als u geen fouten ziet, bent u klaar. Wanneer nodig, zal Certbot uw certificaten vernieuwen en Nginx opnieuw laden om de wijzigingen op te halen. Als het geautomatiseerde vernieuwingsproces ooit mislukt, stuurt Let’s Encrypt een bericht naar het opgegeven e-mailadres om u te waarschuwen wanneer uw certificaat bijna verloopt.
Conclusie
In deze tutorial heb je de Let’s Encrypt-client certbot
geïnstalleerd, SSL-certificaten gedownload voor je domein, Nginx geconfigureerd om deze certificaten te gebruiken, en automatische vernieuwing van certificaten ingesteld. Als je verdere vragen hebt over het gebruik van Certbot, is de officiële documentatie een goede plek om te beginnen.