Wichtige Sicherheitsterminologie

Zwei der Hürden für Entwickler bei der Migration zu HTTPS sind Konzepte und Terminologie. Dieser Leitfaden bietet einen kurzen Überblick über beide.

Chris Palmer
Chris Palmer
Matt Gaunt

Zusammenfassung

  • Es wurden öffentliche/private Schlüssel zum Signieren und Entschlüsseln von Nachrichten zwischen dem Browser und dem Server verwendet.
  • Eine Zertifizierungsstelle (Certificate Authority, CA) ist eine Organisation, die für die Zuordnung zwischen öffentlichen Schlüsseln und öffentlichen DNS-Namen (z. B. www.foobar.com) steht.
  • Eine Zertifikatssignieranforderung (Certificate Signing Request, CSR) ist ein Datenformat, in dem ein öffentlicher Schlüssel mit einigen Metadaten über die Entität zusammengefasst wird, die den Schlüssel besitzt

Was sind die öffentlichen und privaten Schlüsselpaare?

Ein öffentliches/privates Schlüsselpaar besteht aus sehr großen Zahlen, die als Verschlüsselungs- und Entschlüsselungsschlüssel verwendet werden und eine spezielle mathematische Beziehung haben. Ein gängiges System für Schlüsselpaare ist das RSA-Kryptosystem. Der öffentliche Schlüssel wird zum Verschlüsseln von Nachrichten verwendet und die Nachrichten können nur mit dem entsprechenden privaten Schlüssel entschlüsselt werden. Ihr Webserver gibt seinen öffentlichen Schlüssel weltweit an und Clients (z. B. Webbrowser) verwenden ihn, um einen sicheren Kanal per Bootstrapping zu Ihrem Server zu verbinden.

Was ist eine Zertifizierungsstelle?

Eine Zertifizierungsstelle (CA) ist eine Organisation, die für die Zuordnung zwischen öffentlichen Schlüsseln und öffentlichen DNS-Namen (z. B. „www.foobar.com)“ steht. Wie kann ein Client beispielsweise feststellen, ob ein bestimmter öffentlicher Schlüssel der wahre öffentliche Schlüssel für www.foobar.com ist? Das lässt sich nicht feststellen. Eine Zertifizierungsstelle bestätigt, dass ein bestimmter Schlüssel für eine bestimmte Website der richtige ist. Dazu verwendet sie ihren eigenen privaten Schlüssel, um den öffentlichen Schlüssel der Website kryptographisch zu signieren. Diese Signatur ist rechentechnisch nicht fälschbar. Browser und andere Clients verwalten Trust-Anchor-Speicher mit den öffentlichen Schlüsseln der bekannten Zertifizierungsstellen und verwenden diese öffentlichen Schlüssel zur kryptografischen Überprüfung der Signaturen der Zertifizierungsstelle.

Ein X.509-Zertifikat ist ein Datenformat, in dem ein öffentlicher Schlüssel mit einigen Metadaten zu der Entität zusammengefasst wird, die den Schlüssel besitzt. Im Web ist der Inhaber des Schlüssels der Website-Operator und die wichtigen Metadaten sind der DNS-Name des Webservers. Wenn ein Client eine Verbindung zu einem HTTPS-Webserver herstellt, zeigt der Webserver dem Client sein Zertifikat zur Überprüfung an. Der Client überprüft, ob das Zertifikat nicht abgelaufen ist, ob der DNS-Name mit dem Namen des Servers übereinstimmt, zu dem der Client eine Verbindung herstellen möchte, und ob das Zertifikat von einer bekannten Trust-Anchor-Zertifizierungsstelle signiert wurde. In den meisten Fällen signieren Zertifizierungsstellen die Webserverzertifikate nicht direkt. Üblicherweise besteht eine Zertifikatskette, die einen Vertrauensanker mit einem Zwischen-Signer bzw. -Unterzeichnern und schließlich mit dem eigenen Zertifikat des Webservers (der Endentität) verknüpft.

Was ist eine Anfrage zur Zertifikatssignierung?

Eine Zertifikatsignierungsanfrage (Certificate Signing Request, CSR) ist ein Datenformat, das wie ein Zertifikat einen öffentlichen Schlüssel mit einigen Metadaten über die Entität bündelt, die den Schlüssel besitzt. Allerdings interpretieren Clients keine Zertifizierungsstellen, sondern Zertifizierungsstellen. Wenn eine Zertifizierungsstelle für den öffentlichen Schlüssel Ihres Webservers tätig werden soll, senden Sie der Zertifizierungsstelle eine Zertifizierungsstelle. Die Zertifizierungsstelle validiert die Informationen in der CSR und generiert damit ein Zertifikat. Die Zertifizierungsstelle sendet Ihnen dann das endgültige Zertifikat und Sie installieren dieses Zertifikat (oder wahrscheinlicher eine Zertifikatskette) und Ihren privaten Schlüssel auf Ihrem Webserver.