Ist ein selbstsigniertes SSL-Zertifikat ein falsches Sicherheitsgefühl?

30

Ist ein selbstsigniertes SSL-Zertifikat ein falsches Sicherheitsgefühl?

Wenn Sie abgehört werden, akzeptiert der Benutzer einfach das Zertifikat, wie er es immer tut.

Andre
quelle

Antworten:

25

Interessante Frage, es kommt meiner Meinung nach auf den Einsatz an. Sie sind weiterhin geschützt, da die Sitzung verschlüsselt ist. Sie können jedoch nur dann feststellen, ob Sie das richtige SSL-Zertifikat erhalten, wenn Sie Ihr CA-Stammzertifikat an Benutzer / Clients verteilen. Für interne Test- / Entwicklungsprojekte funktioniert dies hervorragend. Sie generieren ein Stammzertifizierungsstellenzertifikat, das Sie an Ihre Benutzer verteilen (dies kann über Gruppenrichtlinien in Windows und über die Befehlszeile von openssl in Linux / BSD erfolgen) und verwenden dann dieses Stammzertifikat für Signieren Sie Ihre CSRs. Benutzern wird keine Warnung oder sonstiges angezeigt, und Sie wissen, dass das Zertifikat von Ihrer internen Zertifizierungsstelle signiert wurde.

Bei externen Sites, bei denen Sie dies nicht sicherstellen können, ist ein selbstsigniertes Zertifikat immer noch besser als gar kein SSL, wenn Sie Kennwörter oder andere vertrauliche Informationen über die Verbindung senden.

Auf der positiven Seite gibt es jedoch eine Menge sehr billiger "kommerzieller" Zertifikatsaussteller, darunter auch GoDaddy . Sie können ein Zertifikat für ca. 40 Euro pro Jahr erhalten. GoDaddy bietet sogar kostenlose Zertifikate für OpenSource-Projektwebsites an.

HampusLi
quelle
Genau das machen wir. Seien Sie vorsichtig mit den billigen Zertifikaten. Einige von ihnen haben ziemlich seltsame Stammzertifizierungsstellen, und nicht alle befinden sich in der Sammlung der Stammzertifizierungsstellenzertifikate, die mit allen Browsern geliefert werden.
Wolfgangsz
4
+1 mit Ausnahme von "Selbstsigniertes Zertifikat ist besser als gar kein SSL" - wenn Sie überprüfen, ob es sich um Ihr Zertifikat handelt und nicht um ein von einem MITM bereitgestelltes Zertifikat. Mal ehrlich, wann hat das das letzte Mal ein normaler Benutzer getan? (Ich vermute, die Antwort würde blauen Mond und fliegende Schweine beinhalten.) Mit anderen Worten, wenn Sie ein selbstsigniertes SSL-Zertifikat verwenden, ohne Ihre CA-Zertifikate an Benutzer verteilt zu haben, desensibilisieren Sie Benutzer für die unheimliche Warnung, die sie erhalten - sie werden es lernen Um dies durchzuklicken, sagte man mir, ich solle die Warnung auf mysite.example.com ignorieren, damit ich sie überall ignorieren kann. Schauen Sie, ein Schlosssymbol! Voila, falsches Sicherheitsgefühl!
Piskvor
7
@Piskvor, eigentlich ist das die Schuld des Browsers. Erstens bieten Browser im Allgemeinen keine Möglichkeit, zuvor unbekannte selbstsignierte Zertifikate dauerhaft zu akzeptieren, damit sich der Benutzer nicht bei jedem Anmelden selbst gefährdet. Zweitens schrecken die Browser nicht vor der Verwendung von einfachem HTTP zurück und schaffen auch ein falsches Sicherheitsgefühl. HTTP ist also immer schlechter als HTTPS, sowohl in Bezug auf die Sicherheit als auch in Bezug auf das Bewusstsein der Benutzer (zumindest werden sie gewarnt!).
Rotsor
1
@Rotsor: Erstens hat Opera diese Funktion, die Sie beschreiben, integriert, und FF hat Certificate Patrol (das zumindest vor Zertifikatsänderungen warnt). Beachten Sie auch, dass nicht alles in SSL ein Browser ist (IMAPS usw.). Zweitens, wie ist die vorhandene Fülle an HTTP-Sites die Schuld des Browsers? (und nein, HTTPS-reine Browser haben sich nie durchgesetzt, gerade weil es ein drastisch kleineres Netz gab, mit dem sie browsen konnten). Drittens wäre "sie bekommen die Warnung" nützlich, wenn nur die Benutzer sie lesen würden - und nicht blind auf "Akzeptieren" klicken, um sie verschwinden zu lassen. "Ein Klick auf Akzeptieren bedeutet Verständnis" ist die gemeinsame Täuschung der Entwickler.
Piskvor
1
@Piskvor, gut zu wissen, dass einige Browser diese Funktion anbieten. Was HTTP angeht, kann ich nicht sagen, was zu tun ist (HTTP nicht zuzulassen ist offensichtlich keine Option), aber mit selbstsigniertem SSL mehr sicherheitsrelevante Warnungen als ohne SSL zu haben, ist definitiv falsch und ist das Problem des Browsers. Fehler!
Rotsor
12

Ich werde nicht zustimmen, einmal aus engen technischen Gründen und einmal aus allgemeinen Gründen.

Der eng gefasste technische Hintergrund besteht darin, dass das OP nach selbstsignierten Zertifikaten gefragt hat, und einige andere Antworten beziehen sich auf Zertifikate, die von privaten Zertifizierungsstellen signiert wurden, was ein etwas anderes Problem darstellt. Aber nicht sehr unterschiedlich, das ist also eigentlich nur eine Notiz im Vorbeigehen.

Der größte Einwand ist, dass ich denke, dass selbstsignierte Zertifikate eine wichtige Rolle spielen , solange kommerziell signierte Zertifikate mehr als nur geringfügige Kosten verursachen - und 40 USD pro Jahr für viele Menschen auf diesem Planeten keine geringfügigen Kosten darstellen in der Internet-Sicherheit, sofern ihre Einschränkungen erkannt werden .

Ein selbstsigniertes Zertifikat ist wie ein SSH-Schlüssel aus meiner known_hostsDatei. Ohne unabhängige Überprüfung kann ich nicht sicher sein, dass ich mit dem System spreche, von dem ich glaube, dass ich es bin. Aber es kann mir versichern, dass das System, mit dem ich gerade spreche, dasselbe ist, mit dem ich das letzte Mal gesprochen habe, als ich dachte, ich hätte ein Gespräch damit geführt. Wir zwischenspeichern die ganze Zeit SSH-Schlüssel, und ich habe noch nie einen Systemadministrator getroffen, der unabhängig mehr als einen Bruchteil der öffentlichen Schlüssel in seiner known_hostsDatei überprüft hat .

Selbstsignierte Zertifikate (und im Übrigen Zertifikate, die von nicht allgemein gültigen Zertifizierungsstellen signiert wurden) sind weitaus besser als gar kein SSL, sofern die Benutzer erkennen, dass sie die Kommunikation nur für sich selbst, den Server, sichern, wenn sie diese nicht verifizieren am anderen Ende des DNS-Eintrags und alle Männer in der Mitte, die gerade in der Leitung sind. Wenn sie das Zertifikat unabhängig überprüfen, sind Authentifizierung und Verschlüsselung mindestens so stark wie bei einem Zertifikat, das von einer anerkannten Zertifizierungsstelle signiert wurde.

Darüber hinaus von einer anerkannten CA als one-and-only Internet - Sicherheit Allheilmittel unterzeichnen diejenigen , die die Verwendung von Zertifikaten vorlegen kann schwer zu Themen wie denken , muß die Einbeziehung der chinesischen Regierung unterzeichnet CA im Standard Mozilla Bündel , und die Von Comodo signierte betrügerische SSL-Zertifikate .

MadHatter unterstützt Monica
quelle
Leider ist das "vertrauenswürdige CA" -Modell in der Tat kaputt (und das schon seit Jahren); Leider geht es nicht weg (und es gibt eigentlich nichts Besseres, um es zu ersetzen). Wie immer sind SSL und vertrauenswürdige Zertifizierungsstellen kein magischer Sicherheitsmix. Der Benutzer muss die Sicherheit aktiv aufrechterhalten - was größtenteils eine ziemlich verrückte Annahme ist.
Piskvor
2
Können Ihre Benutzer eine fundierte Einschätzung ihres Vertrauens in die Integrität ihres Pfades zum aktuellen DNS-Server (einschließlich der Möglichkeit von Cache-Vergiftungen) und dem Gerät, auf das sie zugreifen, vornehmen? Meins weiß nicht, was DNS ist, geschweige denn, dass es fundierte Sicherheitsentscheidungen über die Verbindung zu einem Server in einem anderen Zustand treffen kann, der über MPLS mit einem anderen Standort verbunden ist, der über ein Client-VPN mit dem Benutzer verbunden ist über unverschlüsseltes Café WiFi. Vermeiden Sie es, ihnen diese Verantwortung zu übertragen.
Shane Madden
2
@Shane Madden: Ein Bereich, in dem dies möglich ist, sind Administrations-Web-Frontends - z. B. phpMyAdmin (oder in geringerem Maße SVN über HTTPS). Normalerweise gibt es nur eine begrenzte Anzahl von Benutzern, die nur einen Bruchteil eines Hinweises enthalten . Ich würde nicht erwarten, dass mein Urgroßvater eine SSL-Zertifikatswarnung verfälscht, aber ich erwarte dies definitiv von einem anderen Systemadministrator, insbesondere, wenn es sich um einen Server handelt, der unter seiner Kontrolle steht. Ein Benutzer einer Gartenart hat auch keine Ahnung, dass known_hosts@MadHatter auf etwas verweist.
Piskvor
8

Für externe Sites, auf denen die Benutzer Ihr CA-Zertifikat nicht installiert haben (was der häufigste Fall ist), gibt ein selbstsigniertes Zertifikat ein falsches Sicherheitsgefühl und ist daher schlimmer als nutzlos:

  • Wie überprüft der Benutzer ohne ein vorinstalliertes CA-Zertifikat, ob das Zertifikat tatsächlich von Ihnen und nicht von einem Angreifer stammt? Natürlich durch Abgleichen der Zertifikatsfelder (CN, Fingerabdrücke usw.) - aber gegen was? So , jetzt müssen Sie einen Seitenkanal das Zertifikat überprüfen - und in den wenigen Fällen , die ich gesehen habe , dass die Unterstützung Netzbetreiber (die als Seitenkanal zur Überprüfung gedient haben sollte) keine Ahnung, was das bedeuten soll; Außerdem ist der Betrieb eines solchen Seitenkanals um ein Vielfaches teurer als die Erlangung eines von einer vertrauenswürdigen Zertifizierungsstelle signierten Zertifikats, sodass der Benutzer Ihnen blind vertrauen muss.

  • Zweitens ist die beängstigende Warnung, die der Benutzer erhält, aus einem guten Grund beängstigend: Da der Benutzer das vorgelegte Zertifikat nicht überprüfen kann / will , überträgt er möglicherweise Daten sicher an den Elbonian Haxx0r D00dz.

  • Drittens und am schlimmsten ist, dass Sie die Benutzer desensibilisieren : "Nun, sie sagten mir, dass ich diese Warnung auf https://mysite.example.com/ ignorieren sollte , und ein Amboss fiel nicht auf meinen Kopf und meinen Goldfisch ist auch nicht gestorben, sooooo, das heißt, es ist nur eine weitere Warnmeldung ohne wirkliche Bedeutung, also kann ich diese Meldung ignorieren, wenn ich darauf stoße - ich bekomme sowieso dieses nette Schlosssymbol, und das ist wichtig. "

Mit anderen Worten, ist das Schutzniveau vergleichbar mit Plain - HTTP (außer on-the-Wire - Schnüffeln: Obwohl die Daten in verschlüsselter Form übertragen werden, das ist ein ziemlich blutarm Funktion ohne Endpunkt Verifikation), aber das Gefühl von Schutz ist unangemessen hoch . Schlechte Auto-Analogie: "Ich habe ABS, damit ich jetzt unter schlechten Bedingungen sicherer fahren kann" - außer, dass das ABS nur in der Verkaufsbroschüre des Autos vorhanden ist, ohne tatsächlich im Auto vorhanden zu sein.

Empfohlene Lektüre: OWASP SSL Best Practices

TL; DR: Durch die Verwendung von selbstsignierten Zertifikaten auf öffentlich zugänglichen Websites wird das Internet zu einem schlechteren Ort, und zwar zu einem ahnungslosen Benutzer.

Piskvor
quelle
2
@downvoter: Ich würde mich freuen, wenn Sie darauf hinweisen würden, dass meine Antwort sachlich falsch ist ("falsch" im Gegensatz zu "unbequem, unbequem und umständlich"). Sicherheit ist schwer, und "la la la ich kann dich nicht hören" kann nichts dagegen tun.
Piskvor
2
Obwohl ich Ihre Antwort nicht abgelehnt habe, zeigt der Tooltip-Text auf dem Abwärtspfeil das Abwärtsstimmen nur an, wenn eine Antwort nicht nützlich ist. Ich denke, das falsche Sicherheitspendel kann auch in die andere Richtung schwingen. Die jüngsten Verstöße gegen Comodo RA beweisen, dass es für einen "Bösewicht" auch nicht allzu schwierig ist, ein absolut legitimes Zertifikat zu beschaffen.
mahnsc
@mahnsc: Danke für die Erinnerung; Ich bin mir dessen bewusst :-) "Ist ein selbstsigniertes SSL-Zertifikat ein falsches Sicherheitsgefühl?" "Ja, aus folgenden Gründen ..." klingt nützlich, nein? Ich war also neugierig, warum das nicht der Fall sein würde: Ich könnte etwas aus einer entgegengesetzten Sicht lernen; Von einer Gegenstimme, nicht so sehr.
Piskvor
1
@mahnsc: Guter Punkt zu kompromittierten CAs. Ich sage nicht, dass die Liste der Stammzertifizierungsstellen in Stein gemeißelt und nicht hackbar ist - es gibt keine perfekte Sicherheit. Dies zu unterbrechen , ist jedoch erheblich aufwändiger als die Einrichtung eines aufzeichnenden SSL-Proxys auf einem Netzwerk-Gateway.
Piskvor
1
@mahnsc: Ich habe gemeint, dass es einfacher ist, einen SSL-Proxy einzurichten und zu hoffen, dass der Benutzer durch die Warnungen klickt, als einen SSL-Proxy einzurichten und zu hoffen, dass eine falsche Zertifikatsanforderung den CA-Überprüfungsprozess durchläuft. Wie wir gesehen haben, ist beides möglich, aber das erstere ist viel einfacher zu tun (und im Nachhinein schwerer zu erkennen, da Browserbenutzer normalerweise keine Überwachungsprotokolle führen).
Piskvor
8

Hängt davon ab. Wenn Sie der Meinung sind, dass Sie dadurch sicherer werden, erhöht sich Ihr Risiko, wenn Sie riskantere Dinge mit Ihrem falschen Sicherheitsgefühl tun. Wenn Sie es funktional wie HTTP behandeln, sind Sie etwas sicherer.

Ohne SSL / HTTPS kann jeder mit Wireshark in Ihrem Netzwerk (oder dem lokalen Netzwerk von jedem, der sich anmeldet) trivial mithören und Benutzernamen / Passwörter erfassen, die als einfacher Text gesendet werden.

Mit selbstsigniertem SSL können sie nicht einfach mithören, sondern müssen jetzt Ihre Site fälschen und möglicherweise das DNS so ändern, dass ein Mann den MITM-Angriff ausführt. Dies ist nach wie vor eine Bedrohung, die für sie jedoch erheblich schwerer zu bewältigen ist.

Das andere Problem bei der Verwendung von selbstsigniertem SSL ist, dass viele Browser selbstsignierte Zertifikate als große Sicherheitsbedrohung behandeln und Sie warnen, bevor Sie eine riesige rote Seite eingeben (z. B. Chrome). http://www.sslshopper.com/article-ssl-certificates-in-google-chrome.html Dies kann zu erheblichen Unannehmlichkeiten führen.

Das Fazit lautet also: Wenn Sie etwas ausführen, das nicht besonders sicher sein muss (z. B. keine Kreditkartendaten, keine Sozialversicherungsnummer) und sich kein ordnungsgemäßes Zertifikat leisten können, kann ein selbstsigniertes Zertifikat sinnvoll sein (um zu verhindern, dass andere Netzwerkbenutzer leicht an ihren Anmeldeinformationen schnüffeln).

Dr. Jimbob
quelle
0

Es kommt darauf an, was Sie mit "Sicherheit" meinen und in welchem ​​Umfang.

Ihr Browser wird beispielsweise mit einer Reihe von Zertifizierungsstellen geliefert, die standardmäßig akzeptiert werden. Dies bedeutet, dass jedes von dieser Zertifizierungsstelle ausgestellte Zertifikat von Ihrem Browser akzeptiert wird (bis es mit dem DNS-Namen übereinstimmt). Stellen Sie sich vor, eine böse Regierung besitzt eine Zertifizierungsstelle oder kann die Zertifizierungsstelle zwingen, ein Zertifikat für die Site auszustellen, die Sie besuchen. Dann ist es sehr einfach, eine MITM zu erstellen: Sie können Ihre Verbindung per Proxy übertragen und das Zertifikat, über das sie verfügen, an Ihren Browser senden, und Ihr Browser akzeptiert es, da es von einer "vertrauenswürdigen" Zertifizierungsstelle stammt. Bis sie DNS-transparent sind (was die Basis für MITM ist), ist dies in Ordnung.

Die "Liste der akzeptierten Zertifizierungsstellen" ist im Grunde genommen eine große Sicherheitslücke, bis eine dieser Zertifizierungsstellen mit einer bösen Regierung zusammenarbeitet. Es ist viel besser, eine eigene Zertifizierungsstelle zu haben.

Natürlich können Sie dies in Ihrem Unternehmen oder auf Ihrem Heimserver tun, da Sie Ihr eigenes CA-Zertifikat auf dem Client installieren können, das Sie auch steuern. Auf einem öffentlichen Server können Sie sich nicht mit einem Benutzer befassen, der ihn auffordert, eine Ausnahme hinzuzufügen oder Ihr Zertifikat hinzuzufügen.

Es kommt also darauf an, was Sie unter "Sicherheit" verstehen und in welchem ​​Umfang. WENN Sie die Clients besitzen, ist das selbstsignierte Zertifikat sicherer, bis Sie das Zertifikat Ihrer eigenen Zertifizierungsstelle auf dem Client selbst installieren.

Natürlich können Sie dies nicht auf einer öffentlichen Website tun, da Sie nicht alle Kunden besitzen. Sie werden also eine Gefahr für verschiedene Verhaltensweisen bekommen, was nicht sicher ist.

user2402192
quelle