Ich habe Probleme zu verstehen, warum wir SSL-Zertifikate erwerben müssen, wenn wir sie lokal mit openSSL generieren können. Was ist der Unterschied zwischen dem Zertifikat, das ich kaufe, und einem Testzertifikat, das ich lokal erstelle? Ist es nur ein großer Betrug?
ssl
ssl-certificate
https
SK '
quelle
quelle
Antworten:
Ein Wort - Vertrauen. Das SSL-Zertifikat eines Anbieters, dem Ihr Browser vertraut, bedeutet, dass dieser zumindest eine grundlegende Überprüfung durchgeführt hat, um zu bestätigen, dass Sie der sind, für den Sie sich ausgeben.
Ansonsten könnte ich meine eigenen Zertifikate für google.com oder yourbank.com erstellen und so tun, als ob ich es wäre.
Bezahlte Zertifikate bieten (normalerweise) keine zusätzliche Verschlüsselungsstufe für selbstsignierte Zertifikate. Ein selbstsigniertes Zertifikat führt jedoch dazu, dass der Browser einen Fehler ausgibt.
Ja, Teile von SSL sind ein Betrug (ein Verisign-Zertifikat im Vergleich zu einem Geotrust, bei dem Verisign bis zu 100-mal teurer ist), aber nicht alle.
Wenn dies alles interne Dinge sind, ist kein kostenpflichtiges Zertifikat erforderlich, da Sie Ihre eigenen Vertrauensmethoden anwenden können (z. B. Nichts tun oder nur Fingerabdruckprüfung).
quelle
Der Sinn eines SSL-Zertifikats besteht darin, dass der Browser dem öffentlichen Schlüssel des Servers für HTTPS-Transaktionen in angemessenem Maße vertraut.
Lassen Sie uns zunächst untersuchen, was passieren würde, wenn wir keine Zertifikate verwenden würden. Stattdessen würde der Server den öffentlichen Schlüssel im Klartext senden und der Browser würde eine verschlüsselte Kommunikation mit ihm initiieren (das erste, was er tun würde, wäre, seinen eigenen öffentlichen Schlüssel zu verschlüsseln und ihn sicher zu senden). Was ist, wenn ich und der Angreifer mich in die Mitte zwängen? Ich könnte Ihren öffentlichen Schlüssel im laufenden Betrieb durch meinen ersetzen, eine verschlüsselte Verbindung mit dem Browser herstellen, alles entschlüsseln, was ich erhalte, mit Ihrem öffentlichen Schlüssel verschlüsseln und übermitteln (und umgekehrt für Datenverkehr vom Typ Antwort). Keiner würde den Unterschied bemerken, da niemand die öffentlichen Schlüssel vorher kannte.
OK, wir haben festgestellt, dass der Browser meinem öffentlichen Schlüssel vertrauen muss. Eine Möglichkeit, dies zu tun, besteht darin, alle registrierten öffentlichen Schlüssel im Browser zu speichern. Dies würde natürlich jedes Mal ein Update erfordern, wenn jemand einen öffentlichen Schlüssel registriert, und dies würde zum Aufblähen führen. Man könnte öffentliche Schlüssel auch in den Händen von DNS-Servern 1 halten , aber DNS-Server können auch gefälscht werden, und DNS ist kein sicheres Protokoll.
Die einzige verbleibende Option besteht darin, das Vertrauen durch einen Signaturmechanismus zu "verketten". Der Browser speichert die Details einiger Zertifizierungsstellen, und Ihr Zertifikat wird zusammen mit einer Reihe anderer Zertifikate gesendet, wobei jedes Zertifikat das nächste signiert und zur Stammzertifizierungsstelle / vertrauenswürdigen Zertifizierungsstelle / eingebauten Zertifizierungsstelle wechselt. Es ist die Aufgabe der Zertifizierungsstelle, sicherzustellen, dass die Domäne Ihnen gehört, bevor Sie ein Zertifikat für Sie signieren.
Da es sich bei einer Zertifizierungsstelle um ein Unternehmen handelt, wird hierfür eine Gebühr erhoben. Einige mehr als andere.
Wenn Sie ein eigenes Zertifikat erstellt haben, erhalten Sie eine Fehlermeldung ähnlich der folgenden:
Es gibt keinen Wert für ein nicht signiertes Zertifikat. Es ist, als würde man einen Bleistift und ein Heft nehmen, einen Pass zeichnen, der behauptet, Barack Obama zu sein. Niemand wird es vertrauen.
1. Schließlich wird Ihr DNS-Eintrag erstellt, wenn Sie eine Domain registrieren. Ein interessantes Konzept wäre die Verwendung eines robusteren Protokolls, mit dem Sie gleichzeitig öffentliche Schlüssel registrieren können.
quelle
Die Antwort auf Ihre Frage hängt von Ihrer Zielgruppe ab: Da das gesamte Zertifikatsystem auf "Vertrauen" basiert, müssen Ihre Benutzer die Möglichkeit haben, Ihre Zertifikate selbst zu prüfen oder einem Dritten zu vertrauen, der diese Prüfung durchgeführt hat und den Erfolg durch Signieren anzeigt Ihr Zertifikat. Der Ausdruck "um Ihre Zertifikate zu prüfen", den ich verwendet habe, ist etwas ungenau: Die lange Version sollte lauten: "um zu beweisen, dass Sie der Eigentümer des Zertifikats sind und es verwenden dürfen".
Wenn alle Ihre Benutzer Sie persönlich kennen und technisch nachweisen können, dass Ihr Zertifikat von Ihnen selbst ausgestellt wurde, besteht keine technische Notwendigkeit, ein Zertifikat eines "zertifizierten" Anbieters zu verwenden. In diesem Fall ist das selbstsignierte Zertifikat möglicherweise sogar besser als eines von einem dieser Anbieter.
In den meisten Fällen haben die Benutzer jedoch keine Möglichkeit, diesen Vorgang selbst durchzuführen. Hier kommen diese SSL-Anbieter auf den Markt. Sie bieten den Service an, diese Überprüfungen durchzuführen und das Ergebnis der Überprüfungen durch Signieren des Zertifikats auszudrücken. Ein wichtiger Aspekt ist jedoch: Durch das Signieren eines Zertifikats drückt ein SSL-Anbieter aus, dass er die Identität des Zertifikatsausstellers gemäß seiner eigenen Signaturrichtlinie überprüft hat. Der Benutzer muss also entscheiden, ob diese Richtlinie präzise genug ist und ob er dem Anbieter vertrauen kann.
quelle
Der wichtigste Punkt ist, dass die normalen Benutzer keine Möglichkeit haben, die Richtigkeit des Zertifikats zu überprüfen, wenn das Zertifikat selbst erstellt wurde. Bei einem gekauften Zertifikat wird davon ausgegangen, dass mindestens überprüft wurde, ob der Ausdruck im Zertifikat korrekt ist. Idee: Wenn Sie Ihr Telefon und Ihre Adresse in das Zertifikat eintragen, nimmt die Zertifizierungsstelle an, dies zu überprüfen, dies tun sie jedoch selten.
Außerdem ist das Kaufzertifikat nachvollziehbar, dh der Benutzer kann immer nachvollziehen, woher das Zertifikat stammt, während ein selbstsigniertes Zertifikat nur eine zufällige Identität ist.
Für viele Systeme war in der Vergangenheit eine "Codesignierung" von einer autorisierten Zertifizierungsstelle erforderlich, die richtliniengesteuert ist. Da jedoch selbstsignierte Zertifikate so zahlreich sind, sind sie jetzt nicht mehr zu 100% gültig.
quelle
Es gibt keinen technischen Unterschied (Ihre eigenen sind nicht weniger sicher), sondern nur einen organisatorischen: Das Zertifikat Ihrer Zertifizierungsstelle ist nicht Teil der Standardinstallation des Browsers. Dies macht es für die meisten Menschen unangenehm, eine Verbindung zu Ihrem Zertifikat herzustellen. Es wäre jedoch nicht sinnvoll, ein Zertifikat für ein internes Netzwerk zu erwerben.
quelle
Es kommt darauf an zu vertrauen. Ein "zertifizierter" SSL-Anbieter ist angeblich seriös (obwohl dies manipuliert werden kann) im Vergleich zu einem selbstsignierten Zertifikat vom Server selbst.
Wenn Ihre Organisation über eine eigene Zertifikatsignatur verfügt, ist dies durchaus akzeptabel und sollte keine Warnung für Benutzer auslösen (vorausgesetzt, sie verwenden Ihren Zertifikatsschlüsselbund als vertrauenswürdige Quelle), es wird jedoch weiterhin eine Warnung angezeigt, wenn Sie versuchen, ihn extern zu verwenden.
Fazit: Für den internen Gebrauch ist es in Ordnung, wenn Sie es einem zahlenden Kunden extern zur Verfügung stellen, und Sie können beruhigt sein, wenn Sie keine Warnungen haben. Würden Sie sich sicherer fühlen, wenn Ihre Finanztransaktionen über eine akkreditierte Quelle abgewickelt werden, oder wenn jemand auf der Straße steht, den Sie nicht wirklich kennen?
quelle
Vor kurzem hat LetsEncrypt die Verfügbarkeit seiner Befehlszeilentools zum Generieren gültiger Zertifikate angekündigt.
Wenn Sie sich fragen, ob diese Zertifikate in gängigen Browsern gültig sind, lautet die Antwort Ja:
Link für Systemadministratoren und Entwickler: https://letsencrypt.org/getting-started/
Im Zeitalter der Blockchain-Technologie und der Beseitigung von Vertrauenssystemen Dritter war es an der Zeit, die Ausstellung teurer Zertifikate durch einige ausgewählte Behörden in Frage zu stellen.
Obwohl Letsencrypt nichts mit Blockchain-Technologie zu tun hat, ist es ein Anfang in die richtige Richtung. Die Notwendigkeit, jedes Jahr eine hohe Gebühr an eine teure Zertifizierungsstelle zu zahlen, hat hoffentlich ein logisches Ende.
quelle
Ein selbstsigniertes SSL-Zertifikat hat einfach keine Bedeutung. Es hat keinen Wert für die Außenwelt. Es ist, als würde man sagen "Ich besitze Spanien". Sie mögen ehrlich denken, dass Sie es tun, aber niemand wird Ihre Behauptung anerkennen.
Eine ähnliche Analogie wäre, etwas zu erfinden und dann zu behaupten, Sie besäßen die Rechte an der Erfindung, aber wenn Sie kein Patent beim Amt angemeldet haben, wird es schwierig sein, Ihr Wort dafür zu nehmen, oder?
Der springende Punkt eines Zertifikats ist, dass es von einer Behörde unterzeichnet ist, der Menschen vertrauen. Wenn eine Website ein gültiges SSL-Zertifikat hat, bedeutet dies, dass der Eigentümer sich die Mühe gemacht hat, seine Website zu registrieren, das SSL-Zertifikat zu bezahlen und eine offizielle Zertifizierung von einer echten Zertifizierungsstelle erhalten hat, sodass es sich wahrscheinlich nicht um eine billige Phishing-Website handelt. Wenn Sie jedoch selbstsignierten Zertifikaten vertrauen, kann diese Phishing-Website einfach ein eigenes gefälschtes Zertifikat (das Sie gerne akzeptieren) und voila generieren.
Wenn es sich um ein internes Netzwerk in einem privaten Intranet handelt, vertrauen Sie sich wahrscheinlich bereits. In diesem Fall fügt ein autorisierendes Zertifikat also nicht wirklich etwas hinzu, sodass Sie die leuchtend roten Lichter ignorieren können, die Ihr Browser auf Sie wirft . Das Gleiche gilt für kleine Websites, auf denen weiterhin Client-Server-Datenverkehr verschlüsselt werden soll, Ihr Bedrohungsmodell jedoch keine starke Authentifizierung gewährleistet. In diesem Fall können Sie mit einem selbstsignierten Zertifikat auskommen und das (für Ihr Bedrohungsmodell vernachlässigbare) Zertifikat akzeptieren. Risiko eines MITM.
Was wahrscheinlich zufriedenstellend ist, wenn man bedenkt, wie teuer vertrauenswürdige SSL-Zertifikate sein können.
Mit anderen Worten, ein selbstsigniertes Zertifikat lautet: "Ich bestätige, dass ich der bin, der ich bin - vertraue mir !".
quelle
Um es kurz und einfach zu halten ... und ein wenig zu entstellen, was gesagt wurde ...
Es ist nicht das Problem der Verschlüsselung. Mit geeigneten Tools können Sie lokal ein Zertifikat mit der gewünschten Verschlüsselungsart erstellen und ein gültiges Zertifikat erhalten.
Der Hauptvorteil, den Sie beim Kauf eines Zertifikats von einer Zertifizierungsstelle haben, besteht darin, dass sie während der Gültigkeitsdauer des Zertifikats über einen Mechanismus auf ihren Servern verfügen, mit dem Sie alles validieren können, was Sie mit Ihrer Zertifizierung online signiert haben ...
Ihre PCs müssen nicht angeschlossen sein, damit Ihre digitalen Produkte mit Ihrem Zertifikat verifiziert und validiert werden können. Sie sollten die Validierung an die Zertifizierungsstelle weiterleiten.
quelle
Es tut mir leid, dass ich so spät auf diese Diskussion eingegangen bin - ich fand es erwähnenswert, darauf hinzuweisen, dass es mit openssl möglich ist, eine private Zertifizierungsstelle mit einem eigenen Stammzertifikat einzurichten und dann von dieser Zertifizierungsstelle signierte Serverzertifikate zu erstellen. Vorausgesetzt, das CA-Stammzertifikat wird in den Browser importiert und der Browser wird aufgefordert, es zu akzeptieren, wird das Serverzertifikat ohne Kommentar akzeptiert. (Offensichtlich ist dies nur eine praktikable Option, wenn die Benutzergemeinschaft klein ist und die Benutzer sich alle persönlich kennen.)
quelle
Würden Sie jemandem vertrauen, der "Trust Me" sagt? Vertrauen in die Authentizität kann nur von einer "vertrauenswürdigen Behörde" gegeben werden, der jeder vertraut. Deshalb müssen wir das große Geld für die Zertifikate aufbringen.
quelle