Zwei der Hürden, mit denen Entwickler bei der Migration zu HTTPS konfrontiert sind, sind Konzepte und Terminologie. Dieser Leitfaden bietet einen kurzen Überblick über beides.
Zusammenfassung
- Es wurden öffentliche/private Schlüssel verwendet, um Nachrichten zwischen dem Browser und dem Server zu signieren und zu entschlüsseln.
- 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) verantwortlich ist.
- Eine Anfrage für die Signierung des Zertifikats (Certificate Signing Request, CSR) ist ein Datenformat, das einen öffentlichen Schlüssel zusammen mit einigen Metadaten über die Entität bündelt, die den Schlüssel besitzt
Was sind die öffentlichen und privaten Schlüsselpaare?
Ein öffentliches/privates Schlüsselpaar ist ein Paar sehr großer Zahlen, das als Verschlüsselungs- und Entschlüsselungsschlüssel verwendet wird und eine spezielle mathematische Beziehung hat. Ein gängiges System für Schlüsselpaare ist das RSA-Kryptosystem. Mit dem öffentlichen Schlüssel werden Nachrichten verschlüsselt. Die Nachrichten können nur mit dem entsprechenden privaten Schlüssel entschlüsselt werden. Ihr Webserver bewirbt seinen öffentlichen Schlüssel und Clients (z. B. Webbrowser) verwenden diesen, um einen sicheren Kanal auf Ihrem Server zu bootstrappen.
Was ist eine Zertifizierungsstelle?
Eine Zertifizierungsstelle (Zertifizierungsstelle) ist eine Organisation, die für die Zuordnung zwischen öffentlichen Schlüsseln und öffentlichen DNS-Namen (z. B. www.foobar.com) verantwortlich ist. Woher weiß ein Client beispielsweise, ob ein bestimmter öffentlicher Schlüssel der öffentliche Schlüssel true für www.foobar.com ist? A Priori, das können wir nicht wissen. Eine Zertifizierungsstelle sichert zu, dass ein bestimmter Schlüssel für eine bestimmte Website gültig ist, indem sie ihren eigenen privaten Schlüssel verwendet, um den öffentlichen Schlüssel der Website kryptografisch zu signieren. Diese Signatur kann rechnerisch nicht fälschbar gemacht werden. Browser und andere Clients verwalten Trust-Anchor-Speicher mit den öffentlichen Schlüsseln, die bekannten Zertifizierungsstellen gehören. Sie verwenden diese öffentlichen Schlüssel, um die Signaturen der Zertifizierungsstelle kryptografisch zu prüfen.
Ein X.509-Zertifikat ist ein Datenformat, das einen öffentlichen Schlüssel mit einigen Metadaten über die Entität bündelt, die den Schlüssel besitzt. Im Web ist der Inhaber des Schlüssels der Websiteoperator und die wichtigen Metadaten sind der DNS-Name des Webservers. Wenn ein Client eine Verbindung zu einem HTTPS-Webserver herstellt, stellt der Webserver sein Zertifikat zur Überprüfung durch den Client vor. Der Client bestätigt, dass 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 CAs Webserverzertifikate nicht direkt. In der Regel gibt es eine Zertifikatskette, die einen Trust-Anchor mit einem Zwischensignatur oder den Unterzeichnern und schließlich mit dem eigenen Zertifikat des Webservers (der Endentität) verknüpft.
Was ist eine Anfrage zur Zertifikatssignierung?
Eine Anfrage zur Zertifikatssignierung (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. Clients interpretieren CSRs jedoch nicht, Zertifizierungsstellen hingegen schon. Wenn Sie eine Zertifizierungsstelle für den öffentlichen Schlüssel Ihres Webservers erwerben möchten, senden Sie der Zertifizierungsstelle eine CSR. Die Zertifizierungsstelle validiert die Informationen in der CSR und verwendet sie, um ein Zertifikat zu generieren. Die Zertifizierungsstelle sendet Ihnen dann das endgültige Zertifikat und Sie installieren dieses Zertifikat (oder, was wahrscheinlicher ist, eine Zertifikatskette) und Ihren privaten Schlüssel auf Ihrem Webserver.