2014-09-25 17 views
12

Abbiamo un'applicazione che eseguiamo su un terminale POS, che dovrebbe ricevere dati da un'applicazione in esecuzione sulla stessa macchina, mentre visualizza il contenuto da un sito remoto che viene caricato su HTTPS.Come posso stabilire una connessione sicura a un websocket su localhost?

Per ricevere i dati dall'applicazione locale, vogliamo utilizzare websockets, che finora funziona perfettamente. Tuttavia, quando il sito che stiamo visualizzando viene caricato su HTTPS, la connessione web socket deve essere crittografata.

Poiché non è possibile ottenere un certificato adeguato per localhost, viene utilizzato solo un autofirmato. Ma Chrome non si connetterà a un websocket che utilizza un certificato autofirmato.

Come possiamo risolvere questo problema? Non possiamo usare un websocket non crittografato, non possiamo usare un certificato autofirmato per quello crittografato e non possiamo ottenere un certificato firmato per localhost. Quale opzione mi manca?

+0

Hai già provato questo? Http: //stackoverflow.com/questions/7580508/getting-chrome-to-accept-self-signed-localhost-certificate –

+0

@JoaEbert: volevo evitare l'installazione manuale dei certificati, se a tutto possibile –

+3

@OliverSalzburg C'è un flag in Chrome che potrebbe essere rilevante per questo: chrome: // flags/# allow-insecure-websocket-from-https-origin. Non è davvero una soluzione permanente però. – gpgekko

risposta

6

Se si dispone di privilegi di amministratore sui terminali POS, come circa l'aggiunta di una linea al file Hosts come:

127.0.0.1 localhost.mycompany.com 

Ora è possibile utilizzare un vero e proprio certificato per localhost.mycompany.com nell'applicazione server.

+0

Solo FYI, questo è il modo in cui abbiamo stiamo andando avanti da un po 'di tempo, saltiamo 'HOSTS' e abbiamo zone DNS complete dedicate alla mappatura dei nomi a' localhost'. –

Problemi correlati