Wie funktioniert zeromq arbeiten zusammen mit SSL?
Ich bin considerung zu verwenden, zeromq als messaging-Ebene zwischen meine Anwendungen. Zumindest in einigen Fällen möchte ich die Kommunikation sicher zu sein, und ich denke auch über SSL.
Gibt es einige standard-Weg, wie Sie ssl aktivieren, zeromq? Soweit ich es verstehe, unterstützt es nicht out of the box.
Wäre es schön, wenn ich nur einen parameter hatte, wenn man an eine Steckdose (bool: useSsl) 🙂
Irgendwelche Ideen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verständnis, dass dies nicht wirklich eine Antwort auf deine Frage, ich werde die Verschlüsselung der Nachrichten, die direkt mit RSA, bevor Sie mit 0mq.
In der Abwesenheit von einem stärker integrierten Verschlüsselungs-Methode, die vollständig getestet und implementiert in meine Plattform der Wahl, das ist, was ich werde mit. 0mq erst kürzlich veröffentlichten version 4 mit Verschlüsselung gebacken, aber es ist immer noch als experimentell und wird nicht vollständig unterstützt durch die Sprache-Bindungen.
Verschlüsseln der Nachricht, anstatt der Verbindung, scheint die einfachste upgrade-Pfad, und der Unterschied für unsere Zwecke sind ziemlich viel nur Semantik gegeben, wie hätten wir implementieren Sie die Verschlüsselung aktuell, heute.
Edit: ich weiß mehr über die Verschlüsselung jetzt als ich es Tat, als ich dieses schrieb, RSA ist nicht eine geeignete Wahl für die Verschlüsselung der message-Daten. AES verwenden, entweder mit einer manuellen Freigabe-Schlüssel (dies ist unser Ansatz für die kurze Laufzeit), oder die Umsetzung eines key sharing scheme wie in Jim Miller ' s Antwort... aber Vorsicht, wenn Sie den letzteren Ansatz, der Gestaltung und Umsetzung eines key-sharing-Schema sicher ist schwer. Härter, als du denkst. Sie können implementieren SSL/TLS-direkt (über message-BIOs), und andere haben so getan, es ist auch nicht einfach, aber zumindest wissen Sie, dass die SSL-Schema ist Industrie-standard und erfüllt daher eine Mindest-Anforderung.
Kurz, vor der Elliptic Curve crypto gebacken in ZMQ 4 wird als zuverlässig angesehen und wird zum standard, die "akzeptierte Lösung" wäre die Umsetzung von SSL/TLS über die Verbindung manuell, und wenn das fehlschlägt, verwenden AES 128 oder 256 mit einem sicheren Schlüssel-Austausch-Mechanismus (key sharing ist, wo RSA würde entsprechend verwendet werden).
Wir sind derzeit die Durchführung einer pre-shared-key-Lösung mit 0mq, die eine key-exchange-Protokoll basiert lose auf TLS/SSL.
Im wesentlichen haben wir eine Daten-aggregator-Dienst, veröffentlicht, verschlüsselt Gesundheitszustand Daten über eine multicast-0mq Verlag. Ein symmetrischer Schlüssel verwendet wird (AES128) zum verschlüsseln der Daten und können jederzeit abgerufen werden, von einem zweiten service ausgeführt als einfacher Anfrage/Antwort-Modell über 0mq.
Abrufen der symmetrische Schlüssel (PSK), wir führen das folgende Protokoll:
Client verbindet
Der Server sendet sein Zertifikat
Client überprüft das server-Zertifikat gegen eine CA-chain-of-trust
Client sendet sein Zertifikat
- Server überprüft der client-Zertifikat gegen die CA-Kette
Server-PSK verschlüsselt mit dem client öffentlicher Schlüssel
Der Server sendet die verschlüsselte PSK client
Client entschlüsselt PSK
Sobald ein client die PSK, können Sie entschlüsseln die Nachrichten abgerufen, über multicast.
Suchen wir auch bei der Umsetzung eine Sitzung abläuft Algorithmus verwendet zwei umhüllt Schlüssel in der multicast-service. Ein Schlüssel ist die aktuelle session-Schlüssel und der zweite ist die alte, auslaufende Schlüssel. So, ein Kunde hat ein wenig mehr Zeit zum abrufen der neuen Schlüssel ohne Puffer verschlüsselte Nachrichten abrufen, bevor Sie den neuen Schlüssel.
Laut zeromq.org es ist nicht unterstützt noch nicht, aber Sie sind in Sie suchen. Wie es aussieht ist es vorgeschlagen, als ein Projekt für Google Summer of Code.