Nextcloud: Ein Newsfeed kann nicht mehr aktualisiert werden

Nextcloud mit der App “News” ist eine feine Sache um RSS-Feeds sowohl in der private Cloud, im Browser oder auf dem Smartphone zu haben (siehe: Nextcloud: Newsfeeds in der Cloud und auf dem Smartphone).

In meiner NextCloudPi-Installation streikte neulich der RSS feed von Bvckup2, wobei es lange Zeit zuvor keinerlei Schwierigkeiten gab. Das mal ein Feed nicht abgerufen werden kann, da nicht erreichbar wegen Wartung, Störung, sonst was, kommt vor, wenn es allerdings mehr als 24 Stunden sind, dann stimmt etwas nicht.

Nicht-funktionierende Feeds werden in der News-App je nach Theme oder Farbschema entsprechend farblich markiert, beim Dark Theme sind diese Orange. Fährt man mit der Maus darüber erscheint ein kleines Feld mit einer knappen Meldung:

cURL error 60: SSL certificate problem: unable to get local issuer certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html)

Schaut man dann zeitnah im “nextcloud.log” findet das

... "message":{"Exception":"GuzzleHttp\\Exception\\RequestException","Message":"cURL error 60: SSL certificate problem: unable to get local issuer certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html)
for https://bvckup2.com/wip/rss", ...

und diese hier:

... "errno":60,"onHeadersException":null,"createResponseException":null,"__class__":"GuzzleHttp\\Handler\\EasyHandle"},{"errno":60,"error":"SSL certificate problem:
unable to get local issuer certificate","appconnect_time":0,"url":"https://bvckup2.com/wip/rss", ...

Zur Sicherheit nochmal via ssh mit

curl --verbose https://bvckup2.com/

geschaut bekommt man unterm anderem dieses:

curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: https://curl.haxx.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.

Wie man sieht alles der gleiche Fehler, der sich zum Teil in allen Meldungen wiederspiegelt, in diesem Fall verwies das Ganze auf ein Zertifikatsproblem. Im Browser konnte man den RSS-Feed direkt und ohne Zertifikat-Warnung öffnen, ergo irgendetwas stimmt in der NextCloudPi-Installation nicht.

Bvckup2 verwendet Let’s Encrypt und dieses Zertifikat wurde kürzlich erneuert, seitdem klappte der Abruf nicht mehr. Dazu muss man Wissen, das Let’s Encrypt vor gar nicht so langer Zeit etwas hinter den Kulissen umgestrickt hat was die Zertifikatskette betrifft und genau hier lag das Problem. Auf der Anbieter-Seite findet man alles notwendige an Information als auch die entsprechenden Zertifikate (zum Download):

Let’s Encrypt – Chain of Trust

Auf dem NextCloudPi zugrundeliegenden Debian war zwar das Root-Zertifikat (DST Root CA X3, zu finden unter “/etc/ssl/certs”) vorhanden, allerdings fehlte das Zwischenzertifikat (R3), in Folge konnte die Zertifikatskette nicht erfolgreich überprüft werden und das Ganze endet mit den weiter oben gezeigten Fehlern.

Als erste Maßnahme kann man unter Debian den Befehl update-ca-certificates ausführen, allerdings gab es keine Zertifikate zu aktualisieren. So musste das fehlende Zwischenzertifikat anderweitig eingebracht werden und dieser Weg sah so aus:

Die Datei “lets-encrypt-r3.pem” herunterladen und statt mit der Datei-Erweiterung “.pem” als “.crt” in das Verzeichnis

/usr/local/share/ca-certificates

kopieren. Nochmals “update-ca-certificates” ausführen und die Ausgabe sollte nun so aussehen:

Updating certificates in /etc/ssl/certs...
1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.

Prüft man nun nochmal mit obigen curl-Aufruf, sollte als Ergebnis folgende Ausgabe erscheinen:

* SSL certificate verify ok.

In der vollständigen Ausgabe sollte man zudem alle relevanten Zertifikatangaben sehen können.

Quellen:

nmi – How to Check If the Correct Certificates Are Installed on Linux

James Healy – Trusting New SSL Certificates in Debian

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.