2016-04-02 11 views
0

Ich bin auf der Suche nach Ratschlägen zur Verschlüsselung einer Befehlszeilenanwendung. Ich stelle mir eine Befehlszeilen-App vor, die mit einem Web-Service interagiert. Ich möchte, dass die Nachrichten zwischen der App und dem Web-Service verschlüsselt werden.Möglichkeiten zu verschlüsseln Installierte App und Web-Service

Ich weiß, dass SSL-Zertifikate die allgemeine Verwendung für die Verschlüsselung mit Webdiensten sind, aber wenn ich eine einzelne App habe, die viele Leute auf der Befehlszeile ihrer Maschinen nehmen und verwenden, muss jedes über ein SSL-Zertifikat verfügen.

Gibt es eine andere Möglichkeit, die Kommunikation zu verschlüsseln?

Hinweis: Ich erstelle sowohl den Webdienst als auch die Befehlszeilenanwendung, sodass die Verschlüsselung bei Bedarf angepasst werden kann.

Dank

+0

* "[...] jeder muss ein SSL-Zertifikat haben." * - So? Was ist das Problem? Wovor willst du dich schützen? Möchten Sie die übertragenen Daten vor dem Benutzer verbergen? Wenn ja, dann ist dies wirklich nicht möglich, da sie Ihre Anwendung dekompilieren und manipulieren können. –

+0

Ich möchte die übertragenen Daten verschlüsseln, d. H. Die HTTP-Header und Body. Und wenn die Client-Seite ein Zertifikat haben muss, muss es nicht für jeden Client eindeutig sein? Wie würde ich das für eine einzelne verteilte App tun? – SJC

+0

* "Muss es nicht für jeden Client eindeutig sein?" * - Jede Instanz Ihrer App sollte das * gleiche Serverzertifikat * haben, wenn sie mit dem gleichen Server (Infrastruktur) * kommunizieren. Ich verstehe nicht, warum Sie mehrere Zertifikate benötigen. –

Antwort

0

Ich möchte die übertragenen Daten das heißt, die HTTP-Header und Körper verschlüsseln.

HTTPS mit einem Server-Zertifikat (keine Notwendigkeit, Client-Zertifikat in Ihrem Fall) können es tun. Niemand zwischen Ihrem Client und Ihrem Server kann den Inhalt der übertragenen Daten (URL, Header und Body) lesen oder ändern.

Der Server wird dem Kunden sein Zertifikat vorlegen. Damit kann Ihr Client die Identität des Servers bestätigen. Dann können sie Informationen sicher austauschen.

Wenn Sie den Client auf dem Server identifizieren müssen, können Sie ein Client-Zertifikat verwenden (aber es ist nicht die einzige Methode)

Beachten Sie, dass aufgrund von DNS und SNI, jemand im Netzwerk noch wissen, kann die Domain Ihr Client verbindet sich mit.

+0

Die URL ist natürlich sichtbar, nur nicht den Pfad und die Abfrage. – zaph

+0

@zaph was meinst du? Mit https besuche ich https://example.com/secret.html NUR mein Browser und die Website wissen, dass ich /secret.html besuchen möchte: Der Pfad ist verschlüsselt. – Tom

+0

Betrachte 'https: //example.com/secret.html? Password = mypassword', Die Adresse ist verfügbar (nicht verschlüsselt), Pfad und Steinbruch sind verschlüsselt. – zaph

Verwandte Themen