Schlagwort-Archive: Lets Encrypt

Let’s Encrypt ist eine Zertifizierungsstelle, die Ende 2015 in Betrieb gegangen ist und kostenlose X.509-Zertifikate für Transport Layer Security (TLS) anbietet.

Lets Encrypt Installation für Debian 10

Apache mit Let’s Encrypt unter Debian 10

Let’s Encrypt ist eine Zertifizierungsstelle (CA), die eine einfache Möglichkeit bietet, kostenlose TLS/SSL-Zertifikate zu beziehen und zu installieren, wodurch verschlüsseltes HTTPS auf Webservern ermöglicht wird. Es vereinfacht den Prozess, indem es einen Software-Client, Certbot, bereitstellt, der versucht, die meisten der erforderlichen Schritte zu automatisieren. Let’s Encrypt verwendet das ACME-Protokoll (ACMEv2), um den Domainnamen zu überprüfen und das Zertifikat zu steuern und auszustellen. Derzeit ist der gesamte Prozess zum Erhalten und Installieren eines Zertifikats sowohl auf Apache als auch auf Nginx vollständig automatisiert.

In diesem Tutorial wird Certbot verwendet, um ein kostenloses SSL-Zertifikat für Apache unter Debian 10 zu erhalten und um Zertifikate so einzurichten, dass sie automatisch installiert werden.

Voraussetzungen

  • Ein Debian 10 Server, ein Nicht-Root Benutzer mit sudo Berechtigungen ist angelegt und eine Firewall (ufw oder firewalld) ist eingerichtet.
  • Ein vollständig registrierter Domainname, zum Beispiel unblog.ch.
  • Beide der folgenden DNS-Einträge sind für den Server eingerichtet.
    • Ein A Record für meine_domain der auf die öffentliche IP-Adresse des Servers verweist.
    • Ein A Record für www.meine_domain der auf die öffentliche IP-Adresse des Servers verweist.
  • Apache ist installiert, hierzu kann die Anleitung LAMP Stack auf Debian Installieren befolgt werden. Stelle sicher, dass eine virtuelle Hostdatei für die Domain eingerichtet ist. Dieses Tutorial verwendet als Beispiel /etc/apache2/sites-available/meine_domain.conf

Hinweis : Derzeit ist Certbot standardmäßig nicht in den Debian-Software-Repositorys verfügbar. Um Certbot als Snap auf Debian zu installieren, muss zuerst snapd auf dem Server installiert werden. snapd ist ein Daemon, der zum installieren und Verwalten von Snaps erforderlich ist.

Snap ist ein Softwareverteilungssystem und eine Paketverwaltung für Linux, das bzw. die distributionsübergreifend arbeitet. Das von Canonical entwickelte System unterstützt transaktionale Updates und Rollbacks. Es wurde von Canonical für Ubuntu entwickelt und ist mittlerweile auch für andere Linux-Distributionen verfügbar.

Certbot Installation auf Debian 10

Führe die folgenden Anweisungen in der Befehlszeile auf dem Debian Server aus, um die neueste Version von snapd zu installieren.

$ sudo snap install core; sudo snap refresh core

Führe diesen Befehl in der Befehlszeile aus, um Certbot zu installieren.

$ sudo snap install --classic certbot

Die folgende Anweisung in der Befehlszeile ausführen, um sicherzustellen, dass der Befehl certbot ausgeführt werden kann.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Dieser Befehl um ein Zertifikat abzurufen und um Certbot die Apache-Konfiguration automatisch bearbeiten zu lassen, indem der HTTPS-Zugriff in einem einzigen Schritt aktiviert wird.

$ sudo certbot --apache

Wer die Änderungen an der Apache-Konfiguration selber vornehmen möchte, kann diesen Befehl ausführen.

$ sudo certbot certonly --apache

Die automatische Verlängerung derZertifikate testen, geht mit dem folgenden Befehl.

$ sudo certbot renew --dry-run

Um das ganze zu überprüfen, besuche https://meine_domain/ im Browser deiner Wahl und schaue in der URL-Zeile nach dem Schlosssymbol.

Einrichten des SSL-Zertifikats

Certbot muss den richtigen virtuellen Host in der Apache-Konfiguration finden, damit SSL automatisch konfiguriert werden kann. Dies geschieht insbesondere, indem nach der ServerName Anweisung gesucht wird, die der Domäne entspricht, für die ein Zertifikat angefordert werden soll.

Öffne zur Überprüfung die virtuelle Hostdatei für die Domain mit vim oder nano Texteditor.

$ vi /etc/apache2/sites-available/meine_domain.conf

Suche in der Zeile nach ServerName. Es sollte hier der Domainname stehen meine_domain.

ServerName meine_domain

Falls noch nicht geschehen, aktualisiere die ServerName Anweisung so, dass sie auf den Domainname verweist.

Überprüfe als Nächstes die Syntax der Konfigurationsänderungen.

$ sudo apache2ctl configtest

Certbot bietet eine Vielzahl von Möglichkeiten, SSL-Zertifikate über Plugins zu erhalten. Das Apache-Plugin kümmert sich um die Neukonfiguration von Apache und lädt die Konfiguration bei Bedarf neu. Folgender Befehl verwendet dieses Plugin.

$ sudo certbot --apache -d meine_domain -d www.meine_domain

Es wird certbot mit dem --apache Plugin ausgeführt und verwendet -d, um die Domain Namen anzugeben, für die das Zertifikat gültig sein soll.

Wenn man Certbot zum ersten Mal startet, werd man aufgefordert, eine E-Mail-Adresse einzugeben und den Nutzungsbedingungen zuzustimmen. Darüber hinaus wird man gefragt, ob man bereit ist, die E-Mail-Adresse an die Electronic Frontier Foundation weiterzugeben, eine gemeinnützige Organisation, die sich für digitale Rechte einsetzt und auch Certbot herstellt. Bestätige hier mit Y für die E-Mail-Adresse oder N um abzulehnen.

Um den Erneuerungsprozess zu testen gibt es folgender Probelauf.

$ sudo certbot renew --dry-run

Fazit

In diesem Tutorial haben wir den Let’s Encrypt-Client installiert, SSL-Zertifikate für die Domain heruntergeladen, Apache für die Verwendung dieser Zertifikate konfiguriert und die automatische Zertifikatserneuerung eingerichtet.

Quellenlink: certbot instructions

Lets Encrypt-Zertifikat mit ACME2 auf Windows Server

Installation des Lets Encrypt-Zertifikat mit ACME2 auf Windows Server

Let’s Encrypt ist ein Aussteller für freie SSL-Zertifikate, Ende 2015 in Betrieb gegangen, erfreut sich die CA Zertifizierungsstelle für kostenlose Zertifikate grosser Beliebtheit, anfänglich für Linux, gibt es sie nun auch für Windows. Mit ACME 2 lässt sich zudem das Management von SSL/TLS-Zertifikate weitgehend auto­matisieren.

Installation von ACMEv2

ACMEv2 beinhaltet kein Setup zur Installation, das win-acme Paket wird von hier auf den Server herunter­geladen und in ein beliebiges Verzeichnis entpackt. Das Verzeichnis sollte danach nicht mehr verändert werden, da der Pfad für die Rezertifizierung benötigt wird.

Wie bei der früheren Version handelt es sich bei der aktuellen Version um ein in der Kommando­zeile geführtes Tool mit Menüs, so dass es sich etwa auch unter Server Core ausführen lässt. Gestartet wird win-acme über den Aufruf von wacs.exe.

Lets Encrypt Zertifikat anfordern

Bei der interaktiven Anforderung eines Zertifikats mit win-acme über den Simple Mode ist der Vorgang weitgehend gleich wie mit der vorgänger Version 1. In diesem Beispiel wird ACME 2 auf einem Windows Server 2019 mit der IIS-Rolle ausgeführt.

Für die Verifizierung der Domäne wird hier die Bindung konfiguriert, aus dem Internetinformationsdienste (IIS)-Manager – InetMgr.exe.

Abbildung: Internetinformationsdienste (IIS)-Manager

Nach ausführen von wacs.exe wählt man die Option N, um ein neues Zertifikat mit den Standard­einstellungen zu erzeugen. Dabei sucht win-acme nach den Bindungen im IIS. Sind keine Bindungen konfiguriert bricht win-acme den Vorgang ab.

Im nächsten Schritt wählt man die IIS-Website aus, für die man das Zertifikat anfordern und ausstellen möchte.

Im Schritt darauf ist zu entscheiden, ob alle Bindungen oder nur bestimmte IIS-Websites verwendet werden sollen. Im zweiten Fall wählt man diese über einen Filter aus.

Nach einer weiteren Bestätigung startet die Zertifikats­anforderung. Um die Autorität der Domain zu verifizieren, nutzt win-acme die Methode http-01. Dabei erhält der Client von Let’s Encrypt ein Token, diesen er in eine Datei auf dem lokalen Server schreibt, die danach von Let’s Encrypt ausgelesen wird.

   Let’s Encrypt erwartet den Token über HTTP aus der Datei auszulesen. Daher erfordert win-acme auf der Firewall die Freigabe für Port 80 zum Server.

Das Zertifikat befindet sich nach dem erfolgreichen Abschluss des Vorgangs im Zertifikatsspeicher des Servers. Zusätzlich speichert win-acme das Zertifikat im PEM und PFX-Format unter folgendem Pfad ab.

C:\ProgramData\win-acme\acme-v02.api.letsencrypt.org

Die Autorität der Domäne, für die man ein Zertifikat anfordert, muss man nicht nur bei der Erst­ausstellung nachweisen, sondern auch alle 3 Monate für die Erneuerung des Zertifikats.

In den häufigsten Situationen ist es nicht erwünscht, dass ein Server nur für die Anforderung eines Zertifikates ohne Schutz dauerhaft auf Port 80 aus dem Internet erreichbar ist. Hier wäre die Nutzung eines Proxys oder einer temporären Port Freigabe zu erwägen.

Um das Freigeben von Port 80 auf der Firewall zu umgehen, gibt es die Möglichkeit, statt http-01 den Challenge zu wechselen. Hier bietet sich vor allem DNS-01 an, dabei wird das Token als TXT-Record im DNS eingetragen.

_acme-challenge.<MEINE_DOMAIN>

Diese Methode hat zudem den Vorteil, dass sich damit Wildcard-Zertifikate ausstellen lassen. Voraus­setzung für DNS-01 ist natürlich, dass die betreffende Domain extern gehostet wird und somit für Let’s Encrypt zugänglich ist.