Ich fühlte mich für den 30. September 2021 gut gewappnet. Alles getestet, mein Server kommt mit dem ab jenem Tag abgelaufenen DST Root CA X3-Zertifikat von Let's Encrypt zurecht und spielt das neue ISRG Root X1 aus.

Allerdings musste ich just an dem Tag feststellen: Ich kann mit curl bzw. dessen Pendant innerhalb von PHP nichts mehr herunterladen. Certificate error

Ich sage nur immer wieder: Scheiß Zertifikate!

Workaround: PHP-Code anpassen

Die Sicherheitsfanatiker schlagen die Hände über dem Kopf zusammen, aber man kann die Zertifikatsprüfung auch einfach sein lassen, wenn man mit Hilfe von curl irgendwoher etwas herunterlädt.
Dies ist der einfachste Workaround.

Dafür den Code um folgende zwei curl_setopt Zeilen erweitern:

<?php
$ch = curl_init();
// ...
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
// ...
$result = curl_exec($ch);

Geht das auch, wenn man die Funktion file_get_contents statt curl verwendet?
Ja, das geht auch:

$opt = array("ssl" => array("verify_peer"      => false,
                           "verify_peer_name" => false
                           ));
$result = file_get_contents($_SITE['url'], false, stream_context_create($opt));

Was bei mir NICHT funktioniert hatte

Das aktuelle Zertifikat von hier https://curl.se/ca/cacert.pem herunterladen (ein relativ aktuelles Zertifikat von Mozilla), in /etc/ssl/certs/ kopieren und in der php.ini an folgenen Stellen hinzufügen:

[curl]
 curl.cainfo = /etc/ssl/certs/cacert.pem

[openssl]
 openssl.cafile = /etc/ssl/certs/cacert.pem

...Apache neustarten...

Oder in /usr/local/php5/ssl/certs/ kopieren oder gegen das existierende Zertifikat /usr/local/php5/ssl/cert.pem auszutauschen (/usr/local/php5/ssl/cert.pem ist laut phpinfo() das von PHP verwendete Zertifikat).

Hat alles nichts gebracht.

Der bessere Weg... =


...wäre, die OpenSSL-Bibliothek des Server upzudaten. Aber das wird eine größere Sache für ein verregnetes Wochenende. Mal schauen, ob das überhaupt etwas wird bei mir, ich halte euch auf dem Laufenden!