Frage

Ich habe ein Client-Programm, das auf einen Web-Server über eine SSL-Verbindung spricht (https). Wie sicher ist diese Verbindung? Ich kaufte ein SSL-Zertifikat auf meinem Web-Server installiert ist, so mein Verständnis ist, dass, selbst wenn jemand ein Man-in-the-Middle-Angriff zwischen meinen Klienten und mein Server attemps würden sie das Zertifikat nicht haben? Ist das wahr?

So zum Beispiel, wenn sie die Hostnamen www.myserver.com zu einem IP-sie besitzen zu umleiten versuchen, wird immer noch die https scheitern, weil die Verbindung eine nicht vertrauenswürdige Quelle installiert, ohne das Zertifikat berichten?


Ich wollte nur darauf hinweisen, dass mein Programm ist eine binäre, nicht eine Web-Seite, die ein Benutzer über einen Browser sehen. Daher können sie einfach nicht „akzeptieren nicht vertrauenswürdigen SSL“ drücken und weitermachen. Meine binär ist Ausgang codiert, wenn eine nicht vertrauenswürdige SSL-Verbindung erkannt wird. Da ist es immer noch möglich, dass jemand „in der Mitte“, um den Verkehr zu irgendwo umleiten und extrahieren Sie die verschlüsselten Daten?

Danke!

War es hilfreich?

Lösung

Wenn die 'Man-in-the-middle' sitzt tatsächlich auf dem Client-Computer (denken Sie an einem Virus, Trojaner oder anderer Malware) können sie etwas los ist über diese Verbindung lesen / ändern. Doch zwischen dem Client und dem Server, die Verbindung ist ziemlich sicher, vorausgesetzt Ihr Client-Programm die Gültigkeit des SSL-Zertifikats überprüft.

Andere Tipps

Wenn es eine Person ist (nicht-Code) die Wahl, ob das SSL-Zertifikat zu akzeptieren, den Fehler, der von den Hostnamen ändern führt möglicherweise nicht alles stoppen, da die Person könnte rechts klicken Vergangenheit, die Warnbox.

Es hängt davon ab, wie Sie das Zertifikat auf der Client-Seite zu validieren und was CAs Sie gewählt haben, in dem Validierungsprozess vertrauen.

Wenn eine der CAs Client-Anwendung vertraut ein Zertifikat auf die gleichen Hostnamen ausgegeben hat, kann dieses Zertifikat in einem MITM-Angriff verwendet werden. (Und es ist nicht völlig unbekannt, dass Zertifikate ausgestellt, um den „falsch“ Personen) .

Was CAs in dem Verfahren verwendet werden, um zu bestimmen, ob eine Signatur gültig ist, hängt von Ihrer SSL-Bibliothek und wie Sie es verwendet haben.

d. im Fall des Browser ist Firefox mit einer Reihe von CA-Zertifikaten von mehr oder weniger seriösen SSL-Anbieter gebündelt, die Ihr Browser vertraut standardmäßig aktiviert.

Windows verfügt über ein Zertifikat Ähnlich speichern die IE vertraut standardmäßig und ich nehme an andere Anwendungen Microsofts SSL libraraies entweder haben die Möglichkeit, diese Zertifikatspeicher zu verwenden oder als Standard zu verwenden.

Ja, sind Sie in der Regel von MITM-Angriffen sicher bei Verwendung von SSL, die dazu entworfen wurde (und überarbeitet) zu verhindern.

Just klar zu sein, das SSL-Zertifikat ist die Information der Öffentlichkeit - und hat keinen Geheimhaltungswert. Ihr Server wird es zu jedem Client geben, der sagt Hallo. Es ist der private Schlüssel mit dem öffentlichen Schlüssel im Zertifikat passend, die aufbewahrt werden müssen, na ja, privat.

Für maximale Sicherheit der Verbindung, sollten Sie eng die Zertifikate beschränken, die für die Kunden akzeptabel sind - tatsächlich Sie es sogar zu einer genauen Übereinstimmung durch das Speichern des Zertifikats beschränken können selbst (oder die Hash des Zertifikats) in dem Client. In diesem Fall ist es egal Sie nicht einmal über den Hostnamen passenden - und Sie beseitigen auch die winzige Chance, dass ein feindlicher Vermittler ein gültiges Zertifikat erhalten von Ihrem CA mit Ihren Hostnamen in ihm geschaffen hat, und hat auch DNS unterminiert

.

Die Daten zwischen dem Server und dem Client übertragen wird, verschlüsselt.

  

So zum Beispiel, wenn sie versucht,   umleiten den Hostnamen www.myserver.com   Um eine IP-besitzen sie, werden die https   noch scheitern, weil die Verbindung wird   berichten von einer nicht vertrauenswürdigen Quelle, ohne die   Zertifikat installiert?

Ja. Aber noch kann die Warnmeldung durch den Benutzer ignoriert werden, wenn er nicht über die Sicherheit besorgt ist. Nur die Kommunikation ist sicher und sicher. Wenn es ein Client-Programm (Virus), die die empfangenen Daten interpretieren kann und tun, was immer er will. So ist es besser, den Client (Benutzer) über Sicherheitsfragen und die Bedeutung des mit einem „sicheren“ PC zu erziehen.

Wenn die, wenn sehr vertrauliche Daten übertragen, dann können Sie eine weitere Sicherheitsebene hinzufügen, indem Sie einen Digest Feld hinzufügen (mit den Daten gebildet zusammen mit einem geheimen Schlüssel übertragen werden) und es an den Client übergeben. Der Client kann dann den Digest erstellen erneut (mit den Daten und geheimen Schlüssel erhalten haben) und es dann für jede Mismatch vergleichen.

Wenn es eine Diskrepanz der Daten geändert wurden, während es übertragen wurde.

Sie sind verwirrend die Themen:

  1. Transportebene Sicherheit, die SSL zur Verfügung stellt; und
  2. Client-Authentifizierung, die SSL nicht.

Je nach Anwendung, können Sie stattdessen mit so etwas wie ein SSH-Tunnel zu betrachten. Das bietet sowohl starke Krypto den Transport zu schützen und auch Anmeldedaten über den Einsatz von Public-Key-Krypto.

Sie können automatisch einen neuen Public-Key für jedes Client-Programm erzeugen und dass für die Anmeldung in der Liste der autorisierten Schlüsseln hinzuzufügen. Daher werden nur Kunden, die Sie jemals Zugang erlangen autorisiert haben.

Die meisten SSH-Clients werden automatisch fehlschlagen, wenn sie einen Server mit einem anderen Public-Key von begegnen, was sie als bekannte Wirte erwarten. Sie können diese vorkonfigurieren Ihren eigenen Server Public-Key sein.

Tls tun bietet für die Client-Authentifizierung in dem Handshake

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top