Hallo,
danke an alle, die sich hier beteiigt und das Hirn zermartert haben
Frei übersetzt lese ich das so: ohne das Root Zertifikat bereits auf einem anderen Weg dem Client bereitgestellt zu haben, kann man die Root CA nicht prüfen. Für die Prüfung muss man kontrollieren, ob das vorletzte Zertifikat mit dem Root-Zertifikat signiert wurde, nehme ich an.
Damit wir es hier auch (halbwegs) vollständig haben eine kurze Zusammenfassung, so wie ich es verstanden habe:
- Manche Server schicken auch das Root-Zertifikat, manche nicht - das ist nach Standard auch nicht erforderlich
- Tatsächlich ist der Nutzen eines vom Server übertragenen Root-Zertifikats sehr beschränkt. Ohne eine bestehende Vertrauensstellung ist auch das Root-zertifikat nichs besonderes - niemand hindert mich, mir selber eine CA mit dem Namen "Symantec Root CA" (oder wie auch immer die heißt) nebst entsprechenden Intermediate-CAs erstellen. Und man muss auch bedenken, dass es in der Tat sehr unwahrscheinlich ist, dass ein Nutzer den Fingerprint der Root-CA überprüft.
Im der Folge bedeutet das aber, dass man eigentlich nur die beiden Möglichkeiten hat, sich entweder doch den Aufwand der Zusammenstellung und Pflege einer Root-CA-Liste antuen muss (nur am Rande die Frage: kann und darf man die Liste von Firefox verwenden?), oder auf die Anzeige des Root-Zertifikats (bzw. der ganzen Chain) zu verzichten und den Benutzer fragt "ist das der Fingerbadruck deines Server-Zertifikats?" - eine angezeigte Zertifikatskette täuscht hier möglicherweise eine "Echtheit" vor, die nicht überprüft wurde.
P.S.: Theoretisch könnte man wahrscheinlich auch die Zertifikatskette irgendwie an die Windows-CryptoAPI zur Überprüfung übergeben, da stellt sich mir aber die Frage der Sinnhaftigkeit, OpenSSL und CryptoAPI zu vermischen