Zum Inhalt springen
buybitcoinsmart

Glossar / Entwicklerreferenz

Zwischenzertifikat

Was ist ein Zwischenzertifikat?
Ein Zwischenzertifikat steht zwischen einem Root-Zertifikat und einem Endzertifikat: Es wird vom Root-Zertifikat signiert und signiert selbst das Endzertifikat, damit der private Schlüssel des Root-Zertifikats offline und ungenutzt bleiben kann.

Zertifizierungsstellen signieren das Zertifikat einer Website nie mit dem Root-Schlüssel. Sie signieren ein Zwischenzertifikat, verwahren den Root-Schlüssel offline und stellen vom Zwischenzertifikat aus aus, das sich innerhalb von Wochen ersetzen lässt statt in den zwanzig Jahren, die ein Root-Zertifikat lebt. Wenn ein Server vergisst, sein Zwischenzertifikat mitzusenden, überdecken Browser die Lücke und strengere Clients nicht, sodass eine Website in Chrome in Ordnung aussehen und in einer App fehlschlagen kann.

So funktioniert es

Ein Zwischenzertifikat ist ein CA-Zertifikat, das kein Vertrauensanker ist. Es trägt die Erweiterung basicConstraints mit CA auf true, was ihm erlaubt, weitere Zertifikate zu signieren, und es ist selbst von einem Root-Zertifikat oder von einem anderen Zwischenzertifikat signiert. Die Prüfung steigt vom Zertifikat des Servers nach oben, prüft jede Signatur gegen den Schlüssel im jeweils darüberliegenden Zertifikat und endet, wenn sie etwas erreicht, das bereits im lokalen Trust Store vorhanden ist.

Diese Aufteilung der Ausstellung bringt drei Dinge. Der Root-Schlüssel bleibt in einem Offline-Modul, das nur für skriptgesteuerte, bezeugte Zeremonien herauskommt. Der Schaden bleibt begrenzt, weil ein kompromittiertes Zwischenzertifikat widerrufen und neu ausgestellt werden kann, ohne den Root Store eines Geräts anzutasten. Und eine Zertifizierungsstelle kann ihre Produktlinien trennen, sodass Probleme in der billigen automatisierten Ebene nicht die auditierte Ebene betreffen.

Die Kreuzsignierung ist der Kniff, der eine neue Zertifizierungsstelle überhaupt nutzbar macht. Ein einzelner Zwischenzertifikatsschlüssel kann zwei Zertifikate tragen: eines, das von der Root der eigenen Organisation signiert ist, und eines, das von einer etablierten Root signiert ist, die bereits auf alten Geräten liegt. Let's Encrypt stützte sich jahrelang darauf, weil ISRG Root X1 in Android-Versionen fehlte, die keine Updates mehr erhielten, sodass eine von IdenTrust kreuzsignierte Kette ausgeliefert wurde. Die Krücke überlebte die Root dahinter, die am 30. September 2021 abgelaufen ist, und Let's Encrypt lieferte die kreuzsignierte Kette schließlich am 6. Juni 2024 nicht mehr aus.

Der Zusammenbau der Kette ist der Teil, den Betreiber falsch machen. Ein Server sollte sein eigenes Zertifikat plus jedes darüberliegende Zwischenzertifikat senden und vor dem Root-Zertifikat haltmachen, das der Client bereits hat. Browser verbergen Auslassungen, indem sie das fehlende Stück von der URL in der Erweiterung für den Zugriff auf Informationen der Zertifizierungsstelle abrufen oder eine zwischengespeicherte Kopie wiederverwenden. Eine Zahlungsbibliothek, eine mobile App oder ein Kommandozeilen-Client tut meist weder das eine noch das andere und meldet schlicht eine nicht vertrauenswürdige Kette.

Wo es auftritt

BIP70 lieferte Zwischenzertifikate innerhalb der Zahlungsnachricht selbst mit. Das Feld pki_data enthielt eine X509Certificates-Struktur, deren erster Eintrag das Zertifikat des Händlers selbst war, gefolgt von den Zwischenzertifikaten, die nötig waren, um eine Root zu erreichen, wobei die Root weggelassen wurde, weil erwartet wurde, dass die Wallet sie bereits hat. Das ist genau die Reihenfolge, die ein TLS-Server sendet, übertragen in einen Protocol Buffer.

Außerhalb von Bitcoin machen sich Zwischenzertifikate bemerkbar, wann immer eine Verbindung in einem Programm gelingt und in einem anderen fehlschlägt. Eine Börse, deren API-Endpunkt einem Handelsskript einen Zertifikatsfehler wirft, während die Website normal lädt, hat fast immer ein Zwischenzertifikat aus ihrer Kette weggelassen. Das Testen mit einem Werkzeug, das die stille Reparatur des Browsers nicht vornimmt, ist der Weg, es zu erkennen, bevor Ihr Bot es tut.

Zwischenzertifikat vs. Root-Zertifikat

Ein Root-Zertifikat und ein Zwischenzertifikat sind beide CA-Zertifikate, und der Unterschied liegt darin, wer sie signiert hat und wo der Schlüssel liegt. Ein Root-Zertifikat ist selbstsigniert und bezieht seine Macht aus der Aufnahmeliste eines Anbieters. Ein Zwischenzertifikat bezieht seine Macht aus der Signatur darüber, was bedeutet, dass die ausstellende Zertifizierungsstelle es an einem Nachmittag widerrufen kann, ohne ein Software-Update irgendwo. Im laufenden Betrieb nimmt das Zwischenzertifikat fast alle Signierungen vor, während das Root-Zertifikat fast keine vornimmt, und diese Asymmetrie ist der ganze Grund für die Existenz dieser Ebene.

Nicht zu verwechseln mit

Häufig gestellte Fragen

Warum lädt eine Website in meinem Browser, schlägt aber in einer App oder einem Skript fehl?

Meist fehlt ein Zwischenzertifikat. Browser holen das fehlende Zertifikat still über die Erweiterung für den Zugriff auf Informationen der Zertifizierungsstelle, während die meisten Bibliotheken und Kommandozeilen-Clients das nicht tun, sodass derselbe Server an einer Stelle als vertrauenswürdig gilt und an einer anderen nicht.

Kann ein Zwischenzertifikat widerrufen werden?

Ja, und das ist der Hauptgrund für die Existenz dieser Ebene. Die ausstellende Zertifizierungsstelle kann ein Zwischenzertifikat sofort widerrufen, während das Entfernen einer kompromittierten Root ein Software-Update auf jedem Gerät erfordert, das den Root Store mitliefert.

Verwandte Begriffe

Mehr zum Thema Entwicklerreferenz

Diese Seite auf Englisch lesen