Was ist der Unterschied zwischen einem Zertifikat und einem Schlüssel in Bezug auf SSL?


126

Wenn ich etwas über SSL zu verstehen versuche, fällt es mir immer schwer zu verfolgen, worauf sich "Schlüssel" und "Zertifikat" beziehen. Ich fürchte, viele Leute benutzen sie falsch oder austauschbar. Gibt es einen Standardunterschied zwischen einem Schlüssel und einem Zertifikat?


Für SSL verwendete Zertifikate basieren in
hohem

Antworten:


114

Ein Zertifikat enthält einen öffentlichen Schlüssel.

Das Zertifikat enthält nicht nur den öffentlichen Schlüssel, sondern auch zusätzliche Informationen wie den Aussteller, den Verwendungszweck des Zertifikats und andere Metadatentypen.

In der Regel wird ein Zertifikat selbst von einer Zertifizierungsstelle (CA) mit dem privaten Schlüssel der CA signiert. Hiermit wird die Echtheit des Zertifikats überprüft.


4
@Zoredache Wenn ein Zertifikat normalerweise nur einen öffentlichen Schlüssel hat, gibt es einen guten Namen für den Aufruf von .p12- oder .pfx-Dateien, die Zertifikate und private Schlüssel zusammen enthalten?
Drs

Ein pkcs12 ist ein Archivformat. Es kann einen Schlüssel enthalten oder auch nicht. Normalerweise versuche ich, immer spezifisch zu sein, wenn ich darauf verweise, was eine bestimmte Datei enthält, oder sage einfach pkcs12-Datei.
Zoredache

2
Wo sind diese zusätzlichen Informationen begraben? Ich habe mir einige Zertifikate angesehen und es ist alles Kauderwelsch für mich
CodyBugstein

3
Der Kauderwelsch, den Sie betrachten, ist Base64-Codierung. Dies geschieht wahrscheinlich aus einem ähnlichen Grund, aus dem E-Mail-Anhänge in E-Mail-Anhänge konvertiert werden - im Grunde genommen, um sicherzustellen, dass sie nur für ASCII entwickelte Protokolle und Mechanismen ohne gelegentliche Änderungen und ohne Rücksicht auf Zeilenumbrüche, Klammern usw. übertragen können. Der opensslBefehl kann dekodieren und analysieren Sie diese, oder Sie können ein Online-Dienstprogramm wie das folgende verwenden: lapo.it/asn1js
LawrenceC

Ist das Zertifikat von einer Zertifizierungsstelle signiert oder wird mit dem Server kommuniziert?
Olshansk

58

Diese beiden Bilder zusammen haben mir alles erklärt:

Quelle: linuxvoice

Bildbeschreibung hier eingeben

Quelle: infosecinstitute

Bildbeschreibung hier eingeben



Nett. 1 Klarstellung: das 1. Bild ist Standard (1-Wege) TLS-Authentifizierung; die 2., gegenseitige (2-Wege) auth. Und ein zusätzlicher Aufruf in der ersten würde weiter dazu beitragen, zu erklären, wie die Vertrauenswürdigkeit tatsächlich hergestellt wird (alles in diesem 1 freundlicheren Bild): Nachdem der Client das Public-Key-Zertifikat des Servers erhalten hat, überprüft der Client, ob die Zertifizierungsstelle, die das Zertifikat signiert hat Das Zertifikat des Servers ist in der privaten Liste der vertrauenswürdigen Zertifizierungsstellen des Clients enthalten (wobei festgestellt wird, dass es dieser Zertifizierungsstelle jetzt auch vertraut). Dann ist es sicher, dem Server den Sitzungsschlüssel zu senden, mit dem jeder nun nachfolgende Kommunikationen verschlüsseln und entschlüsseln kann.
user1172173

Der erste Link zu linuxvoice.com /... gibt einen Zertifikatfehler aus. Ironisch.
Tobb

37

Nehmen wir an, Unternehmen A hat ein Schlüsselpaar und muss seinen öffentlichen Schlüssel für die öffentliche Verwendung veröffentlichen (auch bekannt als ssl auf seiner Website).

  • Unternehmen A muss eine Zertifikatsanforderung (Certificate Request, CR) an eine Zertifizierungsstelle (Certificate Authority, CA) senden, um ein Zertifikat für sein Schlüsselpaar zu erhalten.
  • Der öffentliche Schlüssel, jedoch nicht der private Schlüssel, des Schlüsselpaars von Unternehmen A ist Teil der Zertifikatsanforderung.
  • Die Zertifizierungsstelle verwendet dann die Identitätsinformationen von Unternehmen A, um zu bestimmen, ob die Anforderung die Kriterien der Zertifizierungsstelle für die Ausstellung eines Zertifikats erfüllt.
    Wenn die Zertifizierungsstelle die Anforderung genehmigt, stellt sie ein Zertifikat für Unternehmen A aus. Kurz gesagt: Die Zertifizierungsstelle signiert den öffentlichen Schlüssel von Unternehmen A mit dem privaten Schlüssel ihrer Zertifizierungsstelle, wodurch deren Authentizität überprüft wird.

Der öffentliche Schlüssel von Unternehmen A, der mit dem privaten Schlüssel einer gültigen Zertifizierungsstelle signiert ist, wird als Zertifikat von Unternehmen A bezeichnet.


Verknüpft Unternehmen A seinen privaten Schlüssel (von Unternehmen A) mit dem Zertifikat (von Unternehmen A)?
Tola Odejayi

Nein, ein privater Schlüssel bleibt für A.
geheim

Wo wird also der private Schlüssel von Unternehmen A verwendet?
23.

2
Nach oben genannten Formalitäten. Unternehmen A verfügt auf seiner Website über ein gültiges SSL-Zertifikat. Jeder Besucher (Browser), der mit der Website kommuniziert, verschlüsselt seine Nachricht mit dem öffentlichen Schlüssel des Zertifikats. Firma A, die den privaten Schlüssel des SSL-Zertifikats besitzt, ist die einzige, die die Nachricht entschlüsseln kann.
Mohsen Heydari

Ich denke, Firma A ist männlich.
DimiDak

5

Lassen Sie mich mit einem Beispiel erklären.

In der normalen Schlüsselpaar-basierten PKI gibt es einen privaten Schlüssel und einen öffentlichen Schlüssel.

In einem zertifikatbasierten System gibt es einen privaten Schlüssel und ein Zertifikat. Das Zertifikat enthält mehr Informationen als der öffentliche Schlüssel.

Demo (Sie können ein Zertifikat und einen privaten Schlüssel erstellen): http://www.selfsignedcertificate.com/

Sie können die Datei mit dem privaten Schlüssel und das Zertifikat herunterladen. Sie sehen, dass die Zertifikatdatei viele Informationen enthält, wie unten gezeigt. Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben

Sie können Ihr generiertes Zertifikat (das mit einem Texteditor geöffnet wird) und Ihren privaten Schlüssel (das mit einem Texteditor geöffnet wird) auf dieser Website abgleichen : https://www.sslshopper.com/certificate-key-matcher.html

Wenn das Zertifikat mit dem privaten Schlüssel des Clients übereinstimmt, ist der Client sicher, dass das Zertifikat vom Client oder vom Trusted Agent (CA) des Clients bereitgestellt wird.

Es gibt jedoch Probleme nur bei der Kommunikation mit privaten Schlüsseln und Zertifikaten .

Da jeder sein eigenes Zertifikat und seinen eigenen privaten Schlüssel generieren kann, beweist ein einfacher Handshake nichts über den Server, außer dass der Server den privaten Schlüssel kennt, der mit dem öffentlichen Schlüssel des Zertifikats übereinstimmt. Eine Möglichkeit, dieses Problem zu lösen, besteht darin, dass der Client über ein oder mehrere Zertifikate verfügt, denen er vertraut. Befindet sich das Zertifikat nicht im Set, ist der Server nicht vertrauenswürdig .

Dieser einfache Ansatz hat mehrere Nachteile. Server sollten in der Lage sein, mit der Zeit ein Upgrade auf stärkere Schlüssel durchzuführen ("Schlüsselrotation"), wodurch der öffentliche Schlüssel im Zertifikat durch einen neuen ersetzt wird. Leider muss jetzt die Client-App aktualisiert werden, da es sich im Wesentlichen um eine Änderung der Serverkonfiguration handelt. Dies ist besonders problematisch, wenn der Server nicht unter der Kontrolle des App-Entwicklers steht, z. B. wenn es sich um einen Webdienst eines Drittanbieters handelt. Dieser Ansatz hat auch Probleme, wenn die App mit beliebigen Servern wie einem Webbrowser oder einer E-Mail-App kommunizieren muss.

Um diese Nachteile zu beheben, werden Server in der Regel mit Zertifikaten bekannter Aussteller konfiguriert, die als Certificate Authorities (CAs) bezeichnet werden. Die Host-Plattform (Client) enthält im Allgemeinen eine Liste bekannter CAs, denen sie vertraut. Ähnlich wie ein Server verfügt eine Zertifizierungsstelle über ein Zertifikat und einen privaten Schlüssel. Bei der Ausstellung eines Zertifikats für einen Server signiert die Zertifizierungsstelle das Serverzertifikat mit ihrem privaten Schlüssel. Der Client kann dann überprüfen, ob der Server über ein Zertifikat verfügt, das von einer der Plattform bekannten Zertifizierungsstelle ausgestellt wurde.

Bei der Lösung einiger Probleme führt die Verwendung von Zertifizierungsstellen jedoch zu einer anderen. Da die Zertifizierungsstelle Zertifikate für viele Server ausstellt, müssen Sie dennoch sicherstellen, dass Sie mit dem gewünschten Server kommunizieren. Um dies zu beheben, identifiziert das von der Zertifizierungsstelle ausgestellte Zertifikat den Server entweder mit einem bestimmten Namen wie gmail.com oder einer Gruppe von Hosts mit Platzhalterzeichen wie * .google.com.

Das folgende Beispiel wird diese Konzepte etwas konkreter machen. Im folgenden Snippet von einer Befehlszeile aus werden mit dem Befehl s_client des openssl-Tools die Serverzertifikatsinformationen von Wikipedia angezeigt. Es gibt Port 443 an, da dies der Standard für HTTPS ist. Der Befehl sendet die Ausgabe von openssl s_client an openssl x509, das Informationen zu Zertifikaten gemäß dem X.509-Standard formatiert. Insbesondere fragt der Befehl nach dem Betreff, der die Servernameninformationen enthält, und dem Aussteller, der die Zertifizierungsstelle identifiziert.

$ openssl s_client -connect wikipedia.org:443 | openssl x509 -noout -subject -issuer
subject= /serialNumber=sOrr2rKpMVP70Z6E9BT5reY008SJEdYv/C=US/O=*.wikipedia.org/OU=GT03314600/OU=See www.rapidssl.com/resources/cps (c)11/OU=Domain Control Validated - RapidSSL(R)/CN=*.wikipedia.org
issuer= /C=US/O=GeoTrust, Inc./CN=RapidSSL CA

Sie können sehen, dass das Zertifikat für Server ausgestellt wurde, die mit * .wikipedia.org von der RapidSSL-Zertifizierungsstelle übereinstimmen.

Wie Sie sehen, kann der Client aufgrund dieser zusätzlichen Informationen, die von CA an Server gesendet werden, leicht erkennen, ob er mit seinem Server kommuniziert oder nicht.


3

Ein SSL- Zertifikat wird von einer vertrauenswürdigen Zertifizierungsstelle bezogen, die für die sichere Verbindung der Website bürgt. SSL-Zertifikate enthalten in der Regel das Authentifizierungslogo sowie die öffentlichen Schlüssel, die zum Ver- und Entschlüsseln von Daten erforderlich sind, die an den Computer gesendet werden sollen. SSL-Schlüsselfunktionen

Während einer Sitzung können mehrere SSL- Schlüssel generiert werden. Sie werden zum Ver- und Entschlüsseln der Informationen verwendet, die zum und vom Computer gesendet werden. Mit den Schlüsseln wird überprüft, ob die Informationen geändert oder manipuliert wurden.

Lebenszyklusunterschied

Zertifikate halten länger als SSL-Schlüssel. SSL-Zertifikate werden von der Zertifizierungsstelle bezogen, die von Banken und Unternehmen regelmäßig erneuert werden kann. SSL-Schlüssel oder Sitzungsschlüssel werden dagegen während der Sitzung eindeutig generiert und nach Beendigung der Sitzung verworfen.

Lesen Sie hier mehr


2

OK, lassen Sie uns dies aufschlüsseln, damit nicht-technische Leute verstehen können.

Stellen Sie es sich so vor. Ein Zertifikat ist wie ein Safe bei Ihrer Bank. Es enthält viele wichtige Dinge; im Allgemeinen Sachen, die Ihre Identität enthalten. Das Zertifikat verfügt über einen öffentlichen Schlüssel und benötigt zum Öffnen einen privaten Schlüssel.

Ihr Schließfach öffnet sich ebenfalls mit zwei Schlüsseln, genau wie ein Zertifikat.
Bei einem Safe ist der Bankschlüssel wie der öffentliche Schlüssel, da er bei der Bank verbleibt und der öffentliche Schlüssel beim Zertifikat verbleibt. Sie haben den privaten Schlüssel, der benötigt wird, um "Ihr Zertifikat zu erhalten", und im Beispiel des Safes wird neben dem öffentlichen Schlüssel auch Ihr privater Schlüssel benötigt.

Bevor Sie Ihr Schließfach tatsächlich öffnen können, müssen Sie zunächst Ihre Identität überprüfen (ähnlich einer Zertifikatsanforderung). Sobald Sie identifiziert wurden, verwenden Sie Ihren privaten Schlüssel zusammen mit dem öffentlichen Schlüssel, um Ihre Sicherheitsbox zu öffnen. Dies ist ein bisschen so, als ob Sie Ihre Zertifikatsanforderung stellen und dann Ihr Zertifikat von der Zertifizierungsstelle erhalten (sofern Sie identifiziert werden können (vertrauenswürdig) und über den richtigen Schlüssel verfügen).


3
<PiratesOfTheCarribean> Also haben wir nach diesem Schlüssel gehen </ PiratesOfTheCarribean> (Lesen Sie : Sie sind keinen Sinn überhaupt zu machen ...)!
Timo
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.