Einige mit einem Raspberry Pi, die eine Standardinstallation von Raspbian verwenden und Let’s Encrypt einsetzen, dürften dieser Tage elektronische Post von Let’s Encrypt bekommen haben. Da hieß es in etwa folgendermaßen:
Your Let’s Encrypt client used ACME TLS-SNI-01 domain validation to issue a certificate in the past 60 days.
TLS-SNI-01 validation is reaching end-of-life and will stop working on February 13th, 2019.
You need to update your ACME client to use an alternative validation method (HTTP-01, DNS-01 or TLS-ALPN-01) before this date or your certificate renewals will break and existing certificates will start to expire.
Das Problem bei einem aktuellen Raspbian Stretch, welches auf Debian Stretch basiert: in den offiziellen Paketquellen ist nur die Certbot-Version 0.10.1 enthalten, welche allerdings nur die Validierungsmethode TLS-SNI-01 enthält, welche nun aus Sicherheitsgründen nicht mehr unterstützt werden soll. Da ich bei mir auf einige Probleme gestoßen bin, möchte ich hier meinen Weg aufzeigen, wie ich eine aktuelle Version von Certbot unter Raspbian Stretch zum laufen bekommen habe, um Lets-Encrypt-Zertifikate weiterhin verwenden zu können.
Hinweis: Für den Erfolg dieser Anleitung gebe ich keinerlei Garantie. Bei meiner Installation hat es funktioniert, das kann bei einer anderen schon wieder ganz anders aussehen. Daher solltet ihr einigermaßen wissen, was ihr da tut und vorher ein Backup machen sowie wissen, wie man das Backup wieder einspielt!
Dieser Artikel bezieht sich auf folgende Software-Versionen:
- Raspbian 9 (Stretch)
- certbot 0.28
- indirekt Seafile 6.2.3
Um eine akuelle Version von certbot zu bekommen, muss man auf die Backports von Debian zurückgreifen. Bevor ich allerdings auf diese zugreifen konnte, gab es verschiedene Fehlermeldungen, welche ich durch folgende Vorarbeiten umschiffen konnte:
1. Debian-Stretch-Backports aktivieren
Zum Anfang werden erst einmal die Debian-Stretch-Backports aktiviert:
sudo sed -i "$ a\deb http://ftp.debian.org/debian stretch-backports main" /etc/apt/sources.list
Möchte man mit einem sudo apt-get update die Paketquellen aktualisieren, wird man höchstwahrscheinlich einen Fehler erhalten, dass 2 GPG-Schlüssel nicht vorhanden sind.
2. Installation von dirmngr
Die GPG-Schlüssel können nicht sofort installiert werden, da Raspbian Stretch standardmäßig nur eine Minimalinstallation von gpg mit sich bringt. Also installiert man zunächst dirmngr
mit folgendem Befehl:
sudo apt-get install dirmngr --install-recommends
3. GPG-Schlüssel für die Backports installieren
Für die Installation der fehlenden GPG-Schlüssel wechselt man zunächst in den Benutzer root (Zeile 1), holt sich die betreffenden Schlüssel von einem Schlüsselserver (Zeile 2), exportiert diese und fügt sie dem Schlüsselbund hinzu (Zeile 3 und 4). Am Ende verlässt man den Benutzer root und kehrt zum Standardbenutzer zurück (Zeile 5).
sudo su - gpg --keyserver pgp.mit.edu --recv-keys 7638D0442B90D010 8B48AD6246925553 gpg --armor --export 7638D0442B90D010 | apt-key add - gpg --armor --export 8B48AD6246925553 | apt-key add - exit
4. Neue Certbot-Version installieren
Nun kann man eine aktuelle certbot-Version installieren, indem man sie sich aus den Backports holt:
sudo apt-get update sudo apt-get install certbot -t stretch-backports
Falls man noch eine ältere Version von Seafile installiert hat (z.B. 6.2.3), sollte man folgendes beachten: Bei der Installation von certbot kommt es u.a. zu folgender Ausgabe:
The following packages were automatically installed and are no longer required: python-acme python-certbot python-configargparse python-configobj python-dnspython python-funcsigs python-mock python-parsedatetime python-pbr python-psutil python-rfc3339 python-tz python-zope.component python-zope.event python-zope.hookable python-zope.interface Use 'sudo apt autoremove' to remove them.
Man sollte hier nicht ohne weiteres sudo apt autoremove verwenden. Apt weiß natürlich nicht, dass Seafile installiert ist und hält die Pakete für überflüssig. Sie werden aber weiterhin von Seafile gebraucht. Löscht man diese, wird man nicht mehr auf Seafile zugreifen können. Also die Pakete einfach behalten 😉
5. Certbot testen
Am Ende kann man mit folgendem Befehl testen, ob eine Erneuerung der Zertifikate mit einer alternativen Validierungsmethode erfolgreich durchläuft:
sudo certbot renew --dry-run
Interessanter Artikel 😉
Mai 2020: Die aktuelle Version von Raspbian (Buster) enthält certbot in der Version 0.31.