Expect-CT

Der Expect-CT HTTP Header erlaubt es Webseiten, die Anforderungen der Certificate Transparency (kurz: CT) zu aktivieren und/oder zu erzwingen, um so der (unbemerkten) Verwendung falsch ausgestellter Zertifikate vorzubeugen.

CT-Anforderungen können erfĂŒllt werden ĂŒber einen der nachstehenden Mechanismen:

  • X.509v3 certificate extension: signierte SCTs (SCT=signed certificate timestamp) werden direkt in das Zertifikat einbettet
  • Eine TLS-Erweiterung des Typs signed_certificate_timestamp wird wĂ€hrend des handshakes gesendet
  • OCSP stapling (ĂŒber die status_request TLS-Erweiterung) und das Bereitstellen einer SignedCertificateTimestampList mit einem oder mehreren SCTs

Wenn eine Webseite die Verwendung des Expect-CT Headers aktiviert, fordert sie den Browser darĂŒber auf, jedes im Zusammenhang mit der Webseite verwendete Zertifikat in Ă¶ffentlichen CT Protokollen nachzuschlagen.

Browsers ignorieren den Expect-CT Header bei HTTP-Verbindungen; der Header hat nur bei HTTPS-Verbindungen einen Effekt.

Expect-CT wird im Juni 2021 voraussichtlich obsolet werden. Seit Mai 2018 ist es erforderlich, dass neue ausgestellte Zertifikate standardmĂ€ĂŸig SCTs unterstĂŒtzen. Ältere Zertifikate, vor MĂ€rz 2018 ausgestellt, können eine GĂŒltigkeitsdauer von 39 Monaten haben, wodurch sie alle im Juni 2021 ablaufen.

Header type Response header
Forbidden header name yes

Syntax

Expect-CT: report-uri="<uri>",
           enforce,
           max-age=<age>

 Direktiven

max-age

Die Anzahl der Sekunden nach dem Empfang des Expect-CT-Header-Feldes, wÀhrend der der User-Agent den Host der empfangenen Nachricht als bekannten Expect-CT Host betrachten sollte.

Falls ein Cache einen Wert enthĂ€lt der grĂ¶ĂŸer ist, als dieser abbilden kann oder seine nachfolgenden Berechnungen ĂŒberlaufen, dann verwendet der Cache automatisch den fĂŒr ihn grĂ¶ĂŸtmöglichen positiven Ganzzahlwert (integer) bzw. 2,147,483,648 (231).

report-uri="<uri>" Optional

Die URI wohin der Browser Expect-CT Fehler melden soll.

In Kombination mit der enforce Direktive wird die Konfiguration als sogenannte "enforce-and-report" (erzwinge und melde) gewertet, wodurch dem user agent signalisiert wird, dass sowohl die Einhaltung der Certificate Transparency Richtlinien erzwungen als auch jede Verletzung berichtet werden soll.
enforce Optional

Verlangt vom user agent, dass die Einhaltung der Certificate Transparency Richtlinien erzwungen werden soll (anstatt diese nur zu berichten). Gleichzeitig verweigert der user agent zukĂŒnftige Verbindungen, die gegen die Certificate Transparency Richtlinien verstoßen.

In Kombination mit den Direktiven enforce und report-uri wird die Konfiguration als sogenannte "enforce-and-report" (erzwinge und melde) gewertet, wodurch dem user agent signalisiert wird, dass sowohl die Einhaltung der Certificate Transparency Richtlinien erzwungen als auch jede Verletzung berichtet werden soll.

Beispiel

Dieses Beispiel legt fest, dass die Certificate Transparency fĂŒr den Zeitraum von 24 Stunden erzwungen werden soll und jede Verletzung in dem Zusammenhang wird gemeldet an die angegebene URL unter foo.example.

Expect-CT: max-age=86400, enforce, report-uri="https://foo.example/report"

Hinweise

Root CAs, die manuell als vertrauenswĂŒrdig festgelegt werden, ĂŒbersteuern und verhindern Expect-CT Berichte/Durchsetzung.

Browser merken sich eine Expect-CT Richtlinie nicht, außer eine Webseite hat bewiesen, dass sie Zertifikate bereitstellt, die den Certificate Transparency Anforderungen genĂŒgen. Browser implementieren ihre eigenen Modelle darĂŒber, welche CT-Protokolle diese fĂŒr die Bewertung der VertrauenswĂŒrdigkeit heranziehen.

Google Chrome beispielsweise erzwingt eine Expect-CT Richtlinie nur fĂŒr einen Zeitraum von 10 Wochen nach dem Build Datum.

Spezifikationen

Specification Title
Internet Draft Expect-CT Erweiterung fĂŒr HTTP

Browser UnterstĂŒtzung

BCD tables only load in the browser