[Eisfair] certs: Probleme mit parallel ausgefc3bchrten at-Jobs

Juergen Edner juergen at eisfair.org
Fr Okt 6 21:05:45 CEST 2017


Hallo Marcus,

> Es laufen bei mir Jobs parallel, weil ich sehr viele Zertifikate installiert
> habe, aber das ausführende Skript ist nicht für parallele Ausführung
> gedacht, denn sie "pfuschen" dann auch parallel an gleichen Dateien rum.
 > ...
> Im atjobs-Verzeichnis stehen viele weitere (korrekterweise), welches auch
> durch certs-update-crl-list korrekt abgebildet wird.
> 
>>> Es ist in der Logik des Paketes ja etwas drin, was die parallele
>>> Ausführung von Jobs verhindern soll, aber das scheint irgendwie nicht so
>>> richtig zu greifen.
>>
>> Dies ist korrekt, vor dem Anlegen eines neuen at-Jobs prüfe ich,
>> ob es bereits einen gleichen Eintrag in
> 
> Was heißt gleicher Eintrag?

Es wird üblicherweise nach der Uhrzeit der Ausführung geschaut, die
in der Datei certs-update-crl-joblist abgespeichert  werden. Fällt
der in einer CRL enthaltene Zeitstempel mit einem bereits existierenden 
Zeitstempel überein, so wird die Zeit in 3min-Schritten erhöht um
einen gleichzeitigen Abruf zu vermeiden.

> Gleiche URL, dann braucht der Job nur aktualisiert werden - wenn überhaupt.

Auch eine solche Prüfung findet statt. Diese wurde sogar dahingehend 
erweitert, dass eine CRL bei Verwendung von http- bzw. https nur einmal
herunter geladen wird.

> zur gleichen Zeit ausgeführt, was ja genau dann passiert, wenn, wie bei mir
> bis zu 5mal zur gleichen Zeit ein CRL-Download passiert.

Es muss geklärt werden woher bei Dir die gleichen Zeitstempel kommen.
Dies ist bisher bei mir in allen Jahren die ich diese Funktion nutze,
selbst mit viel mehr Zertifikaten, nicht vorgekommen.

>> Um der Sache auf den Grund zu gehen solltest Du einmal alle
>> existierenden at-Jobs mittels des folgenden Befehls löschen:
> 
> Die fünf um 07:16 des 9.10. zur Ausführung anstehenden Jobs betreffen
> folgende CRLs:
> 
> http://crl.comodoca.com/SecureCertificateServices.crl
-> nextUpdate=Oct 10 04:13:31 2017 GMT

> http://crl.comodoca.com/AAACertificateServices.crl
-> nextUpdate=Oct 10 04:13:31 2017 GMT

> http://crl.netsolssl.com/NetworkSolutionsCertificateAuthority.crl
-> nextUpdate=Oct 10 04:13:31 2017 GMT

> http://crl.usertrust.com/UTN-USERFirst-Hardware.crl
-> nextUpdate=Oct 10 04:13:31 2017 GMT

> http://crl.comodoca.com/TrustedCertificateServices.crl
-> nextUpdate=Oct 10 04:13:31 2017 GMT

Mann, da hat sich aber in der Tat jemand Mühe gegeben exakt den
gleichen Zeitstempel für alle CRL zu verwenden.

> Damit es zur gleichzeitigen Aktualisierung kommt, müssen die also auch das
> gleiche Ablaufdatum haben.

Dies ist in der Tat korrekt, aber wie ich bereits schrieb wird dies
beim Anlegen der at-Jobs geprüft und korrigiert. D.h. wenn ich die
oben aufgeführten CRL in die Datei certs-update-crl-list eintrage
und dann "certs-update-crl --createjobs" aufrufe werden at-Jobs
zu folgenden Zeiten angelegt:

3|2017-10-10 06:16|2017-10-06 
06:13|http://crl.comodoca.com/SecureCertificateServices.crl
4|2017-10-10 06:19|2017-10-06 
06:13|http://crl.comodoca.com/AAACertificateServices.crl
5|2017-10-10 06:22|2017-10-06 
06:13|http://crl.netsolssl.com/NetworkSolutionsCertificateAuthority.crl
6|2017-10-10 06:25|2017-10-06 
06:13|http://crl.usertrust.com/UTN-USERFirst-Hardware.crl
7|2017-10-10 06:28|2017-10-06 
06:13|http://crl.comodoca.com/TrustedCertificateServices.crl

Wie man unschwer erkennen kann, befinden sich in Spalte 2 dieser
Tabelle grundsätzlich unterschiedliche Ausführungszeiten hinter den
Daten. Da das Herunterladen dieser CRL keine 3min in Anspruch nimmt,
kann es nach meinem Verständnis zu keiner zeitgleichen Ausführung
kommen oder sehe ich dies falsch?

>> Falls danach bei Dir erneut doppelte Einträge vorkommen sollten, lösche
>> die at-Jobs bitte erneut, entferne das Kommentarzeichen vor Zeile 50 um
>> einen Debug-Trace zu erstellen und lasse anschließend die Jobs wieder
>> neu erstellen.
> 
> Ich habe keine doppelten Einträge, sondern gleichzeitige
> CRL-Aktualisierungen verschiedenen CRLs, die aufgrund des nicht für
> parallelen Ausführung ausgelegten Skriptes zu dieser Merkwürdigkeit führen.

Ich versuche es einmal anders zu erklären. Du brauchst einen PKW
nicht mit Stoßstangen ausstatten, wenn Du sicher stellst dass die
PKW im Abstand von 3min auf der gleichen Straße fahren.

Anhand der oben aufgeführten Daten bzw. Zeiten ist ersichtlich, dass
der Abruf der CRL zu unterschiedlichen Zeiten erfolgt. Wenn es also bei
Dir zur zeitgleicher Ausführung von at-Jobs kommt, muss untersucht werde
wieso dies passiert.

> Ansonste kann ich aber am Wochenden nochmal alles bereinigen und den
> Debug-Modus einschalten.

Läuft Dein Server zu Hause eigentlich durch oder startest Du ihn nur
bei Bedarf?

> Auf meinem Schulserver gibt es keine Jobs zur exakt gleichen Zeit, aber auch
> deutlich weniger Zertifikate.
 > > Hier sieht auch die certs-update-joblist korrekt aus, entspricht 
der Zahl
> angelegter at-Jobs.

So soll es sein.

Gruß Jürgen
-- 
Mail: juergen at eisfair.org


Mehr Informationen über die Mailingliste Eisfair