it-swarm.com.de

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

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?

112
drs

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.

100
LawrenceC

Diese beiden Bilder zusammen haben mir alles erklärt:

Quelle: linuxvoice

 enter image description here

Quelle: infosecinstitute

 enter image description here

42
Andrejs

Nehmen wir an, Firma A hat ein Schlüsselpaar und muss seinen öffentlichen Schlüssel für die öffentliche Nutzung 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. In Kürze signiert die Zertifizierungsstelle den öffentlichen Schlüssel von Unternehmen A mit dem privaten Schlüssel seiner Zertifizierungsstelle, wodurch die 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.

35
Mohsen Heydari

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.  enter image description here  enter image description here

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 nur Probleme 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 eine Menge eines oder mehrerer Zertifikate hat, denen er vertraut. Wenn das Zertifikat nicht im Set ist, 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 für viele Server Zertifikate 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.

4
Uddhav Gautam

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 hingegen während der Sitzung eindeutig generiert und nach Beendigung der Sitzung verworfen.

Lesen Sie hier mehr

3
Shekhar

OK, lassen Sie uns das 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 Schließfach entspricht der Bankschlüssel dem öffentlichen Schlüssel, da er bei der Bank verbleibt und der öffentliche Schlüssel beim Zertifikat verbleibt. Sie haben den privaten Schlüssel, der für die "Erlangung Ihres Zertifikats" benötigt wird, 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 Ihr Schließfach 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).

1
lwood