Matomo archive.php: ‚curl_exec: SSL certificate problem‘

Was für eine Überschrift…. Dabei ist sie noch nicht mal vollständig, denn eigentlich ist die Fehlermeldung

curl_exec: SSL certificate problem: self signed certificate in certificate chain.

Die Ursache ist in der Meldung ja schon erklärt: das aufgerufene curl kann das selbst signierte SSL-Zertifikat des Servers nicht validieren – weil es eben selbst signiert ist und nicht von einer „offiziell“ vertrauenswürdigen Stelle. Da es sich in meinem Fall aber komplett um Server innerhalb meines eigenen Netzwerks handelt, ist das selbst signierte Zertifikat vollkommen ausreichend.

Die Lösung ist – wenn man sie erstmal kennt – relativ trivial und schnell implementiert; das Finden dauert länger als das Machen. Letztendlich war es bei mir die Kombination aus zwei Beiträgen:

  1. Herunterladen des eigenen CA Zertifikats (siehe hier)
  2. Aktualisierung der vertrauenswürdigen Zertifikate in meiner Matomo Installation (siehe hier)

1. Eigenes Zertifikat für curl herunterladen

Zunächst mal holt man sich die aktuellste Liste direkt von curl (Link) und speichert sie lokal ab.

Danach speichert man das Zertifikat der eigenen Webseite ebenfalls lokal ab; die genaue Vorgehensweise unterscheidet sich je nach verwendetem Browser. In der Regel fängt es mit einem Klick auf das Schloß in der Adresszeile an, dann hangelt man sich durch bis man irgendwann an den Punkt kommt, wo man das Zertifikat exportieren kann. Ob es als .crt oder .pem gespeichert wird ist vollkommen egal, letztendlich ist es nur eine Textdatei.

Zum Abschluss öffnet man beide Zertifikatsdateien (cacert.pem von curl und das eigene) mit einem Texteditor und hängt das eigene Zertifikat am Ende der cacert.pem an. Abspeichern (als reiner Text), fertig.

2. Aktualisieren der Matomo Installation

Noch einfacher und schneller als der vorherige Schritt: die eben erweiterte cacert.pem muss in das Verzeichnis piwik/core/DataFiles/ – und fertig.

Beim nächsten Archivierungslauf wird auch das eigene Zertifikat als gültig akzeptiert :)

Allerdings hält diese Lösung vermutlich nur bis zur nächsten Aktualisierung von Matomo und muss dann wiederholt werden – aber da kann man ja dran denken bzw. erinnert man sich spätestens daran, wenn die automatische Archivierung per cronjob nicht funktioniert. (Achtung: der cronjob an sich gibt keine Fehlermeldung und läuft normal durch, da muss man schon in die Protokolle schauen)

Update: Es geht noch viel einfacher…

Eigentlich nicht empfohlen, aber für meinen Anwendungsfall (Webserver im Intranet ohne Verbindung zur Außenwelt) vollkommen ausreichend; es gibt einen zusätzlichen Schalter, der genau das tut, was sein Name verspricht: –accept-invalid-ssl-certificate

Damit verhindert man auf jeden Fall Problemmeldungen beim Matomo Systemcheck – der merkt nämlich auch, dass die cacert.pem verändert wurde.

Das komplette Kommando für den Cronjob ist dann also

/path/to/matomo/console core:archive --url=http://example.org/matomo/ --accept-invalid-ssl-certificate

 

Use Joomla! 1.5 with Proxy

After quite a bit of research I finally found the solution to the following problem challenge:
For some reason I am running a Joomla! 1.5 site in an intranet where internet access is only possible through a proxy server (despite the fact that I normally avoid Joomla! – I am using a different CMS for websites, not even WordPress). Out of the box, this is apparently not at all foreseen in the Joomla! configuration options – there is no option whatsoever for a proxy connection.