Sind selbstsignierte SSL-Zertifikate sicher?

33

Ich möchte eine sichere Verbindung haben, wenn ich mich bei meinem Webmail, phpMyAdmin usw. anmelde .

Deshalb habe ich meine eigenen SSL-Zertifikate bei OpenSSL signiert und Apache angewiesen, Port 443 abzuhören.

Ist das tatsächlich sicher? Werden alle meine Passwörter wirklich durch eine sichere Schicht gesendet? Welchen Unterschied macht es, wenn ich ein SSL-Zertifikat von Verisign kaufe oder mein eigenes unterschreibe? Am Ende des Tages werden sich alle Daten sowieso auf meinem Server befinden. Was ist der große Unterschied?

cherrun
quelle

Antworten:

40

Hier dreht sich alles um Vertrauen. Wenn Sie ein signiertes Zertifikat von verisign erhalten, beweisen Sie zufälligen Clients, dass Ihr Zertifikat vertrauenswürdig ist. Wenn Sie das Zertifikat selbst signieren, können Benutzer, auf denen Ihr Zertifikat nicht installiert ist, nicht sicher sein, dass sie nicht von einem Man-in-the-Middle-Angriff angegriffen werden .

Wenn Ihr Webserver nur von Ihnen verwendet wird, benötigen Sie keine echte Zertifizierungsstelle (z. B. verisign), um Ihr Zertifikat zu signieren. Installieren Sie einfach das Zertifikat auf den Computern, die Sie verwenden möchten, und los geht's.

Bearbeiten: Um Ihre Frage zu beantworten: Ja, alles ist verschlüsselt, und Sie können sicher sein, dass niemand Ihre vertraulichen Daten lesen kann, wenn Sie wissen, dass das dem Webbrowser übermittelte Zertifikat tatsächlich das ist, mit dem Sie den Webserver eingerichtet haben.

Monoceres
quelle
12
Der Zweck der Zertifizierungsstelle besteht darin, anderen zu beweisen, dass ein Zertifikat dem gehört, von dem Sie sagen, dass es ihm gehört. Da Sie bereits wissen, wem das Zertifikat gehört, wenn Sie auf Ihren eigenen Server zugreifen und Ihr eigenes Zertifikat vorlegen, hat eine Zertifizierungsstelle keinen Zweck. Andere können jedoch nicht sicher auf Ihre Server zugreifen, da sie nicht wissen können, welchem ​​Zertifikat sie vertrauen sollen. (Sie wissen - vertrauen Sie dem, den Sie ausgestellt haben.)
David Schwartz
Dies wäre auch ein vernünftiger Ansatz, wenn eine begrenzte Anzahl von Benutzern auf den Server zugreifen würde, die sich direkt an Sie wenden könnten, um das Zertifikat zu überprüfen - beispielsweise an Mitglieder Ihrer Familie oder an Mitarbeiter eines kleinen Unternehmens.
BGVAUGHAN
Kann ein Mann in der Mitte, der mit einer Zertifizierungsstelle koordiniert ist, das selbstsignierte Zertifikat außer Kraft setzen? Beispiel: Bob stellt eine Verbindung zu Alices selbst signierter Website her, Scar sendet Bob ein anderes Zertifikat, das von der CA signiert wurde, mit der Scar koordiniert ist. Bobs Browser zeigt niemals eine SSL-Warnung an. Ist das möglich?
Hallo Welt
14

Hier dreht sich alles um Vertrauen.

Angenommen, Sie besuchen eine beliebte Website, die ein Zertifikat vorlegt. Auf dieser Website heißt es: "Dies ist, wer ich bin, Sie können mir vertrauen, weil ich dieses Einführungsschreiben von jemandem unterschreiben lasse, dem Sie vertrauen."

In diesem Fall ist die Person, der Sie vertrauen, eine der Zertifizierungsstellen, die (hoffentlich) die Vorarbeit geleistet hat, um die Identität des Präsentators des Zertifikats in Ihrem Namen festzustellen.

Was Sie wirklich vertrauen, ist das Vertrauen des Browsers in das Vertrauen der Zertifizierungsstelle in die Identität der Person, die das Zertifikat vorlegt. Es gibt auch oft mehr als eine Autorität zwischen Ihnen und dem Moderator, daher der Begriff: "Vertrauenskette". [1]

Wenn Sie Ihr eigenes Zertifikat signieren, gibt es keine Vertrauenskette. Ihre Site legt Ihnen Ihr eigenes Zertifikat vor. Wenn Sie Ihr eigenes Zertifikat in Ihrem Browser als eines installieren, dem Sie vertrauen, wird dieses als Autorität behandelt, genau wie die vorinstallierten Zertifikate . Sie haben dann eine Vertrauenskette mit nur einem Glied.

Wenn Sie dann Ihre eigene Website besuchen und Ihr Browser warnt, dass ein nicht vertrauenswürdiges Zertifikat angezeigt wird, sollten Sie Anlass zur Sorge geben, da Sie wie bei jeder anderen Website, die ein nicht vertrauenswürdiges Zertifikat anzeigt, nicht sicher sein können dass Sie mit der realen Site kommunizieren.

Beachten Sie, dass ich die Verschlüsselung noch nicht erwähnt habe. Zertifikate dienen der Authentifizierung der Identität der Partei, mit der Sie kommunizieren. Durch vertrauenswürdige Zertifikate können Sie sicher sein, dass Ihr Geschäft oder Ihre Bank das echte ist. Sobald Sie ihre Identität festgestellt haben, ist die Sicherung der Kommunikation zwischen Ihnen der nächste Schritt. Es kommt vor, dass Zertifikate auch die Schlüssel enthalten, die für diese Sicherheit erforderlich sind. Vorausgesetzt, du hast dein SSL korrekt eingerichtet, ist diese Kommunikation genauso sicher wie bei deinem Shop oder deiner Bank und deine Passwörter sind gleichermaßen geschützt. [2]

[1] Dies ist kein einwandfreies System. Ein freier Markt und ein hochvolumiges Geschäft mit geringen Gewinnspannen führen zwangsläufig zu Kostensenkungen: http://www.theregister.co.uk/2011/04/11/state_of_ssl_analysis/

[2] Zumindest so gut geschützt , dass es für jemanden weitaus billiger ist, in Ihr Haus einzudringen, als zu versuchen, es zu knacken: http://xkcd.com/538/

SmallClanger
quelle
11

Eigentlich selbstsignierte Zertifikate können sicher sein, nur nicht unter dem Modell jetzt verwenden wir.


Unter dem weit verbreiteten CA-Modell (Certificate Authority), das derzeit von allen verwendet wird, besteht der Zweck des von einer vertrauenswürdigen CA signierten Zertifikats darin, eine Authentifizierung bereitzustellen.

Wenn wir eine Bescheinigung erhalten, sehen wir nur Einsen und Nullen von der Buchse in der Wand. Wir haben keine Ahnung, woher diese Einsen und Nullen stammen. Da das Zertifikat jedoch von einer Zertifizierungsstelle signiert ist - etwas, das niemand auf der Welt außer dieser Zertifizierungsstelle kann - und wir darauf vertrauen, dass die Zertifizierungsstelle die Identität des Eigentümers des Zertifikats überprüft, vertrauen wir darauf, dass das Zertifikat von dem stammt, den es beansprucht zu.

Wenn die CA kompromittiert ist oder den Eigentümer nicht korrekt überprüft , sind natürlich alle Wetten deaktiviert.


Allerdings gibt es ein anderes Modell, unter dem selbst signierten Zertifikaten keine Authentizität bieten. Es heißt das Notarmodell .

Im Wesentlichen vertrauen wir nicht einer einzelnen Zertifizierungsstelle, sondern verteilen die Vertrauensstellung an eine beliebige Anzahl von Notaren . Diese Notare durchsuchen das Internet nach Zertifikaten und speichern alle Zertifikate, die sie gesehen haben. Wenn Sie zum ersten Mal eine Site besuchen und das Zertifikat erhalten, fragen Sie eine Reihe global verteilter Notare, welches Zertifikat sie zuletzt gesehen haben. Wenn sie nicht mit dem übereinstimmen, was Sie sehen, könnten Sie Teil eines Man-in-the-Middle-Angriffs sein.

Bei diesem Modell sind selbstsignierte Zertifikate absolut sicher, sofern wir davon ausgehen, dass der Server nicht sofort kompromittiert wird, bevor ein Notar sein Zertifikat jemals einsehen kann.


Das Notarmodell steckt noch in den Kinderschuhen, und es wird zweifellos jemals das CA-Modell übernehmen (muss es eigentlich nicht - sie können zusammen verwendet werden) . Das bisher vielversprechendste Projekt ist Convergence.io , das ein Plugin für Firefox enthält.

BlueRaja
quelle
2

Es geht nicht nur um Vertrauen ...

SSL-Zertifikate können zwei Aufgaben erfüllen: 1) ist der Webserver, mit dem Sie eine Verbindung herstellen möchten; und 2) die Kommunikation zu verschlüsseln.

Sie können Nr. 2 ohne Nr. 1 haben, was Sie erreicht haben. Was dann übrig bleibt, ist die Bestätigung, dass die Box, mit der Sie sich verbinden, die ist, die Sie möchten.

Wenn es MEIN Server ist, habe ich kein Problem damit, ein selbstsigniertes Zertifikat von mir selbst zu verwenden - obwohl das Risiko besteht, dass jemand Dinge fälscht, die mich dazu bringen, eine Verbindung zu ihrem Server herzustellen, anstatt zu meinem. Da sich niemand um mich und meinen Server kümmert und ich hier wenig Wert habe, sehe ich darin kein allzu großes Risiko.

Auf der anderen Seite wäre ich besorgt, wenn es sich nicht um einen Server von mir, sondern um einen von Ihnen handeln würde.

uSlackr
quelle
Wollten Sie sagen: "Wenn es Ihr Server ist, dann würde ich nicht betroffen sein"?
CHERRUN
nein, er sagte "wenn es MEIN Server ist, habe ich kein Problem ... wenn es IHR Server ist, habe ich Probleme".
Francesco
Sie sind falsch. Niemand konnte Dinge fälschen, um Sie dazu zu bringen, eine Verbindung zu ihrem Server herzustellen, anstatt zu Ihrem. Sie haben keinen Schlüssel, der dem von Ihnen ausgestellten selbstsignierten Zertifikat entspricht, und können Ihnen kein anderes Zertifikat vorlegen, da Sie es nicht akzeptieren würden.
David Schwartz
@cherun Mein Punkt war, ich vertraue mir - nicht dir (oder jemand anderem). Sie können / sollten sich selbst vertrauen.
uSlackr
1
-1. Die Verschlüsselung erfolgt mit symmetrischen Schlüsseln, die während des Handshakes ausgehandelt werden. Natürlich verwenden Sie das Zertifikat, um die Identität der Gegenstelle zu überprüfen, da es sonst wenig Sinn macht, die Kommunikation zu verschlüsseln (es könnte sich um eine MITM handeln). Wenn es sich um Ihren Server und ein selbstsigniertes Zertifikat handelt, importieren Sie Ihr Zertifikat explizit in Ihren Client.
Bruno