PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bug in TinycA



cane
06.05.04, 09:47
Hallo!

Wie es mir scheint, habe ich gerade einen Bug in TinyCA gefunden.

Wenn man als maximale Gültigkeit der CA 12000 Tage angibt wird die CA mit der
Gültigkeit: 04.04.2004 - 12.03.2037 erzeugt.

Gibt man als maximale Gültigkeit 13000 Tage an wird die CA mit der
Gültigkeit: 04.04.2004 - 01.11.1903 erzeugt.

TinyCA ist in Perl geschrieben und greift zur Zertifikatserzeugung auf OpenSSL zurück. Da meine Programmierkenntnisse beschränkt sind blicke ich im Source nur mühsam durch.

Der Entwickler von TinyCA hat auf den Bugreport per Mail vom 27.04.2004 bisher (leider) nicht geantwortet. :(

Hat jemand von euch eine Erklärung für das verhalten von TinyCA?
Hilfe beim beheben des Bug im Source könnte ich auch gebrauchen - dann bitte posten oder eine PN an mich :)

Den Source gibts hier: http://tinyca.sm-zone.net/


mfg
cane

RipClaw
06.05.04, 10:21
Hallo!

Wie es mir scheint, habe ich gerade einen Bug in TinyCA gefunden.

Wenn man als maximale Gültigkeit der CA 12000 Tage angibt wird die CA mit der
Gültigkeit: 04.04.2004 - 12.03.2037 erzeugt.

Gibt man als maximale Gültigkeit 13000 Tage an wird die CA mit der
Gültigkeit: 04.04.2004 - 01.11.1903 erzeugt.


Dabei handelt es sich um nicht um ein TinyCA oder OpenSSL Problem, sondern um das Jahr 2038 Problem. Die Datumzählung auf Unix Systemen funktioniert anders als bei Windows oder DOS basierten Systemen.

Bei Unix werden die Anzahl der Sekunden seit dem 1. Januar 1970 gezählt. Am 19 Januar 2038 wird die Variable, die die Zeit enthält überlaufen.

Rechne mal die 13000 Tage hinzu. Da kommst du auf ein Datum nach dem 19 Januar 2038. Zur Berechnung des Ablaufdatums wird die Zeitangabe in Sekunden umgewandelt und zu der aktuellen Zeit hinzugezählt. Jedoch ist die Zahl zu groß und kann nicht mehr korrekt in ein Datum zurückgewandelt werden.

Temp
06.05.04, 10:37
ahjo genau ;)

da reicht der Datentyp nicht mehr aus... die Variable fängt dann wieder sozusagen von vorne an.... drumm landest du im Jahre 1903

Nur die Frage: Ist das Zertifikat eigentlich gültig ?
Oder geht ablaufdatum vor anfangsdatum gar nicht? (hoffentlich ;) )

Gruß Temp

cane
06.05.04, 11:13
Hallo!


Nur die Frage: Ist das Zertifikat eigentlich gültig ?
Oder geht ablaufdatum vor anfangsdatum gar nicht? (hoffentlich )

Möglichkeit 1:
Ich setze die Gültigkeit des Zertifikats so hoch dass es auch zum Überlauf kommt (~13000 Tage), aber kleiner als die der CA - dann gehts. Nur soll mein Zertifikat keine 13000 Tage gültig sein :D

Setze ich die Gültigkeit auf einen Wert der nicht zum Überlauf führt (<13000 Tage) erscheint die Fehlermeldung dass das Zertifikat länger gültig sein wird als die CA (logisch da 2004 > 1938).


mfg
cane