Een introductie tot Let’s Encrypt

Introductie

Let’s Encrypt is een open en geautomatiseerde certificaatautoriteit die het ACME (Automatische Certificaatbeheeromgeving)-protocol gebruikt om gratis TLS/SSL-certificaten te verstrekken aan elke compatibele client. Deze certificaten kunnen worden gebruikt om communicatie tussen uw webserver en uw gebruikers te versleutelen. Er zijn tientallen clients beschikbaar, geschreven in verschillende programmeertalen, en veel integraties met populaire beheertools, services en servers.

De meest populaire ACME-client, Certbot, wordt nu ontwikkeld door de Electronic Frontier Foundation. Naast het verifiëren van domeineigendom en het ophalen van certificaten, kan Certbot TLS/SSL automatisch configureren op zowel Apache– als Nginx-webservers.

Deze tutorial zal kort certificaatautoriteiten bespreken en hoe Let’s Encrypt werkt, en vervolgens enkele populaire ACME-clients bekijken.

Wat is een certificaatautoriteit?

Certificaatautoriteiten (CAs) zijn entiteiten die TLS/SSL-certificaten cryptografisch ondertekenen om hun authenticiteit te waarborgen. Browsers en besturingssystemen hebben een lijst van vertrouwde CAs die ze gebruiken om de certificaten van sites te verifiëren.

Tot voor kort waren de meeste CAs commerciële bedrijven die geld vroegen voor hun verificatie- en ondertekendiensten. Let’s Encrypt heeft dit proces gratis gemaakt voor gebruikers door de procedure volledig te automatiseren en door te vertrouwen op sponsoring en donaties om de benodigde infrastructuur te financieren.

Voor meer informatie over certificaten en de verschillende soorten certificaatautoriteiten kunt u “Een vergelijking van Let’s Encrypt, commerciële en particuliere certificaatautoriteiten, en zelfondertekende SSL-certificaten” lezen.

Vervolgens zullen we kijken naar hoe Let’s Encrypt geautomatiseerde domeinverificatie uitvoert.

Hoe Let’s Encrypt Werkt

Het ACME-protocol van Let’s Encrypt definieert hoe klanten communiceren met zijn servers om certificaten aan te vragen, domeineigendom te verifiëren en certificaten te downloaden. Het is momenteel bezig met het worden van een officiële IETF-standaard.

Let’s Encrypt biedt domein-gevalideerde certificaten aan, wat betekent dat ze moeten controleren dat het certificaatverzoek afkomstig is van een persoon die daadwerkelijk controle heeft over het domein. Ze doen dit door de client een unieke token te sturen en vervolgens een web- of DNS-verzoek te doen om een sleutel af te halen die is afgeleid van die token.

Bijvoorbeeld, met de op HTTP gebaseerde uitdaging, berekent de client een sleutel uit de unieke token en een accounttoken, en plaatst vervolgens de resultaten in een bestand dat door de webserver wordt geserveerd. De Let’s Encrypt-servers halen vervolgens het bestand op via http://voorbeeld.com/.well-known/acme-challenge/token. Als de sleutel correct is, heeft de client bewezen dat hij middelen op voorbeeld.com kan beheren, en zal de server een certificaat ondertekenen en retourneren.

Het ACME-protocol definieert meerdere uitdagingen die uw client kan gebruiken om eigendom van het domein te bewijzen. De HTTPS-uitdaging is vergelijkbaar met HTTP, behalve dat de client in plaats van een tekstbestand een zelfondertekend certificaat met de sleutel zal verstrekken. De DNS-uitdaging zoekt naar de sleutel in een DNS TXT-record.

De Certbot Let’s Encrypt Client

Certbot is veruit de meest populaire Let’s Encrypt-client. Het is opgenomen in de meeste belangrijke Linux-distributies en bevat handige automatische configuratiemogelijkheden voor Apache en Nginx. Nadat het is geïnstalleerd, kan het ophalen van een certificaat en het bijwerken van uw Apache-configuratie als volgt worden gedaan:

  1. sudo certbot --apache -d www.example.com

Certbot zal een paar vragen stellen, de uitdaging uitvoeren, certificaten downloaden, uw Apache-configuratie bijwerken en de server herladen. U zou dan met uw webbrowser naar https://www.example.com moeten kunnen navigeren. Er zal een groen slotje verschijnen dat aangeeft dat het certificaat geldig is en de verbinding versleuteld is.

Omdat Let’s Encrypt-certificaten slechts geldig zijn gedurende negentig dagen, is het belangrijk om een geautomatiseerd vernieuwingsproces in te stellen. Het volgende commando zal alle certificaten op een machine vernieuwen:

  1. sudo certbot renew

Zet het bovenstaande commando in een crontab om het elke dag uit te voeren, en certificaten zullen automatisch vernieuwd worden dertig dagen voordat ze verlopen. Als een certificaat aanvankelijk is aangemaakt met de opties --apache of --nginx, zal Certbot de server herladen na een succesvolle vernieuwing.

Als u meer wilt weten over cron en crontabs, raadpleeg dan de tutorial “Hoe Cron te Gebruiken om Taken te Automatiseren.”

Andere Clients

Omdat het ACME-protocol open en goed gedocumenteerd is, zijn er veel alternatieve clients ontwikkeld. Let’s Encrypt onderhoudt een lijst van ACME-clients op hun website. De meeste andere clients hebben niet de automatische webserverconfiguratiefuncties van Certbot, maar ze hebben andere functies die u mogelijk aanspreken:

  • Er is een client geschreven in bijna elke programmeertaal, inclusief shell scripts, Go en Node.js. Dit kan belangrijk zijn als u certificaten maakt in een beperkte omgeving en liever geen Python en andere Certbot-afhankelijkheden wilt opnemen
  • Sommige clients kunnen worden uitgevoerd zonder root privileges. Het is over het algemeen een goed idee om zo min mogelijk code met privileges uit te voeren
  • Veel clients kunnen de DNS-gebaseerde uitdaging automatiseren door de API van uw DNS-provider te gebruiken om automatisch de juiste TXT-record aan te maken. De DNS-uitdaging maakt het mogelijk om enkele lastigere gebruiksscenario’s mogelijk te maken, zoals het versleutelen van webservers die niet openbaar toegankelijk zijn.
  • Sommige clients zijn eigenlijk geïntegreerd in webservers, omgekeerde proxies of load balancers, waardoor het extra eenvoudig is om te configureren en implementeren

Enkele van de meer populaire clients zijn:

  • lego: Geschreven in Go, lego is een één-bestands binaire installatie en ondersteunt veel DNS-providers bij gebruik van de DNS-uitdaging
  • acme.sh: acme.sh is een eenvoudig shell-script dat kan worden uitgevoerd in niet-geprivilegieerde modus en kan ook communiceren met meer dan 30 DNS-providers
  • Caddy: Caddy is een volledige webserver geschreven in Go met ingebouwde ondersteuning voor Let’s Encrypt.

Er zijn nog veel meer clients beschikbaar, en veel andere servers en services automatiseren de setup van TLS/SSL door Let’s Encrypt-ondersteuning te integreren.

Conclusie

We hebben de basisprincipes van hoe Let’s Encrypt werkt doorgenomen en enkele beschikbare clientsoftware besproken. Als u gedetailleerdere instructies wilt over het gebruik van Let’s Encrypt met verschillende software, zijn de volgende tutorials een goed startpunt:

Source:
https://www.digitalocean.com/community/tutorials/an-introduction-to-let-s-encrypt