2017-08-21 2 views

Antwort

2

Sicher, kann ich zwei Möglichkeiten zur Einrichtung vorstellen, dieses:

  1. TLS auf die Nginx
  2. Hinzufügen von TLS zum Ursprung Websocket Server (JVM in Ihrem Fall)

Hinzufügen Der zweite Der Ansatz hat mehr Vorteile, da er auch die Verbindung zwischen Nginx und Websocket sicherstellt (stellen Sie sich vor, Sie möchten diese in zwei verschiedenen Containern/Maschinen hosten).

Imag ine ein Diagramm, wie dies für den ersten Ansatz:

Nodejs Socket Client <--Secure--> Nginx <--NOT Secure--> JVM 

und so etwas wie dies für den zweiten Ansatz:

Nodejs Socket Client <--Secure--> Nginx <--Secure--> JVM 

ich hier ein öffentliches Repository erstellt haben, die zeigt, wie Sie Setup kann der erste Ansatz : https://github.com/afshinm/websocket_tls_docker

Setup-TLS auf der serverseitigen

Wenn Sie den zweiten Ansatz verwenden möchten, variiert es von Framework zu Framework. Sie müssten die Dokumentationen lesen. Bedenken Sie jedoch, dass Nginx Ihren Datenverkehr entschlüsseln und verschlüsseln kann. In diesem Fall müssen Sie lediglich den Wert proxy_pass in https://... ändern, damit Nginx den Datenverkehr zuerst entschlüsseln kann.

Aber für den ersten Ansatz fügen Sie einfach folgende Einstellungen an Ihre server Konfiguration TLS zu aktivieren:

ssl on; 
ssl_certificate /path/ssl-bundle.crt; 
ssl_certificate_key /path/myserver.key; 
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 

Und vergessen Sie nicht, diese zu Ihrem server oder location Block hinzufügen (entsprechend Ihrer config):

proxy_pass ​http://your_jvm_backend_host; 
proxy_http_version 1.1; 
proxy_set_header Connection "upgrade"; 
proxy_set_header Upgrade $http_upgrade; 
proxy_read_timeout 86400; 

Nun Sie Verbindung von Nginx für Ihre Kunden sicher (wss://...).

Setup-Client

Unter der Annahme, dass Sie ws Paket verwenden, können Sie auf die sichere Websocket Verbindung wie folgt verbinden:

const WebSocket = require('ws'); 

const ws = new WebSocket('wss://your_backend'); 

ws.on('open', function open() { 
    ws.send('Hola!'); 
}); 

Das ist es.

+0

Super, danke @ Afshin-Mehrabani! Hast du das ausprobiert? – Bod

+0

@Bod ja, ich habe eine öffentliche Repo hier erstellt: https://github.com/afshinm/websocket_tls_docker –

+0

Süße, danke! – Bod

Verwandte Themen