Antworten:
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.
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_hosts
Datei. 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_hosts
Datei ü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 .
known_hosts
@MadHatter auf etwas verweist.
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.
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).
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.